Load pictures on ODSW

Load pictures from weibo.com without limitation on 'owendswang.com'.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Load pictures on ODSW
// @name:zh-CN   加载ODSW网站上的图片
// @namespace    https://www.owendswang.com/
// @version      0.4.0
// @description  Load pictures from weibo.com without limitation on 'owendswang.com'.
// @description:zh-CN  跳过微博图床外链限制,加载“owendswang.com”网站上的微博外链图片。
// @icon         https://avatars.githubusercontent.com/u/9076865?s=40&v=4
// @author       OWENDSWANG
// @license      MIT
// @match        https://www.owendswang.com/
// @match        https://www.owendswang.com/?*
// @match        https://www.owendswang.com/weibo/*
// @match        https://www.owendswang.com/weixin/*
// @run-at       document-end
// @grant        GM_xmlhttpRequest
// @grant        GM_notification
// @connect      sinaimg.cn
// @connect      owendswang.com
// @connect      weibocdn.com
// ==/UserScript==

(function() {
    'use strict';
/*
    function saveAs(blob, name) {
        const link = document.createElement("a");
        link.style.display = "none";
        link.href = URL.createObjectURL(blob);
        link.download = name;
        link.target = '_blank';
        document.body.appendChild(link);
        link.click();
        const timeout = setTimeout(() => {
            URL.revokeObjectURL(link.href);
            link.parentNode.removeChild(link);
        }, 1000);
    }
*/
    const getImage = (el) => {
        const url = el.getAttribute('data-src');
        if(url.startsWith('http')) {
            GM_xmlhttpRequest({
                method: 'get',
                url,
                responseType: 'blob',
                withCredentials: false,
                headers: {
                    'Referer': 'https://weibo.com/',
                    'Origin': 'https://weibo.com/'
                },
                onload: function ({ status, response }) {
                    let blobUrl = URL.createObjectURL(response);
                    if(status === 200) {
                        if(el.tagName === "IMG") {
                            el.src = blobUrl;
                        } else if (el.tagName === "DIV") {
                            el.style.backgroundImage = 'url(\'' + blobUrl + '\')';
                        } else if (el.tagName === "VIDEO") {
                            el.setAttribute('poster', blobUrl)
                        } else if (el.tagName === "SOURCE" && el.parentElement.tagName === "VIDEO") {
                            el.src = blobUrl;
                            el.parentElement.load();
                        }
                    }
                    /*let decodedSrc = decodeURIComponent(url);
                    let fileName;
                    if (decodedSrc.endsWith('.mov')) {
                        fileName = decodedSrc.split('/')[decodedSrc.split('/').length - 1];
                        fileName = fileName.split('?')[0];
                    } else {
                        fileName = decodedSrc.split('?')[0];
                        fileName = fileName.split('/')[fileName.split('/').length - 1];
                    }
                    saveAs(response, fileName);*/
                },
                onabort: function() { console.log('aborted'); },
                onerror: function() { console.log('error'); },
                onloadstart: function() { console.log('load started'); },
                onprogress: function() { /*console.log('progressing');*/ },
                onreadystatechange: function() { console.log('ready state changed'); },
                ontimeout: function() { console.log('timeout'); },
            })
        }
    }
    document.querySelectorAll('.lozad').forEach((el) => {
        // console.log(el)
        getImage(el)
    });
    const weiboNotice1 = bootstrap.Alert.getOrCreateInstance('#weibo-notice-1')
    weiboNotice1.close()
})();