抖音直播自动点赞

抖音直播的自动点赞,可自动开始自动停止,0侵入感界面

Versione datata 25/06/2024. Vedi la nuova versione l'ultima versione.

  1. // ==UserScript==
  2. // @name 抖音直播自动点赞
  3. // @description 抖音直播的自动点赞,可自动开始自动停止,0侵入感界面
  4. // @author zzw6776
  5. // @version 1.7
  6. // @match *://live.douyin.com/*
  7. // @match *://*.douyin.com/root/live/*
  8. // @match *://*.douyin.com/*/live/*
  9. // @license MIT
  10. // @namespace https://greasyfork.org/users/168189
  11. // ==/UserScript==
  12.  
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. setTimeout(() => {
  18.  
  19.  
  20. addqpClick();
  21. addwyqpClick()
  22. let isStart = false;
  23. let page = document.getElementsByTagName('body')[0];
  24. console.log('载入自动点赞脚本')
  25.  
  26.  
  27. let total = document.createElement("div");
  28. total.className="total";
  29. total.innerHTML='<p class="dzs">点赞数</p><p class="dian">·</p><p class="kolento-all">0</p>';
  30. page.append(total);
  31.  
  32. var timeBox;
  33. let totalNum = 0;
  34. let num = document.getElementsByClassName('kolento-all')[0];
  35. num.innerHTML=totalNum;
  36.  
  37. let target = document.getElementsByClassName('LO5TGkc0');
  38.  
  39. let sstk = document.getElementsByClassName('VBIRbGZt');
  40.  
  41.  
  42.  
  43.  
  44. document.getElementsByClassName('dzs')[0].onclick=function(){
  45. if(isStart==false){
  46. ksdz();
  47.  
  48.  
  49. }else{
  50. console.log('停止点赞');
  51. clearInterval(timeBox);
  52. isStart==false;
  53. }
  54. }
  55.  
  56. setInterval(()=>{
  57. console.log('定时');
  58. ksdz()
  59. },1000*60*20)
  60.  
  61. document.getElementsByClassName('total')[0].style.left = (document.getElementsByClassName('ej6cQnWN')[0].getBoundingClientRect().left+180)+ 'px'
  62. document.getElementsByClassName('total')[0].style.top = (document.getElementsByClassName('ej6cQnWN')[0].getBoundingClientRect().top)+ 'px'
  63.  
  64.  
  65.  
  66.  
  67. document.addEventListener('keyup',(e)=>{
  68. console.log(e);
  69. switch(e.which) {
  70. case 89:
  71. wyqpClick();
  72. return;
  73. case 72:
  74. qpClick();
  75. return;
  76.  
  77. }
  78. });
  79.  
  80.  
  81.  
  82.  
  83.  
  84. function yccbl() {
  85. setTimeout(() => {
  86. if(document.getElementsByClassName('J6zKCgYE chatroom_close').length!=0){
  87. document.getElementsByClassName('J6zKCgYE chatroom_close')[0].addEventListener('click', function() {
  88.  
  89.  
  90. console.log('隐藏侧边栏');
  91. document.getElementsByClassName('total')[0].style.display='none';
  92.  
  93. zkcbl()
  94. })}
  95. },"100");
  96. }
  97.  
  98.  
  99. function zkcbl() {
  100. setTimeout(() => {
  101. document.getElementsByClassName('h5GOqbU9 chat_room_fold')[0].addEventListener('click', function() {
  102.  
  103.  
  104. console.log('展开侧边栏');
  105. document.getElementsByClassName('total')[0].style.display='';
  106.  
  107. //addSvgClick();
  108. })
  109. },"100");
  110. }
  111.  
  112. function addwyqpClick() {
  113. document.getElementsByClassName('psKR9RS0')[1].addEventListener('click',wyqpClick);
  114. }
  115.  
  116. function wyqpClick () {
  117. document.getElementsByClassName('total')[0].style.display='none';
  118. setTimeout(() => {
  119. console.log('点击网页全屏');
  120.  
  121. document.getElementsByClassName('total')[0].style.left = (document.getElementsByClassName('ej6cQnWN')[0].getBoundingClientRect().left+180)+ 'px'
  122. document.getElementsByClassName('total')[0].style.top = (document.getElementsByClassName('ej6cQnWN')[0].getBoundingClientRect().top)+ 'px'
  123. document.getElementsByClassName('total')[0].style.display='';
  124. yccbl()
  125.  
  126. } ,"100")
  127. }
  128.  
  129. function addqpClick() {
  130.  
  131. document.getElementsByClassName('xgplayer-icon')[1].addEventListener('click',qpClick );
  132. }
  133.  
  134. function qpClick () {
  135. document.getElementsByClassName('total')[0].style.display='none';
  136. setTimeout(() => {
  137. console.log('点击全屏');
  138.  
  139. document.getElementsByClassName('total')[0].style.left = (document.getElementsByClassName('ej6cQnWN')[0].getBoundingClientRect().left+180)+ 'px'
  140. document.getElementsByClassName('total')[0].style.top = (document.getElementsByClassName('ej6cQnWN')[0].getBoundingClientRect().top)+ 'px'
  141. document.getElementsByClassName('total')[0].style.display='';
  142. yccbl()
  143. // addqpClick();
  144. },"100")
  145. }
  146.  
  147. function ksdz(){
  148. // 执行点赞脚本
  149. console.log('执行点赞脚本')
  150. isStart=true
  151. if(timeBox!= null){
  152. clearInterval(timeBox);
  153. }
  154.  
  155. timeBox = setInterval(()=>{
  156. totalNum++;
  157.  
  158. if(sstk.length>0){
  159. console.log('自动停止')
  160. clearInterval(timeBox);
  161. isStart=false;
  162.  
  163. }
  164. num.innerHTML=totalNum;
  165. target[0].click();
  166. },randomNum(50,150))
  167.  
  168.  
  169. }
  170.  
  171. function addGlobalStyle(css) {
  172. var head, style;
  173. head = document.getElementsByTagName('head')[0];
  174. if (!head) { return; }
  175. style = document.createElement('style');
  176. style.type = 'text/css';
  177. style.innerHTML = css;
  178. head.appendChild(style);
  179. }
  180.  
  181. function randomNum(minNum,maxNum){
  182. switch(arguments.length){
  183. case 1:
  184. return parseInt(Math.random()*minNum+1,10);
  185. break;
  186. case 2:
  187. return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10);
  188. break;
  189. default:
  190. return 0;
  191. break;
  192. }
  193. }
  194.  
  195. addGlobalStyle(
  196.  
  197.  
  198. `
  199.  
  200. .total {
  201. font-size: 14px;
  202. font-weight: 500;
  203. position: fixed;
  204. //top: 81.5px;
  205. //right: 85px;
  206. z-index: 500;
  207. //background: linear-gradient(90deg,#f4c8c7 0,#0c61bb 45%,#0c61bb 55%,#fcc6c6)!important;
  208. color: rgba(255,255,255,.9);
  209. text-align: center;
  210. display: flex;
  211. align-items: center;
  212. justify-content: center;
  213. transition: all ease 0.3s;
  214. //padding: 5px 8px;
  215. line-height:20px;
  216. border-radius: 20px;
  217. }
  218. .dian {
  219. color: rgba(255,255,255,.5);
  220. width: 15px;
  221. justify-content: center;
  222. align-items: center;
  223. font-size: 14px;
  224. font-weight: 400;
  225. display: flex;
  226. }
  227.  
  228. .kolento-all {
  229. font-size: 14px;
  230. font-weight: 500;
  231. color: rgba(255,255,255,.5);
  232. }
  233.  
  234. `
  235. );
  236.  
  237.  
  238.  
  239. },'5000')
  240.  
  241.  
  242.  
  243. })();