[油猴脚本] 抖音用户数据与视频下载v0.3.5大更新
插件安装地址:https://greasyfork.org/zh-CN/scripts/471880
在去年开发过插件后,大概半年时间是可用的,今年上半年我一直没上过抖音,不清楚是否可用,最近几天又刷了几次抖音发现插件已经不可用。
今天花了些时间,把插件彻底大改版了一下,基本上大部分的颜值已经与官方融为一体。
操作指引:
安装插件后,等待自身头像加载完毕,会提示已加载的数据条数:
然后展开头像即可看到下载按钮:
注意:若你使用office,而不是wps,则需要勾选gbk后再下载用户数据。
对于当前用户的视频,也可以单独点击按钮进行下载,若目标为图片则可以下载打包好的图片。
即使不在用户主页,每个正在播放的视频也可以进行下载:
里面发布了原始代码。
完整最新的代码都可以在安装脚本后查看。
其中前端js将文本转换为gbk编码的代码为:
let table; function initGbkTable() { // https://en.wikipedia.org/wiki/GBK_(character_encoding)#Encoding const ranges = [ [0xA1, 0xA9, 0xA1, 0xFE], [0xB0, 0xF7, 0xA1, 0xFE], [0x81, 0xA0, 0x40, 0xFE], [0xAA, 0xFE, 0x40, 0xA0], [0xA8, 0xA9, 0x40, 0xA0], [0xAA, 0xAF, 0xA1, 0xFE], [0xF8, 0xFE, 0xA1, 0xFE], [0xA1, 0xA7, 0x40, 0xA0], ]; const codes = new Uint16Array(23940); let i = 0; for (const [b1Begin, b1End, b2Begin, b2End] of ranges) { for (let b2 = b2Begin; b2 <= b2End; b2++) { if (b2 !== 0x7F) { for (let b1 = b1Begin; b1 <= b1End; b1++) { codes[i++] = b2 << 8 | b1 } } } } table = new Uint16Array(65536); table.fill(0xFFFF); const str = new TextDecoder('gbk').decode(codes); for (let i = 0; i < str.length; i++) { table[str.charCodeAt(i)] = codes[i] } } function str2gbk(str, opt = {}) { if (!table) { initGbkTable() } const NodeJsBufAlloc = typeof Buffer === 'function' && Buffer.allocUnsafe; const defaultOnAlloc = NodeJsBufAlloc ? (len) => NodeJsBufAlloc(len) : (len) => new Uint8Array(len); const defaultOnError = () => 63; const onAlloc = opt.onAlloc || defaultOnAlloc; const onError = opt.onError || defaultOnError; const buf = onAlloc(str.length * 2); let n = 0; for (let i = 0; i < str.length; i++) { const code = str.charCodeAt(i); if (code < 0x80) { buf[n++] = code; continue } const gbk = table[code]; if (gbk !== 0xFFFF) { buf[n++] = gbk; buf[n++] = gbk >> 8 } else if (code === 8364) { buf[n++] = 0x80 } else { const ret = onError(i, str); if (ret === -1) { break } if (ret > 0xFF) { buf[n++] = ret; buf[n++] = ret >> 8 } else { buf[n++] = ret } } } return buf.subarray(0, n) }