Greasy Fork is available in English.

Load pictures on ODSW

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

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==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()
})();