tiktok!
// ==UserScript==
// @name hho-tiktok-extension
// @namespace http://tampermonkey.net/
// @version 0.3
// @description tiktok!
// @author miaomiao
// @match https://www.tiktok.com/*
// @icon https://www.google.com/s2/favicons?domain=tiktok.com
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @grant none
// ==/UserScript==
(function() {
'use strict';
var $ = window.$
var title = ''; // 日文标题
var titleCN = ''; // 中文标题
var ttnowmLink = ''; // 无水印链接
var likeNum = 0; // 点赞数
var commentNum = 0; // 评论数
var shareNum = 0; // 转发数
var playNum = 0; // 播放量
const button = '<button style="position: fixed; top: 100px; right: 100px;z-index: 99999;background: red;color: #fff;" id="hhoBtn">复制信息</button>'
$('body').append(button);
const tips = '<div style="position: fixed; top: 140px; right: 100px;z-index: 99999;color: #333;font-size: 8px;cursor: pointer" id="hhoTips"></div>'
$('body').append(tips);
$(document).on('click',"#hhoBtn", function(){ copyText() });
function copyText() {
const count = window.__NEXT_DATA__.props.pageProps.itemInfo.itemStruct.stats
title = $('.feed-item-content strong')[0].innerText
likeNum = count.diggCount
commentNum = count.commentCount
shareNum = count.shareCount
playNum = count.playCount
// likeNum = $(".bar-item-text[title='like']")[0].innerText
// commentNum = $(".bar-item-text[title='comment']")[0].innerText
// shareNum = $(".bar-item-text[title='share']")[0].innerText
$('#hhoTips').append('<p>准备解析 --' + new Date() + '<p>')
// 发送请求
const ttOriginLink = window.__NEXT_DATA__.props.pageProps.seoProps.metaParams.canonicalHref + '?sender_device=pc&sender_web_id=' + window.__NEXT_DATA__.props.initialProps.$wid + '&is_from_webapp=v1&is_copy_url=0'
$.ajax({
url: "https://ttwm.athena.hhodata.com/ttwm/tiktok?url=" + encodeURIComponent(ttOriginLink),
method: 'GET',
complete: function(data) {
if (data.status === 200 && data.responseJSON.success) {
// 去水印地址ok
// console.log(data.responseJSON.data)
ttnowmLink = data.responseJSON.data.nowm
$('#hhoTips').append('<p>解析成功 --' + new Date() + '<p>')
downloadVideo(ttnowmLink, title)
} else {
$('#hhoTips').append('<p>解析失败,请联系管理员或手动解析 -- ' + new Date() + '<p>')
}
translate()
},
fail: function(err) {
$('#hhoTips').append('<p>解析失败,请联系管理员或手动解析 -- ' + new Date() + '<p>')
translate()
}
})
}
function translate() {
$('#hhoTips').append('<p>准备翻译 --' + new Date() + '<p>')
$.ajax({
url: "https://ttwm.athena.hhodata.com/ttwm/translate?text=" + encodeURIComponent(title),
method: 'GET',
complete: function(data) {
if (data.status === 200 && data.responseJSON.success) {
// 翻译ok
titleCN = data.responseJSON.data
$('#hhoTips').append('<p>翻译成功 --' + new Date() + '<p>')
} else {
$('#hhoTips').append('<p>翻译失败,请联系管理员或手动翻译 -- ' + new Date() + '<p>')
}
navigator.clipboard.writeText(`无水印链接:${ttnowmLink},标题:${title},标题翻译:${titleCN},点赞数:${likeNum},评论数:${commentNum},转发数:${shareNum},播放量:${playNum}`).then(res => {
$('#hhoTips').append('<p>复制成功 --' + new Date() + '<p>')
}).catch(err => {
$('#hhoTips').append('<p>复制失败 --' + new Date() + '<p>')
})
},
fail: function(err) {
$('#hhoTips').append('<p>翻译失败,请联系管理员或手动翻译 -- ' + new Date() + '<p>')
navigator.clipboard.writeText(`无水印链接:${ttnowmLink},标题:${title},标题翻译:${titleCN},点赞数:${likeNum},评论数:${commentNum},转发数:${shareNum},播放量:${playNum}`).then(res => {
$('#hhoTips').append('<p>复制成功 --' + new Date() + '<p>')
}).catch(err => {
console.log('复制失败: ', err)
$('#hhoTips').append('<p>复制失败 --' + new Date() + '<p>')
})
}
})
}
function downloadVideo(link, filename){
if (!filename) return;
console.log(link, filename)
$('#hhoTips').append('<p>准备下载视频 --' + new Date() + '<p>')
var xhr = new XMLHttpRequest();
xhr.open('GET', link, true);
xhr.responseType = 'blob';
xhr.onload = function() {
var urlCreator = window.URL || window.webkitURL;
var imageUrl = urlCreator.createObjectURL(this.response);
var tag = document.createElement('a');
tag.href = imageUrl;
tag.target = '_blank';
tag.download = filename;
document.body.appendChild(tag);
tag.click();
$('#hhoTips').append('<p>下载视频成功 --' + new Date() + '<p>')
document.body.removeChild(tag);
};
xhr.onerror = err => {
$('#hhoTips').append('<p>下载视频失败 --' + new Date() + '<p>')
};
xhr.send();
}
})();