巨量创意广告视频下载

高清无水印视频下载

目前為 2022-02-23 提交的版本,檢視 最新版本

// ==UserScript==
// @name         巨量创意广告视频下载
// @namespace    http://tampermonkey.net/
// @version      2.2.0
// @description  高清无水印视频下载
// @author       hayasol657
// @run-at       document-start
// @license      MIT License
// @grant        GM_download
// @include      *://cc.oceanengine.com/*
// @inject-into  page
// @require      https://gf.qytechs.cn/scripts/440006-mono/code/mono.js?version=1021408
// ==/UserScript==

(function () {
    var mono = window['mono-descargar'];
    var failover = mono.FAIL_TO_DEFAULT;
    var $ = mono.jQuery;
    var md5 = mono.md5;
    var onRequest = mono.onRequest;
    var filename = mono.filename;

    var metaDict = {};
    onRequest(({url, resp}) => {
        if (!resp) return;
        var prefix = 'creative_radar_api/v1/material';
        if (url.includes(`${prefix}/info`) || url.includes(`${prefix}/list`)) {
            var res = JSON.parse(resp);
            var key = 'materials';
            if (res?.data && typeof res.data === 'object' && 'vid' in res.data) {
                res.data = { 'materials': [res.data] };
            }
            if (res?.data && typeof res.data === 'object' &&
                key in res.data && res.data[key].length > 0) {
                const feeds = res.data[key];
                for (var i = 0; i < feeds.length; i++) {
                    const id = feeds[i].vid;
                    if (metaDict[id]) continue;
                    feeds[i].id = id;
                    metaDict[id] = feeds[i];
                }
            }
        }
    });

    var updateItems = async (items) => {
        if (items.length <= 0) return;
        return new Promise((resolve, reject) => {
            $.ajax({
                url: "https://cc.oceanengine.com/creative_content_server/api/video/info",
                type: 'POST',
                data: JSON.stringify({ "query_ids": items.map(im => im.meta.vid), "water_mark": 'ad' }),
                success: function (data) {
                    if (data?.data && Object.keys(data?.data).length > 0) {
                        items.forEach(item => {
                            item.url = data.data[item.meta.vid].video_url;
                            item.meta.video = data.data[item.meta.vid];
                            item.meta.cover = data.data[item.meta.vid].cover_url;
                            item.meta.title = item.meta.bestTitle;
                            item.meta.name = filename(item.meta.bestTitle || document?.title);
                        });
                    }
                    resolve(items)
                },
                error: function (error) {
                    reject(error)
                },
            });
        });
    }

    var getItemByMeta = (meta) => {
        if (!meta || !meta.id) return null;
        if ($(`[mono-dsg-id=${meta.id}]`).length > 0) return null;
        return { id: meta.id, url: "", meta };
    }

    var detailPrefix = "/inspiration/creative-radar/detail/";
    var detail = async () => {
        const mid = Object.keys(metaDict)[0];
        const item = getItemByMeta(metaDict[mid])
        if (item) {
            var $el = $(".radar-detail-preview-box").find(".cc-video-player");
            if ($el.length > 0) {
                await updateItems([item]);
                item.container = $el[0];
            }
            return [item];
        }
        return [];
    }

    var list = async () => {
        const items = []
        for (const [id, meta] of Object.entries(metaDict)) {
            const imgUrl = new URL(meta.head_image_uri);
            const item = getItemByMeta(meta);
            if (item) {
                var $el = $(`.poster-image[style*='${imgUrl.pathname}']`).parent();
                if ($el.length > 0) {
                    item.container = $el[0];
                    items.push(item);
                }
            }
            if (items.length >= 10) break;
        }

        if (items.length > 0) {
            await updateItems(items);
        }
        return items
    }

    var parser = async function () {
        var url = new URL(window.location.href);
        if (url.pathname === "/inspiration/creative-radar/video") {
            return await list();
        } else if (url.pathname.indexOf(detailPrefix) > -1) {
            return await detail();
        } else {
            throw failover;
        }
    }

    if (mono?.init) mono.init({ parser });
})()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址