main.js 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421
  1. let g;
  2. g = function () {
  3. if ("object" == typeof globalThis) return globalThis;
  4. try {
  5. return this || new Function("return this")();
  6. } catch (e) {
  7. if ("object" == typeof window) return window;
  8. }
  9. }();
  10. g.ENV_CONF = {}
  11. var nodes = {
  12. all: {
  13. index: {
  14. headimg: {
  15. id: "com.ss.android.ugc.aweme:id/user_avatar"
  16. },
  17. desc: {
  18. id: "com.ss.android.ugc.aweme:id/desc"
  19. },
  20. title: {
  21. id: "com.ss.android.ugc.aweme:id/title"
  22. },
  23. searchInput: {
  24. id: "com.ss.android.ugc.aweme:id/et_search_kw"
  25. }
  26. }
  27. },
  28. "26.0.0": {
  29. comment: {
  30. button: {
  31. id: "com.ss.android.ugc.aweme:id/dc7"
  32. },
  33. zan: {
  34. id: "com.ss.android.ugc.aweme:id/er2"
  35. }
  36. },
  37. video: {
  38. like: {
  39. id: "com.ss.android.ugc.aweme:id/er-"
  40. }
  41. },
  42. user: {
  43. homeMark: {
  44. id: "com.ss.android.ugc.aweme:id/t5o"
  45. },
  46. gznum: {
  47. id: "com.ss.android.ugc.aweme:id/w8o"
  48. },
  49. fansnum: {
  50. id: "com.ss.android.ugc.aweme:id/w8s"
  51. },
  52. username: {
  53. id: "com.ss.android.ugc.aweme:id/nsc"
  54. },
  55. lanv: {
  56. id: "com.ss.android.ugc.aweme:id/w9h"
  57. },
  58. followBtn: {
  59. id: "com.ss.android.ugc.aweme:id/po9"
  60. }
  61. },
  62. live: {
  63. msglistbox: {
  64. id: "com.ss.android.ugc.aweme:id/mwq"
  65. },
  66. userlistbox: {
  67. id: "com.ss.android.ugc.aweme:id/xzb"
  68. }
  69. }
  70. },
  71. "27.0.0": {
  72. comment: {
  73. button: {
  74. id: "com.ss.android.ugc.aweme:id/dh7"
  75. },
  76. zan: {
  77. id: "com.ss.android.ugc.aweme:id/eyg"
  78. }
  79. },
  80. video: {
  81. like: {
  82. id: "com.ss.android.ugc.aweme:id/eyp"
  83. }
  84. },
  85. user: {
  86. homeMark: {
  87. id: "com.ss.android.ugc.aweme:id/vkl"
  88. },
  89. gznum: {
  90. id: "com.ss.android.ugc.aweme:id/yr5"
  91. },
  92. fansnum: {
  93. id: "com.ss.android.ugc.aweme:id/yr9"
  94. },
  95. username: {
  96. id: "com.ss.android.ugc.aweme:id/ohq"
  97. },
  98. lanv: {
  99. id: "com.ss.android.ugc.aweme:id/ys7"
  100. },
  101. followBtn: {
  102. id: "com.ss.android.ugc.aweme:id/qpd"
  103. }
  104. },
  105. live: {
  106. msglistbox: {
  107. id: "com.ss.android.ugc.aweme:id/njx"
  108. },
  109. userlistbox: {
  110. id: "com.ss.android.ugc.aweme:id/zkc"
  111. }
  112. }
  113. },
  114. "27.3.0": {
  115. video: {
  116. like: {
  117. id: "com.ss.android.ugc.aweme:id/e3z"
  118. }
  119. },
  120. comment: {
  121. button: {
  122. id: "com.ss.android.ugc.aweme:id/dms"
  123. },
  124. zan: {
  125. id: "com.ss.android.ugc.aweme:id/e3p"
  126. }
  127. },
  128. user: {
  129. homeMark: {
  130. id: "com.ss.android.ugc.aweme:id/v0f"
  131. },
  132. gznum: {
  133. id: "com.ss.android.ugc.aweme:id/y=3"
  134. },
  135. fansnum: {
  136. id: "com.ss.android.ugc.aweme:id/y=7"
  137. },
  138. username: {
  139. id: "com.ss.android.ugc.aweme:id/oth"
  140. },
  141. lanv: {
  142. id: "com.ss.android.ugc.aweme:id/y_7"
  143. },
  144. followBtn: {
  145. id: "com.ss.android.ugc.aweme:id/q1y"
  146. }
  147. },
  148. live: {
  149. msglistbox: {
  150. id: "com.ss.android.ugc.aweme:id/nu1"
  151. },
  152. userlistbox: {
  153. id: "com.ss.android.ugc.aweme:id/z35"
  154. }
  155. }
  156. },
  157. "27.4.0": {
  158. video: {
  159. like: {
  160. id: "com.ss.android.ugc.aweme:id/e3="
  161. }
  162. },
  163. comment: {
  164. button: {
  165. id: "com.ss.android.ugc.aweme:id/dm2"
  166. },
  167. zan: {
  168. id: "com.ss.android.ugc.aweme:id/e30"
  169. }
  170. },
  171. user: {
  172. homeMark: {
  173. id: "com.ss.android.ugc.aweme:id/v0u"
  174. },
  175. gznum: {
  176. id: "com.ss.android.ugc.aweme:id/y_h"
  177. },
  178. fansnum: {
  179. id: "com.ss.android.ugc.aweme:id/y_l"
  180. },
  181. username: {
  182. id: "com.ss.android.ugc.aweme:id/os-"
  183. },
  184. lanv: {
  185. id: "com.ss.android.ugc.aweme:id/y-k"
  186. },
  187. followBtn: {
  188. id: "com.ss.android.ugc.aweme:id/q19"
  189. }
  190. },
  191. live: {
  192. msglistbox: {
  193. id: "com.ss.android.ugc.aweme:id/nuw"
  194. },
  195. userlistbox: {
  196. id: "com.ss.android.ugc.aweme:id/z4t"
  197. }
  198. }
  199. },
  200. "27.5.0": {
  201. video: {
  202. like: {
  203. id: "com.ss.android.ugc.aweme:id/e3+"
  204. }
  205. },
  206. comment: {
  207. button: {
  208. id: "com.ss.android.ugc.aweme:id/dnm"
  209. },
  210. zan: {
  211. id: "com.ss.android.ugc.aweme:id/e33"
  212. }
  213. },
  214. user: {
  215. homeMark: {
  216. id: "com.ss.android.ugc.aweme:id/v1f"
  217. },
  218. gznum: {
  219. id: "com.ss.android.ugc.aweme:id/y-e"
  220. },
  221. fansnum: {
  222. id: "com.ss.android.ugc.aweme:id/y-i"
  223. },
  224. username: {
  225. id: "com.ss.android.ugc.aweme:id/osz"
  226. },
  227. lanv: {
  228. id: "com.ss.android.ugc.aweme:id/y+h"
  229. },
  230. followBtn: {
  231. id: "com.ss.android.ugc.aweme:id/q2n"
  232. }
  233. },
  234. live: {
  235. msglistbox: {
  236. id: "com.ss.android.ugc.aweme:id/nuh"
  237. },
  238. userlistbox: {
  239. id: "com.ss.android.ugc.aweme:id/z5o"
  240. }
  241. }
  242. },
  243. "27.6.0": {
  244. video: {
  245. like: {
  246. id: "com.ss.android.ugc.aweme:id/e5o"
  247. }
  248. },
  249. comment: {
  250. button: {
  251. id: "com.ss.android.ugc.aweme:id/dow"
  252. },
  253. zan: {
  254. id: "com.ss.android.ugc.aweme:id/e5e"
  255. }
  256. },
  257. user: {
  258. homeMark: {
  259. id: "com.ss.android.ugc.aweme:id/v2+"
  260. },
  261. gznum: {
  262. id: "com.ss.android.ugc.aweme:id/y+-"
  263. },
  264. fansnum: {
  265. id: "com.ss.android.ugc.aweme:id/zac"
  266. },
  267. username: {
  268. id: "com.ss.android.ugc.aweme:id/ouo"
  269. },
  270. lanv: {
  271. id: "com.ss.android.ugc.aweme:id/za+"
  272. },
  273. followBtn: {
  274. id: "com.ss.android.ugc.aweme:id/q4b"
  275. }
  276. },
  277. live: {
  278. msglistbox: {
  279. id: "com.ss.android.ugc.aweme:id/nv8"
  280. },
  281. userlistbox: {
  282. id: "com.ss.android.ugc.aweme:id/z7s"
  283. }
  284. }
  285. },
  286. "27.7.0": {
  287. video: {
  288. like: {
  289. id: "com.ss.android.ugc.aweme:id/exn"
  290. }
  291. },
  292. comment: {
  293. button: {
  294. id: "com.ss.android.ugc.aweme:id/df+"
  295. },
  296. zan: {
  297. id: "com.ss.android.ugc.aweme:id/exd"
  298. }
  299. },
  300. user: {
  301. homeMark: {
  302. id: "com.ss.android.ugc.aweme:id/v83"
  303. },
  304. gznum: {
  305. id: "com.ss.android.ugc.aweme:id/zic"
  306. },
  307. fansnum: {
  308. id: "com.ss.android.ugc.aweme:id/zig"
  309. },
  310. username: {
  311. id: "com.ss.android.ugc.aweme:id/ov4"
  312. },
  313. lanv: {
  314. id: "com.ss.android.ugc.aweme:id/zjf"
  315. },
  316. followBtn: {
  317. id: "com.ss.android.ugc.aweme:id/q6o"
  318. }
  319. },
  320. live: {
  321. msglistbox: {
  322. id: "com.ss.android.ugc.aweme:id/nsz"
  323. },
  324. userlistbox: {
  325. id: "com.ss.android.ugc.aweme:id/0cc"
  326. }
  327. }
  328. },
  329. "27.8.0": {
  330. video: {
  331. like: {
  332. id: "com.ss.android.ugc.aweme:id/eyq"
  333. }
  334. },
  335. comment: {
  336. button: {
  337. id: "com.ss.android.ugc.aweme:id/dg_"
  338. },
  339. zan: {
  340. id: "com.ss.android.ugc.aweme:id/eyg"
  341. }
  342. },
  343. user: {
  344. homeMark: {
  345. id: "com.ss.android.ugc.aweme:id/v_e"
  346. },
  347. gznum: {
  348. id: "com.ss.android.ugc.aweme:id/zku"
  349. },
  350. fansnum: {
  351. id: "com.ss.android.ugc.aweme:id/zky"
  352. },
  353. username: {
  354. id: "com.ss.android.ugc.aweme:id/oyz"
  355. },
  356. lanv: {
  357. id: "com.ss.android.ugc.aweme:id/zlu"
  358. },
  359. followBtn: {
  360. id: "com.ss.android.ugc.aweme:id/q72"
  361. }
  362. },
  363. live: {
  364. userlistbox: {
  365. id: "com.ss.android.ugc.aweme:id/0ew"
  366. },
  367. msglistbox: {
  368. id: "com.ss.android.ugc.aweme:id/nwv"
  369. }
  370. }
  371. },
  372. "27.9.0": {
  373. video: {
  374. like: {
  375. id: "com.ss.android.ugc.aweme:id/ezh"
  376. }
  377. },
  378. comment: {
  379. button: {
  380. id: "com.ss.android.ugc.aweme:id/dhs"
  381. },
  382. zan: {
  383. id: "com.ss.android.ugc.aweme:id/ey="
  384. }
  385. },
  386. user: {
  387. homeMark: {
  388. id: "com.ss.android.ugc.aweme:id/waf"
  389. },
  390. gznum: {
  391. id: "com.ss.android.ugc.aweme:id/zn6"
  392. },
  393. fansnum: {
  394. id: "com.ss.android.ugc.aweme:id/zn="
  395. },
  396. username: {
  397. id: "com.ss.android.ugc.aweme:id/o0p"
  398. },
  399. lanv: {
  400. id: "com.ss.android.ugc.aweme:id/zo7"
  401. },
  402. followBtn: {
  403. id: "com.ss.android.ugc.aweme:id/q97"
  404. }
  405. },
  406. live: {
  407. userlistbox: {
  408. id: "com.ss.android.ugc.aweme:id/0h="
  409. },
  410. msglistbox: {
  411. id: "com.ss.android.ugc.aweme:id/nz9"
  412. }
  413. }
  414. },
  415. "28.0.0": {
  416. video: {
  417. like: {
  418. id: "com.ss.android.ugc.aweme:id/ezh"
  419. }
  420. },
  421. comment: {
  422. button: {
  423. id: "com.ss.android.ugc.aweme:id/dho"
  424. },
  425. zan: {
  426. id: "com.ss.android.ugc.aweme:id/ey="
  427. }
  428. },
  429. user: {
  430. homeMark: {
  431. id: "com.ss.android.ugc.aweme:id/wcy"
  432. },
  433. gznum: {
  434. id: "com.ss.android.ugc.aweme:id/zqq"
  435. },
  436. fansnum: {
  437. id: "com.ss.android.ugc.aweme:id/zqu"
  438. },
  439. username: {
  440. id: "com.ss.android.ugc.aweme:id/o13"
  441. },
  442. lanv: {
  443. id: "com.ss.android.ugc.aweme:id/zrr"
  444. },
  445. followBtn: {
  446. id: "com.ss.android.ugc.aweme:id/q_r"
  447. }
  448. },
  449. live: {
  450. userlistbox: {
  451. id: "com.ss.android.ugc.aweme:id/0kz"
  452. },
  453. msglistbox: {
  454. id: "com.ss.android.ugc.aweme:id/n19"
  455. }
  456. }
  457. },
  458. "28.1.0": {
  459. video: {
  460. like: {
  461. id: "com.ss.android.ugc.aweme:id/ezy"
  462. }
  463. },
  464. comment: {
  465. button: {
  466. id: "com.ss.android.ugc.aweme:id/dh0"
  467. },
  468. zan: {
  469. id: "com.ss.android.ugc.aweme:id/ezo"
  470. }
  471. },
  472. user: {
  473. homeMark: {
  474. id: "com.ss.android.ugc.aweme:id/wd8"
  475. },
  476. gznum: {
  477. id: "com.ss.android.ugc.aweme:id/zrs"
  478. },
  479. fansnum: {
  480. id: "com.ss.android.ugc.aweme:id/zrw"
  481. },
  482. username: {
  483. id: "com.ss.android.ugc.aweme:id/o2_"
  484. },
  485. lanv: {
  486. id: "com.ss.android.ugc.aweme:id/zsu"
  487. },
  488. followBtn: {
  489. id: "com.ss.android.ugc.aweme:id/q-1"
  490. }
  491. },
  492. live: {
  493. userlistbox: {
  494. id: "com.ss.android.ugc.aweme:id/0lw"
  495. },
  496. msglistbox: {
  497. id: "com.ss.android.ugc.aweme:id/n3u"
  498. }
  499. }
  500. },
  501. "28.2.0": {
  502. video: {
  503. like: {
  504. id: "com.ss.android.ugc.aweme:id/efs"
  505. }
  506. },
  507. comment: {
  508. button: {
  509. id: "com.ss.android.ugc.aweme:id/c1a"
  510. },
  511. zan: {
  512. id: "com.ss.android.ugc.aweme:id/efi"
  513. }
  514. },
  515. user: {
  516. homeMark: {
  517. id: "com.ss.android.ugc.aweme:id/vsx"
  518. },
  519. gznum: {
  520. id: "com.ss.android.ugc.aweme:id/y6j"
  521. },
  522. fansnum: {
  523. id: "com.ss.android.ugc.aweme:id/y6n"
  524. },
  525. username: {
  526. id: "com.ss.android.ugc.aweme:id/oe9"
  527. },
  528. lanv: {
  529. id: "com.ss.android.ugc.aweme:id/y7f"
  530. },
  531. followBtn: {
  532. id: "com.ss.android.ugc.aweme:id/qod"
  533. }
  534. },
  535. live: {
  536. userlistbox: {
  537. id: "com.ss.android.ugc.aweme:id/zzu"
  538. },
  539. msglistbox: {
  540. id: "com.ss.android.ugc.aweme:id/nbk"
  541. }
  542. }
  543. },
  544. "28.3.0": {
  545. video: {
  546. like: {
  547. id: "com.ss.android.ugc.aweme:id/egc"
  548. }
  549. },
  550. comment: {
  551. button: {
  552. id: "com.ss.android.ugc.aweme:id/c1r"
  553. },
  554. zan: {
  555. id: "com.ss.android.ugc.aweme:id/ef6"
  556. }
  557. },
  558. user: {
  559. homeMark: {
  560. id: "com.ss.android.ugc.aweme:id/vvo"
  561. },
  562. gznum: {
  563. id: "com.ss.android.ugc.aweme:id/y9g"
  564. },
  565. fansnum: {
  566. id: "com.ss.android.ugc.aweme:id/y9k"
  567. },
  568. username: {
  569. id: "com.ss.android.ugc.aweme:id/og0"
  570. },
  571. lanv: {
  572. id: "com.ss.android.ugc.aweme:id/y=c"
  573. },
  574. followBtn: {
  575. id: "com.ss.android.ugc.aweme:id/qp-"
  576. }
  577. },
  578. live: {
  579. userlistbox: {
  580. id: "com.ss.android.ugc.aweme:id/z2s"
  581. },
  582. msglistbox: {
  583. id: "com.ss.android.ugc.aweme:id/nc4"
  584. }
  585. }
  586. },
  587. "28.4.0": {
  588. video: {
  589. like: {
  590. id: "com.ss.android.ugc.aweme:id/ehq"
  591. }
  592. },
  593. comment: {
  594. button: {
  595. id: "com.ss.android.ugc.aweme:id/c2="
  596. },
  597. zan: {
  598. id: "com.ss.android.ugc.aweme:id/ehf"
  599. }
  600. },
  601. user: {
  602. homeMark: {
  603. id: "com.ss.android.ugc.aweme:id/v09"
  604. },
  605. gznum: {
  606. id: "com.ss.android.ugc.aweme:id/zbf"
  607. },
  608. fansnum: {
  609. id: "com.ss.android.ugc.aweme:id/zbj"
  610. },
  611. username: {
  612. id: "com.ss.android.ugc.aweme:id/old"
  613. },
  614. lanv: {
  615. id: "com.ss.android.ugc.aweme:id/zcb"
  616. },
  617. followBtn: {
  618. id: "com.ss.android.ugc.aweme:id/qu-"
  619. }
  620. },
  621. live: {
  622. userlistbox: {
  623. id: "com.ss.android.ugc.aweme:id/z9i"
  624. },
  625. msglistbox: {
  626. id: "com.ss.android.ugc.aweme:id/ng7"
  627. }
  628. }
  629. },
  630. "28.5.0": {
  631. video: {
  632. like: {
  633. id: "com.ss.android.ugc.aweme:id/eio"
  634. }
  635. },
  636. comment: {
  637. button: {
  638. id: "com.ss.android.ugc.aweme:id/c31"
  639. },
  640. zan: {
  641. id: "com.ss.android.ugc.aweme:id/eid"
  642. }
  643. },
  644. user: {
  645. homeMark: {
  646. id: "com.ss.android.ugc.aweme:id/v3+"
  647. },
  648. gznum: {
  649. id: "com.ss.android.ugc.aweme:id/zex"
  650. },
  651. fansnum: {
  652. id: "com.ss.android.ugc.aweme:id/ze1"
  653. },
  654. username: {
  655. id: "com.ss.android.ugc.aweme:id/on1"
  656. },
  657. lanv: {
  658. id: "com.ss.android.ugc.aweme:id/zft"
  659. },
  660. followBtn: {
  661. id: "com.ss.android.ugc.aweme:id/qx3"
  662. }
  663. },
  664. live: {
  665. userlistbox: {
  666. id: "com.ss.android.ugc.aweme:id/z-5"
  667. },
  668. msglistbox: {
  669. id: "com.ss.android.ugc.aweme:id/nje"
  670. }
  671. }
  672. },
  673. "28.6.0": {
  674. video: {
  675. like: {
  676. id: "com.ss.android.ugc.aweme:id/ei-"
  677. }
  678. },
  679. comment: {
  680. button: {
  681. id: "com.ss.android.ugc.aweme:id/c4g"
  682. },
  683. zan: {
  684. id: "com.ss.android.ugc.aweme:id/ei1"
  685. }
  686. },
  687. user: {
  688. homeMark: {
  689. id: "com.ss.android.ugc.aweme:id/v7c"
  690. },
  691. gznum: {
  692. id: "com.ss.android.ugc.aweme:id/zh="
  693. },
  694. fansnum: {
  695. id: "com.ss.android.ugc.aweme:id/zia"
  696. },
  697. username: {
  698. id: "com.ss.android.ugc.aweme:id/op1"
  699. },
  700. lanv: {
  701. id: "com.ss.android.ugc.aweme:id/zi7"
  702. },
  703. followBtn: {
  704. id: "com.ss.android.ugc.aweme:id/qz9"
  705. }
  706. },
  707. live: {
  708. userlistbox: {
  709. id: "com.ss.android.ugc.aweme:id/0ck"
  710. },
  711. msglistbox: {
  712. id: "com.ss.android.ugc.aweme:id/nk-"
  713. }
  714. }
  715. },
  716. "28.7.0": {
  717. video: {
  718. like: {
  719. id: "com.ss.android.ugc.aweme:id/ejz"
  720. }
  721. },
  722. comment: {
  723. button: {
  724. id: "com.ss.android.ugc.aweme:id/c41"
  725. },
  726. zan: {
  727. id: "com.ss.android.ugc.aweme:id/ejo"
  728. }
  729. },
  730. user: {
  731. homeMark: {
  732. id: "com.ss.android.ugc.aweme:id/v97"
  733. },
  734. gznum: {
  735. id: "com.ss.android.ugc.aweme:id/zk="
  736. },
  737. fansnum: {
  738. id: "com.ss.android.ugc.aweme:id/zla"
  739. },
  740. username: {
  741. id: "com.ss.android.ugc.aweme:id/ory"
  742. },
  743. lanv: {
  744. id: "com.ss.android.ugc.aweme:id/zl6"
  745. },
  746. followBtn: {
  747. id: "com.ss.android.ugc.aweme:id/q2d"
  748. }
  749. },
  750. live: {
  751. userlistbox: {
  752. id: "com.ss.android.ugc.aweme:id/0fr"
  753. },
  754. msglistbox: {
  755. id: "com.ss.android.ugc.aweme:id/nm6"
  756. }
  757. }
  758. },
  759. "28.8.0": {
  760. video: {
  761. like: {
  762. id: "com.ss.android.ugc.aweme:id/ekj"
  763. }
  764. },
  765. comment: {
  766. button: {
  767. id: "com.ss.android.ugc.aweme:id/c5g"
  768. },
  769. zan: {
  770. id: "com.ss.android.ugc.aweme:id/ej-"
  771. }
  772. },
  773. user: {
  774. homeMark: {
  775. id: "com.ss.android.ugc.aweme:id/v+_"
  776. },
  777. gznum: {
  778. id: "com.ss.android.ugc.aweme:id/zph"
  779. },
  780. fansnum: {
  781. id: "com.ss.android.ugc.aweme:id/zpl"
  782. },
  783. username: {
  784. id: "com.ss.android.ugc.aweme:id/ot-"
  785. },
  786. lanv: {
  787. id: "com.ss.android.ugc.aweme:id/zqd"
  788. },
  789. followBtn: {
  790. id: "com.ss.android.ugc.aweme:id/q47"
  791. }
  792. },
  793. live: {
  794. userlistbox: {
  795. id: "com.ss.android.ugc.aweme:id/0jz"
  796. },
  797. msglistbox: {
  798. id: "com.ss.android.ugc.aweme:id/nor"
  799. }
  800. }
  801. },
  802. "28.9.0": {
  803. video: {
  804. like: {
  805. id: "com.ss.android.ugc.aweme:id/el2"
  806. }
  807. },
  808. comment: {
  809. button: {
  810. id: "com.ss.android.ugc.aweme:id/c6w"
  811. },
  812. zan: {
  813. id: "com.ss.android.ugc.aweme:id/elr"
  814. }
  815. },
  816. user: {
  817. homeMark: {
  818. id: "com.ss.android.ugc.aweme:id/wej"
  819. },
  820. gznum: {
  821. id: "com.ss.android.ugc.aweme:id/zt8"
  822. },
  823. fansnum: {
  824. id: "com.ss.android.ugc.aweme:id/zt-"
  825. },
  826. username: {
  827. id: "com.ss.android.ugc.aweme:id/owx"
  828. },
  829. lanv: {
  830. id: "com.ss.android.ugc.aweme:id/zu4"
  831. },
  832. followBtn: {
  833. id: "com.ss.android.ugc.aweme:id/q7="
  834. }
  835. },
  836. live: {
  837. userlistbox: {
  838. id: "com.ss.android.ugc.aweme:id/0ol"
  839. },
  840. msglistbox: {
  841. id: "com.ss.android.ugc.aweme:id/nrb"
  842. }
  843. }
  844. }
  845. };
  846. let conf = {
  847. packageName: "com.ss.android.ugc.aweme",
  848. versions: [ "26.0.0", "27.0.0", "27.3.0", "27.4.0", "27.5.0", "27.6.0", "27.7.0", "27.8.0", "27.9.0", "28.0.0", "28.1.0", "28.2.0", "28.3.0", "28.4.0", "28.5.0", "28.6.0", "28.7.0", "28.8.0", "28.9.0" ],
  849. nodes: nodes,
  850. commonts: [ "又刷到你了", "看看我的作品", "来我主页转转" ],
  851. sxhs: [ "很高兴认识你", "常来常往" ],
  852. zfhs: [ "互粉", "回关", "关注", "互赞" ],
  853. czyhGjzs: [ "多少", "价格", "联系" ],
  854. dqGjzs: [ "安徽", "浙江", "江苏" ]
  855. }
  856. let engine;
  857. engine = {
  858. exit() {
  859. engines.stopAll(), exit();
  860. },
  861. swipeEx(qx, qy, zx, zy, time) {
  862. for (var xxy = [ time ], point = [], dx0 = {
  863. x: qx,
  864. y: qy
  865. }, dx1 = {
  866. x: random(qx - 100, qx + 100),
  867. y: random(qy, qy + 50)
  868. }, dx2 = {
  869. x: random(zx - 100, zx + 100),
  870. y: random(zy, zy + 50)
  871. }, dx3 = {
  872. x: zx,
  873. y: zy
  874. }, i = 0; i < 4; i++) eval("point.push(dx" + i + ")");
  875. for (let i = 0; i < 1; i += .08) xxyy = [ parseInt(this.bezier_curves(point, i).x), parseInt(this.bezier_curves(point, i).y) ],
  876. xxy.push(xxyy);
  877. gesture.apply(null, xxy);
  878. },
  879. bezier_curves(cp, t) {
  880. return cx = 3 * (cp[1].x - cp[0].x), bx = 3 * (cp[2].x - cp[1].x) - cx,
  881. ax = cp[3].x - cp[0].x - cx - bx, cy = 3 * (cp[1].y - cp[0].y),
  882. by = 3 * (cp[2].y - cp[1].y) - cy, ay = cp[3].y - cp[0].y - cy - by,
  883. tSquared = t * t, tCubed = tSquared * t, (result = {
  884. x: 0,
  885. y: 0
  886. }).x = ax * tCubed + bx * tSquared + cx * t + cp[0].x, result.y = ay * tCubed + by * tSquared + cy * t + cp[0].y,
  887. result;
  888. },
  889. shortSlide() {
  890. this.swipeEx(.5 * this.deviceWidth, .8 * this.deviceHeight, .5 * this.deviceWidth, .8 * this.deviceHeight - 500, 300);
  891. },
  892. middleSlide() {
  893. this.swipeEx(.5 * this.deviceWidth, .8 * this.deviceHeight, .5 * this.deviceWidth, .5 * this.deviceHeight, 300);
  894. },
  895. deSlide() {
  896. this.swipeEx(.5 * this.deviceWidth, .3 * this.deviceHeight, .5 * this.deviceWidth, this.deviceHeight, 300);
  897. },
  898. bshortSlide() {
  899. this.swipeEx(.5 * this.deviceWidth, .8 * this.deviceHeight, .5 * this.deviceWidth, .8 * this.deviceHeight - 500, 300);
  900. },
  901. slide() {
  902. this.swipeEx(.8 * this.deviceWidth, .7 * this.deviceHeight, .8 * this.deviceWidth, 0, random(300, 500));
  903. },
  904. fanslide() {
  905. this.swipeEx(.9 * this.deviceWidth, .5 * this.deviceHeight, .9 * this.deviceWidth, .01 * this.deviceHeight, 500);
  906. },
  907. regionClick(region) {
  908. click(random(region[0], region[0] + region[2]), random(region[1], region[1] + region[3]));
  909. },
  910. boundsClick(bounds) {
  911. var x = .2 * bounds.width(), y = .2 * bounds.height();
  912. bounds.left += x, bounds.right -= x, bounds.top += y, bounds.bottom -= y,
  913. click(random(bounds.left, bounds.right), random(bounds.top, bounds.bottom));
  914. },
  915. sleepMs() {
  916. var argLen = arguments.length;
  917. let min = 0, max = 0;
  918. if (1 == argLen) min = arguments[0], max = arguments[0]; else {
  919. if (!(2 <= argLen)) return;
  920. min = arguments[0], max = arguments[1];
  921. }
  922. min >= max ? sleep(min) : sleep(random(min, max));
  923. },
  924. sleep() {
  925. var argLen = arguments.length;
  926. let min = 0, max = 0;
  927. if (1 == argLen) min = arguments[0], max = arguments[0]; else {
  928. if (!(2 <= argLen)) return;
  929. min = arguments[0], max = arguments[1];
  930. }
  931. min >= max ? sleep(1e3 * min) : sleep(1e3 * random(min, max));
  932. },
  933. getUnix() {
  934. return parseInt(Date.now() / 1e3);
  935. }
  936. }
  937. g.floatyToastWindow === undefined && (g.floatyToastWindow = floaty.rawWindow(`
  938. <frame gravity="center" w="*">
  939. <text
  940. id="text" text=""
  941. w="wrap_content" h="wrap_content"
  942. visibility="invisible"
  943. bg="#1989fa" textColor="#ffffff"
  944. paddingLeft="10" paddingRight="10" paddingTop="5" paddingBottom="5"
  945. />
  946. </frame>
  947. `), floatyToastWindow.setTouchable(!1), floatyToastWindow.setSize(-1, -2), floatyToastWindow.setPosition(0, .75 * (ENV_CONF.screenHeight || device.height)))
  948. let utility = {
  949. currentRunPackage(packageName) {
  950. return currentPackage() == conf.packageName || (app.launch(conf.packageName),
  951. !1);
  952. },
  953. packageInfo(packageName) {
  954. try {
  955. return context.getPackageManager().getPackageInfo(packageName, 0);
  956. } catch (e) {
  957. return null;
  958. }
  959. },
  960. checkVersion(packageName, versions) {
  961. var info = this.packageInfo(packageName);
  962. return this.isEmpty(info) ? (alert("请安装抖音!"), !1) : (packageName = app.getAppName(packageName),
  963. !!versions.includes(info.versionName) || (alert("不支持 " + packageName + "(" + info.versionName + "),请安装支持版本!"),
  964. !1));
  965. },
  966. isEmpty(value) {
  967. switch (typeof value) {
  968. case "undefined":
  969. return !0;
  970. case "string":
  971. if (0 == value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, "").length) return !0;
  972. break;
  973. case "boolean":
  974. if (value) break;
  975. return !0;
  976. case "number":
  977. if (0 === value || isNaN(value)) return !0;
  978. break;
  979. case "object":
  980. if (null !== value && 0 !== value.length) for (var i in value) return !1;
  981. return !0;
  982. }
  983. return !1;
  984. },
  985. checkProbability(value, hdfs) {
  986. var temp = random(1, 99);
  987. return console.log(hdfs + "计算概率:" + temp + (temp < value ? "未超出" : "超出") + value),
  988. temp < value;
  989. },
  990. strFindKeys(s, keys) {
  991. for (w of keys) if (-1 != s.indexOf(w)) return w;
  992. return "";
  993. },
  994. error(packageName, e) {
  995. if (e.fileName) {
  996. packageName = this.packageInfo(packageName);
  997. let versionName = "未知版本";
  998. packageName = "版本号:" + (versionName = packageName && packageName.versionName ? packageName.versionName : versionName) + "\r\n",
  999. packageName = (packageName = (packageName += "错误:" + e.toString() + "\r\n") + ("模块:" + e.fileName.replace(".js", "") + "\r\n")) + ("错误码:" + e.lineNumber + "\r\n") + "====================================\r\n";
  1000. files.write("/sdcard/error_bzy.log", packageName);
  1001. } else console.log("运行错误:", e.toString());
  1002. },
  1003. inputShow() {
  1004. for (var i = 0; null != auto.windows[i]; i++) if (2 == auto.windows[i].type) return !0;
  1005. return !1;
  1006. },
  1007. inputHide() {
  1008. for (; this.inputShow();) back(), sleep(1e3);
  1009. },
  1010. toast(msg) {
  1011. ui.run(function () {
  1012. console.log(msg), floatyToastWindow.text.setText(msg), floatyToastWindow.text.attr("visibility", "visible");
  1013. });
  1014. },
  1015. toastHide() {
  1016. try {
  1017. floatyToastWindow.text.attr("visibility", "invisible");
  1018. } catch (e) {
  1019. }
  1020. },
  1021. objectToStr(obj) {
  1022. try {
  1023. var str = obj.toString(), index = str.indexOf(";");
  1024. return -1 === index ? "" : str.slice(0, index);
  1025. } catch (error) {
  1026. return "";
  1027. }
  1028. },
  1029. compareVersion(version1, version2) {
  1030. var arr1 = version1.split("."), arr2 = version2.split("."), length1 = arr1.length, length2 = arr2.length,
  1031. minlength = Math.min(length1, length2);
  1032. let i = 0;
  1033. for (i; i < minlength; i++) {
  1034. var a = parseInt(arr1[i]), b = parseInt(arr2[i]);
  1035. if (b < a) return 1;
  1036. if (a < b) return -1;
  1037. }
  1038. if (length2 < length1) {
  1039. for (let j = i; j < length1; j++) if (0 != parseInt(arr1[j])) return 1;
  1040. } else if (length1 < length2) for (let j = i; j < length2; j++) if (0 != parseInt(arr2[j])) return -1;
  1041. return 0;
  1042. }
  1043. };
  1044. let douyin = {
  1045. version: "",
  1046. nodes: {},
  1047. init() {
  1048. var info = utility.packageInfo(conf.packageName);
  1049. return utility.isEmpty(info) ? (alert("请安装支持的抖音版本!"), !1) : conf.versions.includes(info.versionName) ? (this.version = info.versionName,
  1050. this.nodes = conf.nodes[info.versionName] || {}, !0) : (alert("不支持 抖音(" + info.versionName + ")请安装支持的抖音版本!"),
  1051. !1);
  1052. },
  1053. execClose() {
  1054. for (utility.inputHide(); ;) {
  1055. var closeBtn = desc("关闭").visibleToUser().findOnce();
  1056. if (!closeBtn) break;
  1057. closeBtn.click(), sleep(1e3);
  1058. }
  1059. },
  1060. execCancel() {
  1061. for (;;) {
  1062. var closeBtn = id("cancel_btn").visibleToUser().findOnce();
  1063. if (!closeBtn) break;
  1064. closeBtn.click(), sleep(1e3);
  1065. }
  1066. },
  1067. execBackOnce() {
  1068. var backBtn = desc("返回").visibleToUser().findOnce();
  1069. return null !== backBtn && (backBtn.click(), sleep(500), !0);
  1070. },
  1071. execBack() {
  1072. for (;this.execBackOnce(); );
  1073. },
  1074. execLike() {
  1075. var wdz = className("android.widget.LinearLayout").descStartsWith("未点赞").descEndsWith("按钮").visibleToUser().findOnce();
  1076. return !!wdz && (utility.toast("执行点赞"), wdz.click(), sleep(1e3),
  1077. !0);
  1078. },
  1079. execTxdz() {
  1080. var txdz;
  1081. desc("用户头像").visibleToUser().findOnce().click() && (sleep(500),
  1082. txdz = className("android.widget.RelativeLayout").visibleToUser().findOnce(),
  1083. sleep(500), txdz.click(), engine.sleepMs(1e3, 2e3), back(),
  1084. sleep(1e3));
  1085. },
  1086. popupAndClose() {
  1087. threads.start(function() {
  1088. for (;;) {
  1089. var a;
  1090. sleep(200), text("授权提示").exists() && text("同意授权").click(),
  1091. sleep(200), text("休息一下吧").exists() && text("取消").click(),
  1092. sleep(200), (text("很晚了,睡个好觉").exists() || text("早点睡觉吧").exists()) && text("取消").click(),
  1093. sleep(200), text("朋友推荐").exists() && (a = desc("关闭").findOnce()) && a.click(),
  1094. sleep(200), text("发现通讯录好友").exists() && text("取消").click(),
  1095. sleep(200), text("个人信息保护指引").exists() && text("好的").click(),
  1096. sleep(200), text("去商店评分").exists() && text("取消").click(),
  1097. sleep(200), text("开启青少年模式").exists() && text("我知道了").click(),
  1098. sleep(200), text("检测到更新").exists() && text("以后再说").click(),
  1099. sleep(200), text("跳过广告").exists() && text("跳过广告").click(),
  1100. sleep(200), text("下次").exists() && text("下次").click(),
  1101. sleep(1e3);
  1102. }
  1103. });
  1104. },
  1105. getNode(path) {
  1106. var tp, path = path.split(".");
  1107. let node = this.nodes;
  1108. for (tp of path) if (null === (node = node[tp] || null)) break;
  1109. if (!node) {
  1110. node = conf.nodes.all;
  1111. for (let tp of path) if (null === (node = node[tp] || null)) break;
  1112. }
  1113. return node;
  1114. },
  1115. isRecommend() {
  1116. return null !== descContains("推荐").descEndsWith("按钮").descContains("已选中").visibleToUser().findOnce() || null !== descContains("精选").descEndsWith("按钮").descContains("已选中").visibleToUser().findOnce();
  1117. },
  1118. IsVideo() {
  1119. var node = douyin.getNode("video.like");
  1120. return null !== node && null !== id(node.id).visibleToUser().findOnce() || null !== className("android.widget.LinearLayout").descContains("点赞").descEndsWith("按钮").visibleToUser().findOnce();
  1121. },
  1122. IsVideoDelay(ms) {
  1123. return null !== className("android.widget.LinearLayout").descContains("点赞").descEndsWith("按钮").visibleToUser().findOne(ms);
  1124. },
  1125. skipVideo() {
  1126. return !this.IsVideo() && (utility.toast("跳过非视频或图集作品!"), sleep(500),
  1127. engine.slide(), !0);
  1128. },
  1129. IsFollow() {
  1130. return null !== className("android.widget.Button").desc("关注").visibleToUser().findOnce();
  1131. },
  1132. execFollow() {
  1133. var con = className("android.widget.Button").desc("关注").visibleToUser().findOnce();
  1134. return !!con && (utility.toast("执行关注"), con.click(), !0);
  1135. },
  1136. sikpFollow() {
  1137. return !this.IsFollow() && (utility.toast("跳过已关注用户"), sleep(500),
  1138. engine.slide(), !0);
  1139. },
  1140. IsLike() {
  1141. return null !== className("android.widget.LinearLayout").descStartsWith("已点赞").descEndsWith("按钮").visibleToUser().findOnce();
  1142. },
  1143. sikpLike() {
  1144. return !!this.IsLike() && (utility.toast("跳过已点赞视频"), sleep(500),
  1145. engine.slide(), !0);
  1146. },
  1147. getLikeNum() {
  1148. let num = 0;
  1149. try {
  1150. var desc = className("android.widget.LinearLayout").descContains("点赞").descEndsWith("按钮").visibleToUser().findOnce().desc();
  1151. num = parseFloat(desc.match(/[0-9]+(\.[0-9]{0,2})?/g)[0]),
  1152. (0 <= desc.indexOf("w") || 0 <= desc.indexOf("万")) && (num *= 1e4);
  1153. } catch (e) {
  1154. num = 0;
  1155. }
  1156. return num;
  1157. },
  1158. IsAd() {
  1159. return null !== textContains("广告").visibleToUser().findOnce();
  1160. },
  1161. sikpAp() {
  1162. return !!this.IsAd() && (utility.toast("跳过忽略广告"), sleep(500),
  1163. engine.slide(), !0);
  1164. },
  1165. IsCommerce() {
  1166. try {
  1167. if (null !== textEndsWith("限时秒杀").visibleToUser().findOnce()) return !0;
  1168. if (null !== textEndsWith("优惠团购").visibleToUser().findOnce()) return !0;
  1169. } catch (e) {}
  1170. return !1;
  1171. },
  1172. sikpCommerce() {
  1173. return !!this.IsCommerce() && (utility.toast("跳过商业视频!"), sleep(500),
  1174. engine.slide(), !0);
  1175. },
  1176. watchVideo(startTime, watchTime) {
  1177. startTime = engine.getUnix() - startTime;
  1178. 0 < (watchTime -= startTime = 60 < startTime ? 60 : startTime) ? (engine.sleep(watchTime),
  1179. utility.toast("继续观看视频" + watchTime + "秒")) : utility.toast("已观看视频" + startTime + "秒"),
  1180. sleep(500);
  1181. },
  1182. canComment() {
  1183. let num = 0;
  1184. try {
  1185. var desc = className("android.widget.LinearLayout").descContains("评论").descEndsWith("按钮").visibleToUser().findOnce().desc();
  1186. num = parseFloat(desc.match(/[0-9]+(\.[0-9]{0,2})?/g)[0]);
  1187. } catch (e) {
  1188. num = 0;
  1189. }
  1190. return 0 < num;
  1191. },
  1192. sendComment(hs, isComment, isLike, pltp) {
  1193. try {
  1194. isComment = !(!isComment && isComment !== undefined);
  1195. var plBtn = className("android.widget.LinearLayout").descStartsWith("评论").descEndsWith("按钮").visibleToUser().findOnce();
  1196. if (plBtn && plBtn.click()) {
  1197. let editText = className("android.widget.EditText").visibleToUser().findOne(3e3);
  1198. if (null === editText && (sleep(1e3), editText = className("android.widget.EditText").visibleToUser().findOne(2e3)),
  1199. null === editText) utility.toast("没有识别到评论框"), sleep(500); else {
  1200. isLike && (utility.toast("执行评论点赞"), sleep(1e3),
  1201. (commentZanBtns = descStartsWith("赞").descEndsWith("未选中").visibleToUser().find()).forEach(el => {
  1202. (el.clickable() ? el : el.parent()).click(),
  1203. engine.sleepMs(500, 1e3);
  1204. }));
  1205. var hsLen = hs.length;
  1206. if (!isComment || hsLen < 1) utility.toast("不执行评论"),
  1207. sleep(500); else if (utility.toast("准备发表评论"), editText.click()) {
  1208. if (sleep(1e3), setText(hs[random(0, hsLen - 1)]),
  1209. engine.sleepMs(1e3, 3e3), pltp && null !== desc("插入图片").visibleToUser().findOne(3e3)) {
  1210. desc("插入图片").visibleToUser().findOne().click() || utility.toast("没有成功点击到发布图片按钮"),
  1211. sleep(2e3);
  1212. let listBox = id("com.ss.android.ugc.aweme:id/content_container").visibleToUser().findOne(2e3);
  1213. if (0 == (listBox = listBox.find(id("com.ss.android.ugc.aweme:id/root_view"))).length) return void alert("没有图片!", "手机相册里请先准备好图片!");
  1214. listBox[random(0, listBox.length - 1)].click() || (utility.toast("图片点击失败!"),
  1215. back()), engine.sleepMs(1e3, 2e3);
  1216. }
  1217. let sendBtn = className("android.widget.ImageView").visibleToUser().desc("发送").findOne(5e3);
  1218. if (null === (sendBtn = (sendBtn = sendBtn || className("android.widget.TextView").visibleToUser().text("发送").findOne(5e3)) || text("发送").findOne(5e3))) utility.toast("没有获取到发送按钮"),
  1219. sleep(1e3); else {
  1220. if (sendBtn.clickable()) {
  1221. if (!sendBtn.click()) return utility.toast("没有成功点击发送按钮"),
  1222. sleep(1e3), void this.execClose();
  1223. } else if (!sendBtn.parent().click()) return utility.toast("没有成功点击parent发送按钮"),
  1224. sleep(1e3), void this.execClose();
  1225. utility.toast("评论完成"), null !== text("我也发一张").visibleToUser().findOne(5e3) && this.execBack(),
  1226. engine.sleepMs(2e3, 5e3);
  1227. }
  1228. } else utility.toast("没有成功点击评论框"), sleep(500);
  1229. }
  1230. this.execClose();
  1231. }
  1232. } catch (e) {
  1233. console.log(e), utility.toast("评论操作失败"), sleep(500), this.execClose();
  1234. }
  1235. },
  1236. isHome() {
  1237. return null !== id(this.getNode("user.homeMark").id).visibleToUser().findOne(1e4);
  1238. },
  1239. previewHome() {
  1240. var head = id(this.getNode("index.headimg").id).visibleToUser().findOnce();
  1241. null !== head && head.click() && (utility.toast("访问用户首页"), this.isHome() ? (engine.sleep(2, 5),
  1242. 1 == random(1, 3) && (engine.slide(), engine.sleep(2, 5))) : console.log("打开用户首页失败"),
  1243. this.execBackOnce());
  1244. },
  1245. previewHomeTc() {
  1246. let yhxb = 0;
  1247. var head = id(this.getNode("index.headimg").id).visibleToUser().findOnce();
  1248. if (null !== head && head.click()) {
  1249. if (utility.toast("访问用户首页"), this.isHome()) return engine.sleepMs(2e3, 3e3),
  1250. null !== descStartsWith("男").visibleToUser().findOnce() && (yhxb = 1),
  1251. null !== descStartsWith("女").visibleToUser().findOnce() && (yhxb = 2),
  1252. this.execBackOnce(), yhxb;
  1253. console.log("打开用户首页失败"), this.execBackOnce();
  1254. }
  1255. },
  1256. getVideoDesc() {
  1257. var vedioDesc = id(douyin.getNode("index.desc").id).visibleToUser().findOnce();
  1258. return null === vedioDesc ? "" : vedioDesc.text();
  1259. },
  1260. getVideoTitle() {
  1261. var vedioTitle = id(douyin.getNode("index.title").id).visibleToUser().findOnce();
  1262. return null === vedioTitle ? "" : vedioTitle.text();
  1263. },
  1264. getVideoMark() {
  1265. return this.getVideoDesc() + this.getVideoTitle();
  1266. }
  1267. };
  1268. let param = {
  1269. yxgs: 500,
  1270. czjg1: 3,
  1271. czjg2: 6,
  1272. gksj1: 5,
  1273. gksj2: 10,
  1274. tglv: !0,
  1275. dz: 45,
  1276. gz: 5,
  1277. pl: 35,
  1278. txdz: 60,
  1279. pldz: 80,
  1280. plhs: conf.commonts,
  1281. gjcs: ["77396094576", "60866194851"],
  1282. pltp: !0
  1283. }
  1284. let znzf = {
  1285. banben: parseFloat(context.getPackageManager().getPackageInfo("com.ss.android.ugc.aweme", 0).versionName) < 27.4,
  1286. init() {
  1287. return !(!douyin.init() || ("undefined" != typeof ENV_CONF && Object.assign(param, ENV_CONF),
  1288. 0 < param.pl && param.plhs.length < 1 ? (alert("请设置评论话术"), 1) : douyin.isRecommend() ? (utility.toast("开始任务:智能涨粉"),
  1289. engine.sleep(1), device.keepScreenDim(), douyin.popupAndClose(),
  1290. 0) : (alert("请在抖音首页运行"), 1)));
  1291. },
  1292. isUserList() {
  1293. var tab = className("androidx.appcompat.app.ActionBar$Tab").visibleToUser().selected().findOnce();
  1294. return null !== tab && (null !== tab.findOne(textContains("粉丝")) || null !== tab.findOne(textContains("关注")));
  1295. },
  1296. toUserList() {
  1297. for (; ;) {
  1298. if (sleep(2e3), this.isUserList()) return;
  1299. back(), sleep(1e3);
  1300. }
  1301. },
  1302. execUser() {
  1303. if (engine.sleep(param.czjg1, param.czjg2), !douyin.isHome()) return utility.toast("进入主页失败"),
  1304. !1;
  1305. if (null !== text("私密账号").visibleToUser().findOnce() || null !== text("帐号已被封禁").visibleToUser().findOnce()) return utility.toast("私密或已封禁账号,跳过"),
  1306. !1;
  1307. if (param.tglv && null !== className("android.widget.TextView").visibleToUser().id(douyin.getNode("user.lanv").id).findOnce()) return utility.toast("蓝v用户,跳过!"),
  1308. !1;
  1309. let fansNum = 0;
  1310. var fansNode = id(douyin.getNode("user.fansnum").id).visibleToUser().findOnce();
  1311. fansNode && (fansText = fansNode.text(), fansNum = parseFloat(fansText),
  1312. 0 <= fansText.indexOf("w") || 0 <= fansText.indexOf("万")) && (fansNum *= 1e4);
  1313. let gzNum = 0;
  1314. fansNode = id(douyin.getNode("user.gznum").id).visibleToUser().findOnce();
  1315. if (fansNode && (gzText = fansNode.text(), gzNum = parseFloat(gzText),
  1316. 0 <= gzText.indexOf("w") || 0 <= gzText.indexOf("万")) && (gzNum *= 1e4),
  1317. gzNum - fansNum < 1e3) return !1;
  1318. fansNode = textContains("作品").visibleToUser().findOnce();
  1319. let videoNum = 0;
  1320. if ((videoNum = fansNode ? parseInt(fansNode.text().replace(/[^0-9]/gi, "")) : videoNum) < 1 || isNaN(videoNum)) return utility.toast("该用户没有作品或非正常用户,跳过"),
  1321. !1;
  1322. this.banben && utility.checkProbability(param.txdz, "头像点赞") && (douyin.execTxdz(),
  1323. engine.sleepMs(1e3, 2e3)), utility.checkProbability(param.gz, "关注") && ((followBtn = id(douyin.getNode("user.followBtn").id).visibleToUser().findOnce()) ? (utility.toast("执行关注!"),
  1324. followBtn.click(), engine.sleepMs(500, 1e3), gzCount++, (followBtn = desc("更多,已展开").visibleToUser().findOne(5e3)) && (followBtn.click(),
  1325. engine.sleepMs(500, 1e3))) : utility.toast("不关注!"));
  1326. var followBtn = utility.checkProbability(param.dz, "点赞"), isPl = utility.checkProbability(param.pl, "评论");
  1327. if (followBtn || isPl) {
  1328. fansNode.selected() || (engine.boundsClick(fansNode.bounds()),
  1329. engine.sleepMs(1e3, 2e3)), engine.shortSlide();
  1330. var fansNode = id("com.ss.android.ugc.aweme:id/container").visibleToUser().find();
  1331. if (!fansNode.empty()) {
  1332. let video = fansNode[random(0, fansNode.length - 1)];
  1333. video = video.findOne(className("android.view.View")), sleep(1e3),
  1334. video && video.clickable() && video.click() && douyin.IsVideoDelay(5e3) ? (fansNode = random(param.gksj1, param.gksj2),
  1335. utility.toast("观看视频:" + fansNode + " 秒"), engine.sleep(fansNode),
  1336. followBtn ? (douyin.execLike(), dzCount++) : utility.toast("不点赞"),
  1337. isPl && douyin.canComment() ? (fansNode = utility.checkProbability(param.pldz, "评论点赞"),
  1338. douyin.sendComment(param.plhs, isPl, fansNode, param.pltp),
  1339. plCount++) : utility.toast("不评论")) : (utility.toast("打开视频失败!"),
  1340. back(), sleep(1e3));
  1341. }
  1342. }
  1343. return !0;
  1344. },
  1345. dbzhgjc(gjc) {
  1346. engine.sleepMs(1e3, 2e3), id("com.ss.android.ugc.aweme:id/et_search_kw").visibleToUser().findOne().setText(gjc),
  1347. engine.sleepMs(1e3, 2e3);
  1348. var b1 = text("搜索").visibleToUser().findOne().bounds(), b1 = (engine.boundsClick(b1),
  1349. engine.sleepMs(3e3, 4e3), text("用户").visibleToUser().findOne().bounds()), b1 = (engine.boundsClick(b1),
  1350. engine.sleepMs(3e3, 4e3), descContains(gjc).visibleToUser().findOne(5e3));
  1351. return null === b1 ? (alert("没有找到对标账号", "请检查对标账号 " + gjc + " 是否输入正确!"),
  1352. !1) : (engine.boundsClick(b1.bounds()), engine.sleepMs(3e3, 4e3),
  1353. text("粉丝").visibleToUser().findOne().parent().click(), engine.sleepMs(3e3, 4e3),
  1354. !!id("com.ss.android.ugc.aweme:id/root_layout").exists() || (alert("打开粉丝列表失败", "对标账号 " + gjc + " 粉丝列表可能设置隐私了!"),
  1355. !1));
  1356. },
  1357. run() {
  1358. if (this.init()) {
  1359. let runCount = dzCount = gzCount = plCount = 0;
  1360. var userContents = [];
  1361. let gjcsCount = 0, dyc = !0;
  1362. for (; ;) {
  1363. if (dyc && (descStartsWith("搜索").descEndsWith("按钮").visibleToUser().findOne().parent().click(),
  1364. dyc = !1, !this.dbzhgjc(param.gjcs[gjcsCount]))) break;
  1365. if (runCount >= param.yxgs) return device.cancelKeepingAwake(),
  1366. void alert("恭喜任务完成!", "本次任务共完成\n点赞" + dzCount + "次\n关注" + gzCount + "次\n评论" + plCount + "次");
  1367. let listBox = className("androidx.recyclerview.widget.RecyclerView").visibleToUser().findOne();
  1368. if (!listBox) return void utility.toast("没有找到用户列表!");
  1369. var listBoxTop = listBox.bounds().top, childCount = listBox.childCount();
  1370. for (let i = 0; i < childCount - 1; i++) {
  1371. if (runCount >= param.yxgs) return device.cancelKeepingAwake(),
  1372. void alert("恭喜任务完成!", "本次任务共完成\n点赞" + dzCount + "次\n关注" + gzCount + "次\n评论" + plCount + "次");
  1373. utility.toast("已执行用户 " + runCount + " 条,任务数" + param.yxgs);
  1374. var child = listBox.child(i);
  1375. if (null != child && !(listBoxTop >= child.bounds().top || child.findOne(desc("已关注")))) {
  1376. var userNode = child.findOne(className("android.widget.TextView"));
  1377. if (userNode) {
  1378. userNode = userNode.text();
  1379. if (!utility.isEmpty(userNode) && !userContents.includes(userNode)) {
  1380. console.log(userNode), 20 <= userContents.length && userContents.shift(),
  1381. userContents.push(userNode);
  1382. try {
  1383. child.click(), this.execUser() && runCount++;
  1384. } catch (error) {
  1385. console.log("用户操作失败:", error);
  1386. }
  1387. if (utility.toast("返回用户列表"), this.toUserList(),
  1388. engine.sleepMs(2e3, 3e3), !(listBox = className("androidx.recyclerview.widget.RecyclerView").visibleToUser().findOne())) return void utility.toast("没有找到用户列表!");
  1389. }
  1390. } else console.log("没有获取到用户信息");
  1391. }
  1392. }
  1393. if (!listBox.scrollForward()) {
  1394. if (++gjcsCount >= param.gjcs.length) {
  1395. alert("对标账号已全部运行完!", "本次任务共完成\n点赞" + dzCount + "次\n关注" + gzCount + "次\n评论" + plCount + "次");
  1396. break;
  1397. }
  1398. if (engine.sleepMs(3e3, 4e3), back(), engine.sleepMs(3e3, 4e3),
  1399. back(), engine.sleepMs(3e3, 4e3), !this.dbzhgjc(param.gjcs[gjcsCount])) break;
  1400. }
  1401. engine.sleepMs(2500, 3500);
  1402. }
  1403. }
  1404. }
  1405. };
  1406. try {
  1407. znzf.run();
  1408. } catch (error) {
  1409. utility.error(conf.packageName, error);
  1410. } finally {
  1411. engine.exit();
  1412. }