一键获取动漫花园下载磁链

一键获取动漫花园下载磁链!

  1. // ==UserScript==
  2. // @name 一键获取动漫花园下载磁链
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1.9
  5. // @description 一键获取动漫花园下载磁链!
  6. // @author Kaze
  7. // @match https://share.dmhy.org/*
  8. // @match https://dmhy.anoneko.com/*
  9. // @icon https://share.dmhy.org/favicon.ico
  10. // @grant none
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14. (function () {
  15. 'use strict';
  16. let addDom = {
  17. hasStyle: false,
  18. init() {
  19. if (!this.hasStyle) {
  20. this.addDialog();
  21. }
  22. getInfo.getUrls();
  23. },
  24. addDialog() {
  25. let height = document.documentElement.clientHeight;
  26. let styleElement = document.createElement('style');
  27. styleElement.type = 'text/css';
  28. styleElement.innerHTML = `
  29. .kaze-dialog {
  30. position: fixed;
  31. width: 100vw;
  32. height: ${height}px;
  33. background-color: #23ade5;
  34. left: 0;
  35. top: 0;
  36. display: flex;
  37. flex-direction: column;
  38. justify-content: space-evenly;
  39. align-content: center;
  40. flex-wrap: nowrap;
  41. align-items: center;
  42. z-index: 20;
  43. }
  44. .kaze-dialog .kaze-dialog-title {
  45. color: #fff;
  46. width: 100%;
  47. font-size: 25px;
  48. text-align: center;
  49. }
  50. .kaze-dialog .kaze-dialog-subtitle {
  51. font-size: 15px;
  52. color: #fff;
  53. }
  54. .kaze-dialog .kaze-dialog-input {
  55. width: 99%;
  56. height: 100px;
  57. overflow: auto;
  58. }
  59. .kaze-dialog .kaze-dialog-value {
  60. width: 90%;
  61. margin: 0 auto;
  62. color: #247;
  63. border: 1px solid #247;
  64. background: #CDF;
  65. padding: 0px 8px 8px;
  66. }
  67. .kaze-dialog .quick_search_info {
  68. margin: 5px auto
  69. }
  70. .kaze-dialog .kaze-dialog-checkbox-content{
  71. display: flex;
  72. margin: 0 auto;
  73. flex-direction: column;
  74. width: 90%;
  75. border: 1px solid #247;
  76. background: #CDF;
  77. padding:10px 8px 5px 8px;
  78. align-items: flex-start;
  79. }
  80.  
  81. .kaze-dialog .kaze-dialog-checkbox {
  82. height: 50vh;
  83. overflow: auto;
  84. width: 100%;
  85. font-size: 16px;
  86. margin: 10px 0 0 0;
  87. }
  88. .kaze-dialog .kaze-dialog-checkbox>div {
  89. margin: 4px auto;
  90. overflow: hidden;
  91. text-overflow: ellipsis;
  92. white-space: nowrap;
  93. }
  94. .kaze-dialog .kaze-dialog-checkbox label {
  95. margin-left: 2px
  96. }
  97. .kaze-dialog .kaze-dialog-button-area,
  98. .kaze-dialog .kaze-dialog-checkbox-select {
  99. display: flex
  100. }
  101. .kaze-dialog .kaze-dialog-button-area .kaze-dialog-close,
  102. .kaze-dialog .kaze-dialog-button-area .kaze-dialog-copy,
  103. .kaze-dialog .kaze-dialog-checkbox-select .kaze-dialog-select-all,
  104. .kaze-dialog .kaze-dialog-checkbox-select .kaze-dialog-not-select-all {
  105. width: 80px;
  106. height: 30px;
  107. margin: auto 10px;
  108. }
  109. `;
  110. document.getElementsByTagName('body')[0].appendChild(styleElement);
  111.  
  112. let dialogDiv = document.createElement('div');
  113. dialogDiv.innerHTML = `<div class="kaze-dialog">
  114. <div class="kaze-dialog-title-content">
  115. <div class="kaze-dialog-title">可以只获取勾选的种子地址;请使用 ctrl+a 或者 command+a 全选文字自行复制</div>
  116. <a class="kaze-dialog-subtitle" target="_blank" href='https://github.com/KazeLiu/GetDmhyDownloadUrl' >去Github查看项目或提建议(issues)</a>
  117. </div>
  118. <div class="kaze-dialog-checkbox-content">
  119. <div class="kaze-dialog-checkbox-select">
  120. <button class="kaze-dialog-select-all">全选</button>
  121. <button class="kaze-dialog-not-select-all">全不选</button>
  122. </div>
  123. <div class="kaze-dialog-checkbox"></div>
  124. </div>
  125. <div class="kaze-dialog-value">
  126. <div class="quick_search_info">当前选中了X项目</div>
  127. <textarea class="kaze-dialog-input" placeholder="如果不小心全部删除,按 ctrl + z 或者 command + z 撤回"></textarea>
  128. </div>
  129. <div class="kaze-dialog-button-area">
  130. <button class="kaze-dialog-copy">一键复制</button>
  131. <button class="kaze-dialog-close">关闭</button></div>
  132. </div>`
  133. document.getElementsByTagName('body')[0].appendChild(dialogDiv)
  134. dialogDiv.querySelector(".kaze-dialog-close").addEventListener('click', _ => {
  135. getInfo.showDialog(false)
  136. // 删除莫名其妙出现的div
  137. document.querySelector("div[style^='pointer-events: none; visibility: hidden; position: absolute; box-sizing: border-box;']").remove();
  138. })
  139. dialogDiv.querySelector(".kaze-dialog-copy").addEventListener('click', _ => {
  140. addDom.copy()
  141. })
  142. dialogDiv.querySelector(".kaze-dialog-select-all").addEventListener('click', _ => {
  143. let checkboxList = document.querySelectorAll(".kaze-dialog .kaze-dialog-checkbox input[type='checkbox']")
  144. checkboxList.forEach(item => {
  145. item.checked = true;
  146. })
  147. getInfo.getUrlsInCheckbox()
  148. })
  149. dialogDiv.querySelector(".kaze-dialog-not-select-all").addEventListener('click', _ => {
  150. let checkboxList = document.querySelectorAll(".kaze-dialog .kaze-dialog-checkbox input[type='checkbox']")
  151. checkboxList.forEach(item => {
  152. item.checked = false;
  153. })
  154. getInfo.getUrlsInCheckbox()
  155. })
  156. this.hasStyle = true;
  157. },
  158. createInitBtn() {
  159. let btnDiv = document.createElement('span');
  160. btnDiv.innerHTML = `&nbsp;|&nbsp;获取本页种子链接`
  161. btnDiv.style.cursor = "pointer"
  162. document.querySelector('.headerright .links').append(btnDiv)
  163. btnDiv.addEventListener('click', () => {
  164. this.init();
  165. })
  166. },
  167. initChckBoxEvent() {
  168. document.querySelector(".kaze-dialog .kaze-dialog-checkbox").addEventListener('change', (e) => {
  169. getInfo.getUrlsInCheckbox();
  170. })
  171. },
  172. copy() {
  173. if (navigator.clipboard) {
  174. navigator.clipboard.writeText(document.querySelector('.kaze-dialog-input').value);
  175. document.querySelector(".kaze-dialog-copy").innerText = "已复制";
  176. } else {
  177. alert('很遗憾,浏览器不支持这个api')
  178. }
  179. }
  180. }
  181. let getInfo = {
  182. getUrls() {
  183. document.querySelector(".kaze-dialog .kaze-dialog-checkbox").innerHTML = null;
  184. let checkDiv = document.createElement("div")
  185. document.querySelectorAll('#topic_list tbody tr').forEach((item, index) => {
  186. let url = item.querySelector(".download-arrow").getAttribute('href');
  187. let name = item.querySelector(".title>a").innerText
  188. let temp = document.createElement("div")
  189. temp.innerHTML = `
  190. <input type="checkbox" id="check_${index}" checked="true" data-url="${url}" onclick="getInfo.getUrlsInCheckbox()">
  191. <label title="${name}" for="check_${index}">${name}</label>`
  192. checkDiv.append(temp)
  193. });
  194. document.querySelector(".kaze-dialog .kaze-dialog-checkbox").append(...checkDiv.children);
  195. addDom.initChckBoxEvent();
  196. this.getUrlsInCheckbox();
  197. this.showDialog(true);
  198. },
  199. showDialog(isShow) {
  200. document.querySelector('.kaze-dialog').style.display = isShow ? 'flex' : 'none'
  201. },
  202. getUrlsInCheckbox() {
  203. let checkboxList = document.querySelectorAll(".kaze-dialog .kaze-dialog-checkbox input[type='checkbox']:checked")
  204. document.querySelector('.quick_search_info').innerHTML = `当前选中了${checkboxList.length}项`
  205. let urls = [];
  206. checkboxList.forEach(item => {
  207. urls.push(item.dataset.url)
  208. })
  209. document.querySelector('.kaze-dialog-input').value = urls.join('\r\n');
  210. }
  211. }
  212. addDom.createInitBtn();
  213. })();

QingJ © 2025

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