Greasy Fork

Greasy Fork is available in English.

腾讯视频下载

下载腾讯视频

当前为 2022-04-11 提交的版本,查看 最新版本

// ==UserScript==
// @name         腾讯视频下载
// @namespace    http://tampermonkey.net/
// @version      0.0.7
// @description  下载腾讯视频
// @author       feyaha9619
// @license      MIT License
// @run-at       document-start
// @grant        GM_download
// @match        *://v.qq.com/x/cover/*
// @match        *://v.qq.com/x/page/*
// @require      http://greasyfork.icu/scripts/440006-mono/code/mono.js?version=1021983
// ==/UserScript==

const _META_URL_ = "https://www.douyin.com/web/api/v2/aweme/iteminfo/?item_ids=";

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

  var itemCache = {}

  var parseItem = (item) => {
    var key = item.video?.origin_cover?.uri;
    if (!key) return;
    itemCache[key] = item;
    itemCache[key].video_id = itemCache[key].aweme_id;
    itemCache[key].title = itemCache[key].desc;
    itemCache[key].cover = itemCache[key].video?.origin_cover?.url_list[0];
    itemCache[key].url = itemCache[key].video?.play_addr?.url_list[0];
  }

  onRequest(({url, resp}) => {
    if (!resp || !(url.includes('qq.com/proxyhttp'))) return;
    console.log('url, resp', url, resp)
    if (url.startsWith('//')) url = `https:${url}`;
    var res;
    try {
      res = JSON.parse(resp);
    } catch (err) {
      return;
    }
    if (!res) return;
    if (url && url.indexOf('graphql') > -1) {
      try {
        for (var key of ['brilliantData', 'gameLiveCardList', 'visionSearchPhoto', 'brilliantTypeData', 'visionProfilePhotoList']) {
          if (res?.data[key] && res.data[key].feeds && res.data[key].feeds.length > 0) {
            var feeds = res.data[key].feeds;
            for (var i = 0; i < feeds.length; i++) {
              var itemData = feeds[i].photo;
              itemData.author = feeds[i].author;
              metaCache[itemData.id] = itemData;
            }
          }
        }
      } catch (e) {}
      return;
    }

    for (var key of ['hotPhotoInfos', 'inspiredAds']) {
      if (res?.data && typeof res.data === 'object' &&
          key in res.data && res.data[key].length > 0) {
        var feeds = res.data[key];
        for (var i = 0; i < feeds.length; i++) {
          var url = new URL(feeds[i].coverThumbnailUrls[0].url);
          var id = url.searchParams.get('clientCacheKey')?.replace('.jpg', '');
          feeds[i].id = id;
          metaCache[id] = feeds[i];
        }
      }
    }
  });


})()