TKBaseSDK Test

将当前页面的网址发送到指定的服务器,服务器地址信息需要再代码中修改以适合自己使用!

当前为 2024-05-06 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/494214/1371699/TKBaseSDK%20Test.js

  1. // ==UserScript==
  2. // @name TKBaseSDK Test
  3. // @namespace https://github.com/RANSAA
  4. // @version 0.0.1
  5. // @description 将当前页面的网址发送到指定的服务器,服务器地址信息需要再代码中修改以适合自己使用!
  6. // @author sayaDev
  7. // @license MIT License
  8. // @icon data:image/png;base64,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
  9.  
  10. // @match http://*/*
  11. // @match *://*/*
  12.  
  13. // @require https://update.gf.qytechs.cn/scripts/494214/1371698/TKBaseSDK.js
  14.  
  15. // @grant unsafeWindow
  16. // @grant GM_openInTab
  17. // @grant GM_xmlhttpRequest
  18.  
  19.  
  20. // @connect self //添加需要跨域不弹出用户选择页面的标注
  21. // @connect localhost
  22. // @connect 127.0.0.1
  23. // @connect *
  24.  
  25.  
  26. // @compatible chrome
  27. // @compatible edge
  28. // @compatible firefox
  29. // @compatible opera
  30. // @compatible safari
  31.  
  32. // @noframes
  33. // ==/UserScript==
  34.  
  35.  
  36.  
  37. /**
  38. * 配置信息,可更具需求更改配置
  39. **/
  40. const SERVER_CONFIG = {
  41. host: "127.0.0.1", //服务器地址
  42. port: "80", //服务器端口,直接使用”“不指定端口
  43. method: "POST", //请求方式
  44. scheme: "http", //协议类型
  45. taskAdd: "task/add", //yt-dlp 任务添加API Query Path路劲地址
  46. };
  47.  
  48.  
  49. (function() {
  50. 'use strict';
  51. TKBaseSDK.initToast();
  52. addSendServerButton();
  53. })();
  54.  
  55.  
  56.  
  57.  
  58. // -------------------------------Setup UI-------------------------------
  59. function addSendServerButton(){
  60. //添加style
  61. TKBaseSDK.addButtonStyle();
  62.  
  63. //每隔button的高为44px
  64.  
  65. //创建Send URL按钮
  66. let sendURL = TKBaseSDK.createItemButton("Send URL","100px");
  67. //定义的是事件被触发后要做的事情
  68. sendURL.addEventListener("click", function() {
  69. sendLocationURL();
  70. });
  71.  
  72.  
  73. //创建Copy URL按钮
  74. let copyURL = TKBaseSDK.createItemButton("Copy URL","144px");
  75. //定义的是事件被触发后要做的事情
  76. copyURL.addEventListener("click", function() {
  77. copyLocationURL();
  78. });
  79.  
  80.  
  81. //创建Copy M3u8按钮
  82. let copyM3u8 = TKBaseSDK.createItemButton("Copy M3U8","188px");
  83. //定义的是事件被触发后要做的事情
  84. copyM3u8.addEventListener("click", function() {
  85. copyM3u8Link();
  86. });
  87.  
  88.  
  89.  
  90. let list = document.createElement("TKButtonList");
  91. list.appendChild(sendURL);
  92. list.appendChild(copyURL);
  93. list.appendChild(copyM3u8);
  94. document.body.appendChild(list);
  95. }
  96.  
  97. // -------------------------------Setup UI-------------------------------
  98.  
  99.  
  100.  
  101. // -------------------------------Action-------------------------------
  102.  
  103. /**
  104. * 将参数组装成JSON格式
  105. * 获取当前需要的所有属性
  106. * url:当前页面的url地址
  107. * title:当前网页的标题
  108. * four_color_av_m3u8:四色AV中播放页面中的m3u8链接--值为可选
  109. **/
  110. function loadParameterJSON(){
  111. // //示例
  112. // var json = {
  113. // jsonrpc:'2.0',
  114. // method:'aria2.addUri',
  115. // id:url,
  116. // params:[
  117. // [url],
  118. // ]
  119. // }
  120. // return JSON.stringify(json)
  121.  
  122.  
  123. //当前网页地址
  124. let url = window.location.href;
  125. //当前网页标题
  126. let title = document.title;
  127. //四色AV中的m3u8链接
  128. let four_color_av_m3u8 = getFourColorAVM3u8Url();
  129.  
  130.  
  131. let json = {
  132. "url": url,
  133. "title": title,
  134. "four_color_av_m3u8":four_color_av_m3u8
  135. };
  136. return JSON.stringify(json)
  137. }
  138.  
  139.  
  140. /**
  141. * 发送数据当前页面的URL到指定服务器
  142. */
  143. function sendLocationURL()
  144. {
  145. console.log(`Send Server`);
  146.  
  147. //服务器的地址
  148. var serverUrl = SERVER_CONFIG.scheme + "://" + SERVER_CONFIG.host + ":" + SERVER_CONFIG.port + "/" + SERVER_CONFIG.taskAdd
  149. if (SERVER_CONFIG.port === "" ) {
  150. serverUrl = SERVER_CONFIG.scheme + "://" + SERVER_CONFIG.host + "/" + SERVER_CONFIG.taskAdd
  151. }
  152.  
  153.  
  154. //发送的参数数据
  155. let data = loadParameterJSON();
  156. console.log(`serverUrl: ${serverUrl}`);
  157. console.log(`parameter: ${data}`);
  158.  
  159.  
  160. //GM_xmlhttpRequest方式请求
  161. GM_xmlhttpRequest({
  162. method: SERVER_CONFIG.method,
  163. url: serverUrl,
  164. headers: {
  165. 'Content-Type': 'application/json; charset=utf-8',
  166. },
  167. data: data,
  168. onload: function(response) {
  169. console.log(response);
  170. console.log(`readyState:${response.readyState}`);
  171. console.log(`status:${response.status}`);
  172. console.log(`statusText:${response.statusText}`);
  173. console.log(`responseHeaders:\n${response.responseHeaders}`);
  174. console.log(`responseText:${response.responseText}`);
  175. if (response.status === 200) {
  176. console.log(`Send URL Success: ${url}`);
  177. TKBaseSDK.showToast("当前URL地址发送成功!",1);
  178. } else {
  179. console.log(`Send URL Error: ${url} statusText: ${response.statusText}`);
  180. TKBaseSDK.showToast("当前URL地址发送失败!",0);
  181. }
  182. },
  183. onerror: function(response) {
  184. // 请求发生错误时执行
  185. console.error("Request failed:", response);
  186. let msg = `发送失败,Send Server服务地址:${response.finalUrl}`;
  187. console.log(msg);
  188. TKBaseSDK.showToastWtihTime(msg, 0, 4000);
  189. }
  190. });
  191. }
  192.  
  193. /**
  194. * 拷贝当前网页地址
  195. **/
  196. function copyLocationURL(){
  197. //当前网页地址
  198. let url = window.location.href;
  199.  
  200. //将magnet复制到剪切板
  201. let transfer = document.createElement('input');
  202. document.body.appendChild(transfer);
  203. transfer.value = url;
  204. //transfer.focus();
  205. transfer.select();
  206. if (document.execCommand('copy')) {
  207. document.execCommand('copy');
  208. }
  209. transfer.blur();
  210. document.body.removeChild(transfer);
  211.  
  212. console.log('复制成功');
  213. TKBaseSDK.showToast("复制成功!",1);
  214. }
  215.  
  216.  
  217. /**
  218. * 获取并拷贝m3u8链接
  219. **/
  220. function copyM3u8Link(){
  221. let m3u8Url = getFourColorAVM3u8Url();
  222.  
  223. //将magnet复制到剪切板
  224. let transfer = document.createElement('input');
  225. document.body.appendChild(transfer);
  226. transfer.value = m3u8Url;
  227. //transfer.focus();
  228. transfer.select();
  229. if (document.execCommand('copy')) {
  230. document.execCommand('copy');
  231. }
  232. transfer.blur();
  233. console.log('复制成功');
  234. TKBaseSDK.showToast("复制成功",2);
  235. document.body.removeChild(transfer);
  236.  
  237.  
  238. if (m3u8Url === "") {
  239. TKBaseSDK.showToast("复制失败,没有找到M3U8链接!",0);
  240. }else{
  241. TKBaseSDK.showToast("复制成功!",1);
  242. }
  243. }
  244.  
  245. /**
  246. * 获取四色AV中的m3u8链接地址
  247. **/
  248. function getFourColorAVM3u8Url(){
  249. // Define a regular expression to match the playUrl variable pattern
  250. const playUrlPattern = /var playUrl\s*=\s*"([^"]+)"/;
  251.  
  252. // Get all script tags on the page
  253. const scripts = Array.from(document.getElementsByTagName('script'));
  254.  
  255. // Look for the script containing the playUrl variable
  256. const matchedScript = scripts.find(script => playUrlPattern.test(script.textContent));
  257.  
  258. var m3u8Url = ""
  259.  
  260. // If found, extract the URL
  261. if (matchedScript) {
  262. const match = matchedScript.textContent.match(playUrlPattern);
  263. m3u8Url = match && match[1];
  264. console.log('m3u8 URL:', m3u8Url);
  265. } else {
  266. console.warn('m3u8 URL could not be found.');
  267. }
  268.  
  269. return m3u8Url
  270. }
  271.  
  272.  
  273. // -------------------------------Action-------------------------------
  274.  

QingJ © 2025

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