|
|
ÆßèÔĶÁ׬Ǯ×Ô¶¯Ë¢¿ò¼Ü
- // =============================================================================
- // ͨÓÃÔĶÁ׬Ǯ×Ô¶¯Ë¢¿ò¼Ü£¨Æßè/·¬ÇÑ/¿ìÒôµÈͨÓð棩
- // ƽ̨: AIWROK Android (ES5 ÑϸñÓï·¨)
- // ÔÀí: ·Ò³ÔĶÁ + ¿´¹ã¸æÁì½±Àø + ·À¼ì²âËæ»ú»¯
- // ÌØµã: ÿ¸öAppÖ»ÐèÅäÖðüÃûºÍ·Ò³·½Ïò£¬¿ò¼Ü×Ô¶¯´¦ÀíÆäÓàÂß¼
- //
- // Ö§³ÖApp:
- // 1. ÆßèС˵ com.kmxs.reader ·Ò³·½Ïò: horizontal(×óÓÒ)
- // 2. ·¬ÇÑÃâ·ÑС˵ com.dragon.read ·Ò³·½Ïò: horizontal(×óÓÒ)
- // 3. ¿ìÒô com.kuaiyin.x ·Ò³·½Ïò: vertical(ÉÏÏÂ)
- // 4. ¶¶Òô¼«ËÙ°æ com.ss.android.ugc.aweme.lite ·Ò³·½Ïò: vertical(ÉÏÏÂ)
- // 5. ×Ô¶¨ÒåApp (ÔÚAPP±íÀïÌí¼Ó¼´¿É)
- //
- // ·À¼ì²â²ßÂÔ:
- // - Ëæ»ú·Ò³¼ä¸ô (8~18Ã룬ÿ¸öÒ³Ãæ²»Í¬)
- // - Ëæ»úÍ£Áôʱ³¤ (ÔÚÒ³ÃæÉ϶àÍ£Ò»»áÔÙ·)
- // - Ëæ»ú»¬¶¯¹ì¼£ (Æðµã/Öյ㶼ÓÐÎ¢Ð¡Æ«ÒÆ)
- // - Ëæ»ú»¬¶¯ËÙ¶È (300~700msÖ®¼ä)
- // - ż¶û×ö"»Ø·"¶¯×÷ (Ä£ÄâÕæÈË»ØÍ·¿´Ò»ÏÂ)
- // - ż¶û×ö"µãÔÞ"¶¯×÷ (Ä£ÄâÕæÈË»¥¶¯)
- // - ÿ30·ÖÖÓÐÝÏ¢Ò»´Î (Ä£ÄâÕæÈËÀ뿪)
- // =============================================================================
- print.log("¨X¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨[");
- print.log("¨U ͨÓÃÔĶÁ׬Ǯ×Ô¶¯Ë¢¿ò¼Ü v1.0 ¨U");
- print.log("¨U Æßè/·¬ÇÑ/¿ìÒôµÈͨÓà | ·À¼ì²âËæ»ú»¯ ¨U");
- print.log("¨^¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨a");
- print.time();
- // =============================================================================
- // µÚÒ»²¿·Ö£ºÅäÖã¨Ö»Ðè¸ÄÕâÀï¾ÍÄÜÊÊÅäÐÂApp£©
- // =============================================================================
- var CONFIG = {
- // ====== Ñ¡ÔñÄ¿±êApp (1~4) ======
- Ä¿±êApp±àºÅ: 1,
- // ====== ÔËÐÐʱ³¤ ======
- ×ÜÔËÐзÖÖÓ: 60, // ×ܹ²Åܶà¾Ã£¨·ÖÖÓ£©
- ÿ¸ôN·ÖÖÓÐÝÏ¢: 30, // ÿÅÜN·ÖÖÓÐÝÏ¢Ò»´Î
- ÐÝÏ¢ÃëÊý: 30, // ÿ´ÎÐÝÏ¢¶àÉÙÃë
- // ====== ·Ò³²ÎÊý£¨Ëæ»ú·¶Î§£© ======
- ×îСͣÁôÃë: 8, // ÿҳ×îÉÙÍ£ÁôÃëÊý
- ×î´óÍ£ÁôÃë: 18, // ÿҳ×î¶àÍ£ÁôÃëÊý
- »¬¶¯Ê±³¤×îСºÁÃë: 300, // »¬¶¯ËÙ¶ÈÏÂÏÞ
- »¬¶¯Ê±³¤×î´óºÁÃë: 700, // »¬¶¯ËÙ¶ÈÉÏÏÞ
- // ====== ·À¼ì²â¸ÅÂÊ ======
- »Ø·¸ÅÂÊ: 0.08, // 8%¸ÅÂÊ×öÒ»´Î»Ø·¶¯×÷
- µãÔÞ¸ÅÂÊ: 0.05, // 5%¸ÅÂÊ×öÒ»´ÎË«»÷µãÔÞ
- ÐÝÏ¢¸ÅÂÊ: 0.03, // 3%¸ÅÂʶîÍâ¶àÍ£Ò»»á
- // ====== ¿´¹ã¸æÁì½±Àø ======
- ¿´¹ã¸æ¼ä¸ô·ÖÖÓ: 5, // ÿN·ÖÖÓÈ¥¿´Ò»´Î¹ã¸æÁì½±Àø
- ¹ã¸æµÈ´ýÃë: 30, // ¿´¹ã¸æµÈ´ýÃëÊý
- // ====== µ¯´°¹Ø¼ü´Ê ======
- µ¯´°¹Ø¼ü´Ê: [
- "ÎÒÖªµÀÁË", "ÖªµÀÁË", "Ôݲ»¿ªÆô", "ÒÔºóÔÙ˵", "È¡Ïû",
- "Ôݲ»¸üÐÂ", "Ï´ÎÔÙ˵", "¾Ü¾ø", "²»ÔÊÐí", "Ìø¹ý", "¹Ø±Õ",
- "Ôݲ»ÁìÈ¡", "ÉÔºóÔÙ˵", "²»ÔÙÌáʾ", "Ôݲ»Ç©µ½", "¼ÌÐøÔĶÁ",
- "Ôݲ»²Î¼Ó", "²»ÁËлл", "ÒÔºóÔÙÁì", "Ï´ÎÔÙÁì"
- ],
- // ====== ÔĶÁÒ³ÌØÕ÷ÎÄ×Ö£¨¶à¸öÂú×ãÒ»¸ö¼´ÈÏΪÔÚÔĶÁÒ³£© ======
- ÔĶÁÒ³ÌØÕ÷: ["Ŀ¼", "ÉÏÒ»ÕÂ", "ÏÂÒ»ÕÂ", "ÊéÇ©", "ÉèÖÃ", "Ò¹¼ä", "ÁÁ¶È", "×ÖÌå"],
- // ====== ģʽ ======
- ÓÅÏÈʹÓÃAgentģʽ: true,
- µ÷ÊÔģʽ: true,
- // ====== App±í£¨Ìí¼ÓÐÂAppÖ»ÐèÔÚÕâÀï¼ÓÒ»ÐУ© ======
- App±í: [
- {
- 񅧏: 1,
- Ãû³Æ: "ÆßèС˵",
- °üÃû: "com.kmxs.reader",
- ·Ò³·½Ïò: "horizontal", // horizontal=×óÓÒ·Ò³(С˵), vertical=ÉÏÏ»¬¶¯(ÊÓÆµ)
- ·Ò³ÆðµãX: 0.80, // ˮƽ·Ò³: ´ÓÓÒ²àÍù×ó»¬ (ÆðµãX) ÆßèÔĶÁÇø0~1.0
- ·Ò³ÆðµãY: 0.45, // ·Ò³ÆðµãY ±Ü¿ª¶¥²¿²Ëµ¥ºÍµ×²¿½ø¶ÈÌõ
- ·Ò³ÖÕµãX: 0.20, // ˮƽ·Ò³: ÖÕµãX
- ·Ò³ÖÕµãY: 0.45, // ·Ò³ÖÕµãY
- ¸£ÀûÒ³×ø±ê: [0.5, 0.976], // µ×²¿"¸£Àû"Tab (ʵ²âXML: centerPercent=[0.5,0.9766])
- ¹ã¸æ°´Å¥ÎÄ×Ö: "¿´ÊÓÆµÁì½ð±Ò", // ¿´¹ã¸æ°´Å¥ÉϵÄÎÄ×Ö
- Æô¶¯ºóµÈ´ýÃë: 8,
- ÔĶÁÒ³¼ì²âÎÄ×Ö: "Ŀ¼", // ÔÚÔĶÁÒ³ÄÜ¿´µ½µÄÎÄ×Ö(ÅжÏÊÇ·ñÔÚÔĶÁ½çÃæ)
- ÐèÒªÕÒÊé: true, // ÆßèÊé¼Ü¿ÉÄÜΪ¿Õ£¬ÐèҪȥÊé³ÇÕÒÊé
- Êé³ÇTab×ø±ê: [0.306, 0.976], // µ×²¿"Êé³Ç"Tab (ʵ²âXML: centerPercent=[0.3056,0.9766])
- Êé¼ÜTab×ø±ê: [0.111, 0.976], // µ×²¿"Êé¼Ü"Tab (ʵ²âXML: centerPercent=[0.1111,0.9766])
- µã»÷ÖÐÑëºô³ö²Ëµ¥: false // ÆßèÔĶÁÒ³²Ëµ¥Êdz£×¤µÄ£¬²»ÐèÒªµãÖÐÑëºô³ö/Òþ²Ø
- },
- {
- 񅧏: 2,
- Ãû³Æ: "·¬ÇÑÃâ·ÑС˵",
- °üÃû: "com.dragon.read",
- ·Ò³·½Ïò: "horizontal",
- ·Ò³ÆðµãX: 0.75,
- ·Ò³ÆðµãY: 0.50,
- ·Ò³ÖÕµãX: 0.25,
- ·Ò³ÖÕµãY: 0.50,
- ¸£ÀûÒ³×ø±ê: [0.5, 0.976],
- ¹ã¸æ°´Å¥ÎÄ×Ö: "¿´ÊÓÆµÁì½ð±Ò",
- Æô¶¯ºóµÈ´ýÃë: 8,
- ÔĶÁÒ³¼ì²âÎÄ×Ö: "Ŀ¼",
- ÐèÒªÕÒÊé: true,
- Êé³ÇTab×ø±ê: [0.3, 0.976],
- Êé¼ÜTab×ø±ê: [0.1, 0.976],
- µã»÷ÖÐÑëºô³ö²Ëµ¥: false
- },
- {
- 񅧏: 3,
- Ãû³Æ: "¿ìÒô",
- °üÃû: "com.kuaiyin.x",
- ·Ò³·½Ïò: "vertical", // ÉÏÏ»¬¶¯(¶ÌÊÓÆµÀà)
- ·Ò³ÆðµãX: 0.35, // ×ó²à»¬¶¯±Ü¿ªÈ«ÆÁ°´Å¥
- ·Ò³ÆðµãY: 0.78,
- ·Ò³ÖÕµãX: 0.35,
- ·Ò³ÖÕµãY: 0.22,
- ¸£ÀûÒ³×ø±ê: [0.5, 0.976],
- ¹ã¸æ°´Å¥ÎÄ×Ö: "¿´ÊÓÆµÁì½ð±Ò",
- Æô¶¯ºóµÈ´ýÃë: 8,
- ÔĶÁÒ³¼ì²âÎÄ×Ö: null, // ¶ÌÊÓÆµÀ಻ÐèÒª¼ì²âÔĶÁÒ³
- ÐèÒªÕÒÊé: false,
- Êé³ÇTab×ø±ê: null,
- Êé¼ÜTab×ø±ê: null,
- µã»÷ÖÐÑëºô³ö²Ëµ¥: false
- },
- {
- 񅧏: 4,
- Ãû³Æ: "¶¶Òô¼«ËÙ°æ",
- °üÃû: "com.ss.android.ugc.aweme.lite",
- ·Ò³·½Ïò: "vertical",
- ·Ò³ÆðµãX: 0.35,
- ·Ò³ÆðµãY: 0.78,
- ·Ò³ÖÕµãX: 0.35,
- ·Ò³ÖÕµãY: 0.22,
- ¸£ÀûÒ³×ø±ê: [0.9, 0.5], // ÓÒ²àºì°ü¹Ò¼þ
- ¹ã¸æ°´Å¥ÎÄ×Ö: "¿´ÊÓÆµ×¬½ð±Ò",
- Æô¶¯ºóµÈ´ýÃë: 8,
- ÔĶÁÒ³¼ì²âÎÄ×Ö: null,
- ÐèÒªÕÒÊé: false,
- Êé³ÇTab×ø±ê: null,
- Êé¼ÜTab×ø±ê: null,
- µã»÷ÖÐÑëºô³ö²Ëµ¥: false
- }
- ]
- };
- // =============================================================================
- // µÚ¶þ²¿·Ö£ºÒýÇæ£¨Agent / ÎÞ° ˫ģʽ×Ô¶¯Çл»£©
- // =============================================================================
- var Engine = {
- mode: "",
- ÆÁÄ»¿í: 1080,
- ÆÁÄ»¸ß: 2400,
- init: function() {
- print.log("\n¡¾ÒýÇæ³õʼ»¯¡¿¼ì²âģʽ...");
- if (CONFIG.ÓÅÏÈʹÓÃAgentģʽ) {
- try { if (agent.isOpen()) { this.mode = "agent"; print.log("✓ Agent´úÀíģʽ"); } } catch(e) {}
- }
- if (this.mode === "") {
- try { if (typeof auto !== 'undefined') { this.mode = "auto"; print.log("✓ ÎÞ°(Accessibility)ģʽ"); } } catch(e) {}
- }
- if (this.mode === "") {
- print.log("✗ Á½¸öģʽ¶¼²»¿ÉÓã¡Ç뿪Æô Agent »òÎÞÕϰºóÔÙÅÜ");
- return false;
- }
- try {
- if (this.mode === "agent") {
- var raw = "" + agent.shell("wm size");
- var m = raw.match(/(\d+)x(\d+)/);
- this.ÆÁÄ»¿í = m ? parseInt(m[1]) : 1080;
- this.ÆÁÄ»¸ß = m ? parseInt(m[2]) : 2400;
- } else {
- this.ÆÁÄ»¿í = screen.getScreenWidth();
- this.ÆÁÄ»¸ß = screen.getScreenHeight();
- }
- } catch(e) {
- this.ÆÁÄ»¿í = 1080;
- this.ÆÁÄ»¸ß = 2400;
- }
- print.log("✓ ÆÁÄ»³ß´ç£º" + this.ÆÁÄ»¿í + " ¡Á " + this.ÆÁÄ»¸ß);
- return true;
- },
- // Ëæ»úÕûÊý [min, max)
- randInt: function(min, max) {
- return Math.floor(min + Math.random() * (max - min));
- },
- // Ëæ»ú¸¡µã [0, 1)
- randFloat: function() {
- return Math.random();
- },
- // Ëæ»úÆ«ÒÆ£¨ÔÚ»ù×¼ÖµÉϼÓÎ¢Ð¡Ëæ»úÁ¿£©
- jitter: function(base, range) {
- return base + (Math.random() - 0.5) * range;
- },
- // ·Ò³»¬¶¯£¨ºËÐÄ·À¼ì²â£ºËæ»ú¹ì¼£ + Ëæ»úËÙ¶È + Ëæ»úÆ«ÒÆ£©
- nextPage: function(app) {
- var x1, y1, x2, y2;
- var dur = this.randInt(CONFIG.»¬¶¯Ê±³¤×îСºÁÃë, CONFIG.»¬¶¯Ê±³¤×î´óºÁÃë);
- if (app.·Ò³·½Ïò === "horizontal") {
- // ˮƽ·Ò³£º´ÓÓÒÍù×󻬣¨ÏÂÒ»Ò³£©
- x1 = this.jitter(app.·Ò³ÆðµãX, 0.04);
- y1 = this.jitter(app.·Ò³ÆðµãY, 0.08);
- x2 = this.jitter(app.·Ò³ÖÕµãX, 0.04);
- y2 = this.jitter(app.·Ò³ÖÕµãY, 0.08);
- } else {
- // ´¹Ö±·Ò³£º´ÓÏÂÍùÉÏ»¬£¨ÏÂÒ»¸öÊÓÆµ£©
- x1 = this.jitter(app.·Ò³ÆðµãX, 0.06);
- y1 = this.jitter(app.·Ò³ÆðµãY, 0.04);
- x2 = this.jitter(app.·Ò³ÖÕµãX, 0.06);
- y2 = this.jitter(app.·Ò³ÖÕµãY, 0.04);
- }
- // È·±£×ø±êÔںϷ¨·¶Î§ [0.02, 0.98]
- x1 = Math.max(0.02, Math.min(0.98, x1));
- y1 = Math.max(0.02, Math.min(0.98, y1));
- x2 = Math.max(0.02, Math.min(0.98, x2));
- y2 = Math.max(0.02, Math.min(0.98, y2));
- if (CONFIG.µ÷ÊÔģʽ) {
- print.log(" ¡ú ·Ò³ [" + app.·Ò³·½Ïò + "] (" +
- x1.toFixed(2) + "," + y1.toFixed(2) + ") ¡ú (" +
- x2.toFixed(2) + "," + y2.toFixed(2) + ") " + dur + "ms");
- }
- try {
- auto.swipPercent_v2(x1, y1, x2, y2, dur, 0);
- } catch(e) {
- // ¶µµ×£ºÓà agent.shell input swipe
- try {
- var px1 = Math.floor(this.ÆÁÄ»¿í * x1);
- var py1 = Math.floor(this.ÆÁÄ»¸ß * y1);
- var px2 = Math.floor(this.ÆÁÄ»¿í * x2);
- var py2 = Math.floor(this.ÆÁÄ»¸ß * y2);
- agent.shell("input swipe " + px1 + " " + py1 + " " + px2 + " " + py2 + " " + dur);
- } catch(e2) {
- print.log(" ⚠ ·Ò³Ê§°Ü: " + e2.message);
- }
- }
- sleep.millisecond(this.randInt(300, 600));
- // С˵ÀàApp·Ò³ºó¿ÉÄܵ¯³ö¹ã¸æ/µ¯´°£¬¹Ø±ÕËü
- if (app.µã»÷ÖÐÑëºô³ö²Ëµ¥) {
- // ²»ÔÙµãÖÐÑëÒþ²Ø²Ëµ¥¡ª¡ªÆßèÔĶÁÒ³²Ëµ¥Êdz£×¤µÄ£¨ÉÏÒ»ÕÂ/ÏÂÒ»ÕÂ/Ŀ¼Ôڵײ¿£©
- // Ö»¹Ø±Õ¿ÉÄܵ¯³öµÄ¹ã¸æµ¯´°
- this.closePopup();
- }
- },
- // »Ø·£¨Ä£ÄâÕæÈË»ØÍ·¿´Ò»ÏÂÉÏÒ»Ò³£©
- backPage: function(app) {
- print.log(" ↩ »Ø·Ò»Ò³£¨Ä£ÄâÕæÈË»ØÍ·£©");
- var x1, y1, x2, y2;
- if (app.·Ò³·½Ïò === "horizontal") {
- // ˮƽ»Ø·£º´Ó×óÍùÓÒ»¬£¨ÉÏÒ»Ò³£©
- x1 = this.jitter(app.·Ò³ÖÕµãX, 0.04);
- y1 = this.jitter(app.·Ò³ÆðµãY, 0.08);
- x2 = this.jitter(app.·Ò³ÆðµãX, 0.04);
- y2 = this.jitter(app.·Ò³ÖÕµãY, 0.08);
- } else {
- // ´¹Ö±»Ø·£º´ÓÉÏÍùÏ»¬£¨ÉÏÒ»¸öÊÓÆµ£©
- x1 = this.jitter(app.·Ò³ÖÕµãX, 0.06);
- y1 = this.jitter(app.·Ò³ÖÕµãY, 0.04);
- x2 = this.jitter(app.·Ò³ÆðµãX, 0.06);
- y2 = this.jitter(app.·Ò³ÆðµãY, 0.04);
- }
- try {
- auto.swipPercent_v2(x1, y1, x2, y2, this.randInt(400, 800), 0);
- } catch(e) {
- try {
- var px1 = Math.floor(this.ÆÁÄ»¿í * x1);
- var py1 = Math.floor(this.ÆÁÄ»¸ß * y1);
- var px2 = Math.floor(this.ÆÁÄ»¿í * x2);
- var py2 = Math.floor(this.ÆÁÄ»¸ß * y2);
- agent.shell("input swipe " + px1 + " " + py1 + " " + px2 + " " + py2 + " 600");
- } catch(e2) {}
- }
- sleep.millisecond(this.randInt(500, 1000));
- },
- // Ë«»÷µãÔÞ£¨Ä£ÄâÕæÈËË«»÷ÆÁÄ»µãÔÞ£©
- doubleTap: function() {
- print.log(" ❤ Ë«»÷µãÔÞ");
- var x = this.jitter(0.5, 0.1);
- var y = this.jitter(0.4, 0.1);
- try {
- auto.clickPercent(x, y);
- sleep.millisecond(80);
- auto.clickPercent(x, y);
- } catch(e) {
- try {
- var px = Math.floor(this.ÆÁÄ»¿í * x);
- var py = Math.floor(this.ÆÁÄ»¸ß * y);
- agent.shell("input tap " + px + " " + py);
- sleep.millisecond(80);
- agent.shell("input tap " + px + " " + py);
- } catch(e2) {}
- }
- sleep.millisecond(this.randInt(300, 600));
- },
- // µã»÷°Ù·Ö±È×ø±ê
- clickPercent: function(px, py) {
- try {
- auto.clickPercent(px, py);
- } catch(e) {
- try {
- agent.shell("input tap " + Math.floor(this.ÆÁÄ»¿í * px) + " " + Math.floor(this.ÆÁÄ»¸ß * py));
- } catch(e2) {}
- }
- sleep.millisecond(this.randInt(600, 1000));
- },
- // ·µ»Ø¼ü
- back: function() {
- try {
- if (this.mode === "agent") agent.shell("input keyevent 4");
- else auto.back();
- } catch(e) {}
- sleep.second(1);
- },
- // Home¼ü
- home: function() {
- try {
- if (this.mode === "agent") agent.shell("input keyevent 3");
- else auto.home();
- } catch(e) {}
- sleep.second(2);
- },
- // Æô¶¯ App
- openApp: function(pkg, name) {
- print.log(" ¡ú Æô¶¯£º" + name + "£¨" + pkg + "£©");
- try {
- app.resetApp(pkg);
- print.log("✓ Æô¶¯APP£º" + pkg);
- return true;
- } catch(e) {
- print.log(" ⚠ app.resetApp ʧ°Ü£º" + e.message + "£¬³¢ÊÔ monkey ¶µµ×");
- try {
- agent.shell("monkey -p " + pkg + " -c android.intent.category.LAUNCHER 1");
- return true;
- } catch(e2) {
- print.log(" ✗ Æô¶¯Íêȫʧ°Ü£º" + e2.message);
- return false;
- }
- }
- },
- // ¹Ø±Õµ¯´°£¨È«Óà nodeSearch£¬²»ÒÀÀµ findText£©
- closePopup: function() {
- var words = CONFIG.µ¯´°¹Ø¼ü´Ê;
- try {
- var nodes = auto.nodeSearch(1000);
- if (!nodes) return false;
- // µÚÒ»ÂÖ£º¾«È·Æ¥Å乨¼ü´Ê
- for (var i = 0; i < words.length; i++) {
- try {
- var filtered = nodes.text(words[i]);
- if (filtered && filtered.count() > 0) {
- var node = filtered.getNode(0);
- if (node && this.clickNode(node, words[i], "µ¯´°")) {
- return true;
- }
- }
- } catch(e2) {}
- }
- // µÚ¶þÂÖ£ºÄ£ºýÆ¥Å乨¼ü´Ê
- for (var j = 0; j < words.length; j++) {
- try {
- var inc = nodes.textIncludes(words[j]);
- if (inc && inc.count() > 0) {
- var node2 = inc.getNode(0);
- if (node2 && this.clickNode(node2, words[j], "Ä£ºýµ¯´°")) {
- return true;
- }
- }
- } catch(e3) {}
- }
- // µÚÈýÂÖ£º¹Ø±ÕÐü¸¡¹ã¸æ/ºì°ü£¨Í¨¹ý½ÚµãID£¬´ø°üÃûǰ׺£©
- var pkg = "";
- try { pkg = app.getTopPackName() || ""; } catch(e5) {}
- var closeIds = [
- (pkg ? pkg + ":id/" : "") + "close_red_packet",
- (pkg ? pkg + ":id/" : "") + "close",
- (pkg ? pkg + ":id/" : "") + "iv_close",
- (pkg ? pkg + ":id/" : "") + "btn_close",
- (pkg ? pkg + ":id/" : "") + "img_close",
- "close_red_packet", "close", "iv_close", "btn_close", "img_close"
- ];
- for (var k = 0; k < closeIds.length; k++) {
- try {
- var idNode = nodes.id(closeIds[k]);
- if (idNode && idNode.count() > 0) {
- var node3 = idNode.getNode(0);
- if (node3 && this.clickNode(node3, closeIds[k], "¸¡´°ID")) {
- return true;
- }
- }
- } catch(e4) {}
- }
- } catch(e) {
- if (CONFIG.µ÷ÊÔģʽ) print.log(" - µ¯´°¼ì²âÒì³£: " + e.message);
- }
- return false;
- },
- // ²éÕÒ²¢µã»÷ÎÄ×Ö£¨¾«È·¡úÄ£ºý¡údescÆ¥Å䣬ÿ¸ö¶¼ÏÈnode.clickÔÙ×ø±êfallback£©
- findAndClickText: function(keyword) {
- try {
- var nodes = auto.nodeSearch(2000);
- if (!nodes) return false;
- // 1. ¾«È·Æ¥Åä text
- try {
- var filtered = nodes.text(keyword);
- if (filtered && filtered.count() > 0) {
- var node = filtered.getNode(0);
- if (node && this.clickNode(node, keyword)) return true;
- }
- } catch(e1) {}
- // 2. Ä£ºýÆ¥Åä textIncludes
- try {
- var inc = nodes.textIncludes(keyword);
- if (inc && inc.count() > 0) {
- var node2 = inc.getNode(0);
- if (node2 && this.clickNode(node2, keyword)) return true;
- }
- } catch(e2) {}
- // 3. desc ¾«È·Æ¥Åä
- try {
- var descNode = nodes.desc(keyword);
- if (descNode && descNode.count() > 0) {
- var node3 = descNode.getNode(0);
- if (node3 && this.clickNode(node3, keyword, "desc")) return true;
- }
- } catch(e3) {}
- // 4. descIncludes Ä£ºýÆ¥Åä
- try {
- var descInc = nodes.descIncludes(keyword);
- if (descInc && descInc.count() > 0) {
- var node4 = descInc.getNode(0);
- if (node4 && this.clickNode(node4, keyword, "descÄ£ºý")) return true;
- }
- } catch(e4) {}
- } catch(e) {
- if (CONFIG.µ÷ÊÔģʽ) print.log(" - findAndClickText Òì³£: " + e.message);
- }
- return false;
- },
- // µã»÷½Úµã£¨Ïȳ¢ÊÔnode.click()£¬Ê§°ÜÔòÓÃ×ø±êµã»÷£©
- // AIWROK½Úµã¶ÔÏóµÄ text/centerPercent/center ¶¼ÊÇÊôÐÔ²»ÊÇ·½·¨£¬ÓÃnode.xxx²»ÊÇnode.xxx()
- clickNode: function(node, label, matchType) {
- matchType = matchType || "text";
- try {
- // Ïȳ¢ÊÔ node.click()
- node.click();
- print.log(" ✓ µã»÷" + matchType + "¡¾" + label + "¡¿(node.click)");
- sleep.second(1);
- return true;
- } catch(e) {
- // node.click() ʧ°Ü£¬ÓÃ×ø±êµã»÷
- try {
- // »ñÈ¡½ÚµãµÄ centerPercent ÊôÐÔ£¨×¢Ò⣺ÊÇÊôÐÔ²»ÊÇ·½·¨£©
- var cp = null;
- try { cp = node.centerPercent; } catch(e3) {}
- if (cp) {
- // centerPercent ¸ñʽ "[0.5,0.85]"
- var m = ("" + cp).match(/([\d.]+),([\d.]+)/);
- if (m) {
- var px = parseFloat(m[1]);
- var py = parseFloat(m[2]);
- this.clickPercent(px, py);
- print.log(" ✓ ×ø±êµã»÷" + matchType + "¡¾" + label + "¡¿(" + px + "," + py + ")");
- return true;
- }
- }
- // ¶µµ×£ºÓà center ÊôÐÔ
- var ct = null;
- try { ct = node.center; } catch(e4) {}
- if (ct) {
- var m2 = ("" + ct).match(/([\d.]+),([\d.]+)/);
- if (m2) {
- var cx = parseInt(m2[1]);
- var cy = parseInt(m2[2]);
- var px2 = cx / this.ÆÁÄ»¿í;
- var py2 = cy / this.ÆÁÄ»¸ß;
- this.clickPercent(px2, py2);
- print.log(" ✓ ×ø±êµã»÷" + matchType + "¡¾" + label + "¡¿(" + px2 + "," + py2 + ")");
- return true;
- }
- }
- // ¶µµ×2£ºÓà boundsPercent ÊôÐÔ
- var bp = null;
- try { bp = node.boundsPercent; } catch(e5) {}
- if (bp) {
- // boundsPercent ¸ñʽ "[0.1,0.2][0.5,0.8]" È¡ÖÐÐÄ
- var m3 = ("" + bp).match(/\[([\d.]+),([\d.]+)\]\[([\d.]+),([\d.]+)\]/);
- if (m3) {
- var px3 = (parseFloat(m3[1]) + parseFloat(m3[3])) / 2;
- var py3 = (parseFloat(m3[2]) + parseFloat(m3[4])) / 2;
- this.clickPercent(px3, py3);
- print.log(" ✓ ×ø±êµã»÷" + matchType + "¡¾" + label + "¡¿(" + px3 + "," + py3 + ")");
- return true;
- }
- }
- } catch(e2) {
- if (CONFIG.µ÷ÊÔģʽ) print.log(" - clickNode×ø±êfallbackҲʧ°Ü: " + e2.message);
- }
- }
- return false;
- },
- // Åжϵ±Ç°ÊÇ·ñÔÚÔĶÁÒ³/ÊÓÆµÒ³
- // ÓÅÏÈÓÃÔĶÁÒ³ÌØÓеÄID¼ì²â£¨×î׼ȷ£©£¬ÎÄ×ÖÌØÕ÷Ö»×÷Ϊ¸¨Öú
- isOnReadingPage: function(app) {
- if (!app.ÔĶÁÒ³¼ì²âÎÄ×Ö) return true; // ²»ÐèÒª¼ì²âµÄÖ±½Ó·µ»Øtrue
- try {
- var nodes = auto.nodeSearch(1500);
- if (!nodes) return true; // nodeSearchʧ°Üʱ²»×è¶ÏÁ÷³Ì
- // 1. ÓÅÏȼì²âÔĶÁÒ³ÌØÓеÄID£¨×î׼ȷ£¬²»»áÎóÅУ©
- try {
- var pkg = app.°üÃû;
- var ids = [
- pkg + ":id/read_progress_layout",
- pkg + ":id/book_directory",
- pkg + ":id/btn_progress_left",
- pkg + ":id/btn_progress_right",
- pkg + ":id/read_blank_area",
- pkg + ":id/read_page_container",
- pkg + ":id/read_view",
- pkg + ":id/tv_read_progress"
- ];
- for (var j = 0; j < ids.length; j++) {
- var idNode = nodes.id(ids[j]);
- if (idNode && idNode.count() > 0) return true;
- }
- } catch(e3) {}
- // 2. ÔÙÓÃÎÄ×ÖÌØÕ÷¸¨ÖúÅжϣ¨×¢Ò⣺ҪͬʱÂú×ã¶à¸öÌØÕ÷²ÅË㣬±ÜÃâÎóÅУ©
- var matchCount = 0;
- var features = CONFIG.ÔĶÁÒ³ÌØÕ÷;
- for (var i = 0; i < features.length; i++) {
- try {
- var matched = nodes.text(features[i]);
- if (matched && matched.count() > 0) {
- matchCount++;
- // ÖÁÉÙÆ¥Åä2¸öÔĶÁÒ³ÌØÕ÷ÎÄ×Ö²ÅÈ϶¨£¨¼õÉÙÎóÅУ©
- if (matchCount >= 2) return true;
- }
- } catch(e) {}
- }
- // 3. ¼ì²âÖ÷¼ì²âÎÄ×Ö + ÖÁÉÙ1¸öÆäËûÌØÕ÷
- try {
- var main = nodes.text(app.ÔĶÁÒ³¼ì²âÎÄ×Ö);
- if (main && main.count() > 0 && matchCount >= 1) return true;
- } catch(e2) {}
- return false;
- } catch(e) {
- return true; // ¼ì²âʧ°Üʱ¼ÙÉèÔÚÔĶÁÒ³£¨²»ÖжÏÁ÷³Ì£©
- }
- },
- // µÈ´ýÒ»¶Îʱ¼ä£¬ÆÚ¼äÖÜÆÚÐԹرյ¯´°
- smartSleep: function(totalSec, intervalSec) {
- var remain = totalSec;
- while (remain > 0) {
- var step = Math.min(intervalSec, remain);
- sleep.second(step);
- remain -= step;
- this.closePopup();
- }
- }
- };
- // =============================================================================
- // µÚÈý²¿·Ö£ºÔĶÁ׬ǮºËÐÄÄ£¿é
- // =============================================================================
- var ReadingBot = {
- app: null,
- totalReads: 0, // ×Ü·Ò³´ÎÊý
- totalAds: 0, // ¿´¹ã¸æ´ÎÊý
- totalPopups: 0, // ¹Øµ¯´°´ÎÊý
- totalBackReads: 0, // »Ø·´ÎÊý
- totalLikes: 0, // µãÔÞ´ÎÊý
- totalRests: 0, // ÐÝÏ¢´ÎÊý
- startTime: 0,
- lastAdTime: 0, // Éϴο´¹ã¸æµÄʱ¼ä´Á
- run: function(app) {
- this.app = app;
- this.startTime = Date.now();
- this.lastAdTime = this.startTime;
- var maxMs = CONFIG.×ÜÔËÐзÖÖÓ * 60 * 1000;
- print.log("\n¨X¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T ¿ªÊ¼ÔĶÁ׬Ǯ ¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨[");
- print.log(" ¡¤ App£º" + app.Ãû³Æ + "£¨" + app.°üÃû + "£©");
- print.log(" ¡¤ ·Ò³·½Ïò£º" + app.·Ò³·½Ïò);
- print.log(" ¡¤ ×Üʱ³¤£º" + CONFIG.×ÜÔËÐзÖÖÓ + " ·ÖÖÓ");
- print.log(" ¡¤ Í£Áô£º" + CONFIG.×îСͣÁôÃë + "~" + CONFIG.×î´óÍ£ÁôÃë + " Ãë");
- print.log(" ¡¤ ¿´¹ã¸æ¼ä¸ô£º" + CONFIG.¿´¹ã¸æ¼ä¸ô·ÖÖÓ + " ·ÖÖÓ");
- print.log("¨^¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨a");
- // 1. Æô¶¯App
- print.log("\n[²½Öè1] Æô¶¯App...");
- if (!Engine.openApp(app.°üÃû, app.Ãû³Æ)) {
- print.log("✗ Æô¶¯Ê§°Ü£¬Í˳ö");
- return;
- }
- sleep.second(app.Æô¶¯ºóµÈ´ýÃë || 8);
- Engine.closePopup();
- // 2. È·±£ÔÚÔĶÁÒ³/ÊÓÆµÒ³
- print.log("[²½Öè2] È·ÈÏÔĶÁÒ³Ãæ...");
- if (app.ÐèÒªÕÒÊé && !Engine.isOnReadingPage(app)) {
- // Êé¼Ü¿ÉÄÜΪ¿Õ»ò²»ÔÚÔĶÁÒ³£¬ÐèÒªÕÒÒ»±¾Êé
- print.log(" ¡ú ²»ÔÚÔĶÁÒ³£¬ÐèÒªÕÒÒ»±¾Êé½øÈëÔĶÁ...");
- this.findBookAndRead(app);
- } else if (!Engine.isOnReadingPage(app)) {
- // ²»ÐèÒªÕÒÊéµÄApp£¨Èç¶ÌÊÓÆµ£©£¬µãÖÐÑë½øÈë
- print.log(" ⚠ ²»ÔÚÔĶÁÒ³£¬³¢ÊÔµã»÷ÆÁÄ»ÖÐÑë½øÈë...");
- Engine.clickPercent(0.5, 0.5);
- sleep.second(2);
- Engine.closePopup();
- }
- if (Engine.isOnReadingPage(app)) {
- print.log("✓ ÒѽøÈëÔĶÁÒ³Ãæ");
- } else {
- print.log("⚠ δȷÈÏÔÚÔĶÁÒ³£¬µ«ÈÔ¼ÌÐø³¢ÊÔ·Ò³...");
- }
- // 3. Ö÷Ñ»·
- print.log("\n[²½Öè3] ¿ªÊ¼×Ô¶¯·Ò³ÔĶÁ...\n");
- while ((Date.now() - this.startTime) < maxMs) {
- var elapsedMin = ((Date.now() - this.startTime) / 60000).toFixed(1);
- var remainMin = (CONFIG.×ÜÔËÐзÖÖÓ - elapsedMin).toFixed(1);
- // === A. ¼ì²éÊÇ·ñ¸ÃÐÝÏ¢ÁË ===
- if (CONFIG.ÿ¸ôN·ÖÖÓÐÝÏ¢ > 0 &&
- (Date.now() - this.startTime) > CONFIG.ÿ¸ôN·ÖÖÓ * 60 * 1000 * (this.totalRests + 1)) {
- this.totalRests++;
- var restSec = Engine.randInt(CONFIG.ÐÝÏ¢ÃëÊý, CONFIG.ÐÝÏ¢ÃëÊý + 20);
- print.log("\n[" + elapsedMin + "m] ☕ µÚ" + this.totalRests + "´ÎÐÝÏ¢ " + restSec + "Ãë");
- Engine.smartSleep(restSec, 10);
- print.log(" ✓ ÐÝÏ¢Íê±Ï£¬¼ÌÐøÔĶÁ");
- continue;
- }
- // === B. ¼ì²éÊÇ·ñ¸Ã¿´¹ã¸æÁË ===
- var sinceAd = Date.now() - this.lastAdTime;
- if (sinceAd >= CONFIG.¿´¹ã¸æ¼ä¸ô·ÖÖÓ * 60 * 1000) {
- this.watchAd();
- this.lastAdTime = Date.now();
- // ¿´Íê¹ã¸æºóÈ·±£»Øµ½ÔĶÁÒ³
- this.ensureReadingPage();
- continue;
- }
- // === C. Ëæ»úÍ£Áô¿´µ±Ç°Ò³ ===
- var staySec = Engine.randInt(CONFIG.×îСͣÁôÃë, CONFIG.×î´óÍ£ÁôÃë);
- // С¸ÅÂʶîÍâ¶àÍ£Ò»»á£¨Ä£ÄâÕæÈ˱»ÄÚÈÝÎüÒý£©
- if (Engine.randFloat() < CONFIG.ÐÝÏ¢¸ÅÂÊ) {
- staySec += Engine.randInt(10, 30);
- if (CONFIG.µ÷ÊÔģʽ) print.log(" 📖 Õâ¶ÎÄÚÈݲ»´í£¬¶à¿´ " + (staySec - CONFIG.×îСͣÁôÃë) + " Ãë");
- }
- if (CONFIG.µ÷ÊÔģʽ) {
- print.log("[" + elapsedMin + "m] µÚ" + (this.totalReads + 1) + "Ò³ Í£Áô" + staySec + "s (Ê£" + remainMin + "m)");
- } else if ((this.totalReads % 10) === 0) {
- print.log("[" + elapsedMin + "m] ÒÑ·" + this.totalReads + "Ò³ ¹ã¸æ" + this.totalAds + "´Î µ¯´°" + this.totalPopups + "´Î");
- }
- // Í£ÁôÆÚ¼äÿ5Ãë¹ØÒ»´Îµ¯´°
- Engine.smartSleep(staySec, 5);
- // === D. Ëæ»ú·À¼ì²â¶¯×÷ ===
- var dice = Engine.randFloat();
- if (dice < CONFIG.»Ø·¸ÅÂÊ) {
- // С¸ÅÂʻطһҳ
- this.totalBackReads++;
- Engine.backPage(this.app);
- sleep.second(Engine.randInt(3, 6));
- // ÔÙ·»ØÀ´
- Engine.nextPage(this.app);
- this.totalReads++;
- } else if (dice < CONFIG.»Ø·¸ÅÂÊ + CONFIG.µãÔÞ¸ÅÂÊ) {
- // С¸ÅÂÊË«»÷µãÔÞ
- this.totalLikes++;
- Engine.doubleTap();
- } else {
- // Õý³£·Ò³
- Engine.nextPage(this.app);
- this.totalReads++;
- }
- // ÿ20Ò³¹ØÒ»´Îµ¯´°
- if ((this.totalReads % 20) === 0) {
- if (Engine.closePopup()) this.totalPopups++;
- }
- // ÿ50ҳȷ±£ÔÚÔĶÁÒ³
- if ((this.totalReads % 50) === 0) {
- if (!Engine.isOnReadingPage(this.app)) {
- print.log(" ⚠ Æ«ÀëÔĶÁÒ³£¬³¢ÊÔ»Ö¸´...");
- Engine.back();
- sleep.second(2);
- if (!Engine.isOnReadingPage(this.app)) {
- Engine.clickPercent(0.5, 0.5);
- sleep.second(2);
- }
- Engine.closePopup();
- }
- }
- }
- // 4. ½áÊøÍ³¼Æ
- var totalMin = ((Date.now() - this.startTime) / 60000).toFixed(1);
- print.log("\n¨X¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T ÔĶÁ½áÊø ¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨[");
- print.log("¨U ×Ü·Ò³£º" + this.totalReads + " ´Î");
- print.log("¨U »Ø·´ÎÊý£º" + this.totalBackReads + " ´Î");
- print.log("¨U µãÔÞ´ÎÊý£º" + this.totalLikes + " ´Î");
- print.log("¨U ¿´¹ã¸æ£º" + this.totalAds + " ´Î");
- print.log("¨U ¹Øµ¯´°£º" + this.totalPopups + " ´Î");
- print.log("¨U ÐÝÏ¢´ÎÊý£º" + this.totalRests + " ´Î");
- print.log("¨U ×Üʱ³¤£º" + totalMin + " ·ÖÖÓ");
- print.log("¨^¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨a");
- Engine.home();
- },
- // ÕÒÒ»±¾Êé½øÈëÔĶÁÒ³Ãæ£¨Æßè/·¬ÇѵÈС˵ÀàAppÓã©
- // »ùÓÚʵ²âXML½Úµã½á¹¹±àд£¬Ö§³ÖÖØÊԺͶà²ßÂÔfallback
- findBookAndRead: function(app) {
- var maxRetry = 4; // ×î¶à³¢ÊÔ4±¾Êé
- var readBtns = ["¿ªÊ¼ÔĶÁ", "Ãâ·ÑÔĶÁ", "Á¢¼´ÔĶÁ", "¼ÌÐøÔĶÁ", "Ãâ·Ñ¶Á", "¿ªÊ¼Ãâ·Ñ¶Á"];
- var addBtns = ["¼ÓÈëÊé¼Ü", "Ìí¼Óµ½Êé¼Ü", "ÊÕ²Ø"];
- for (var retry = 0; retry < maxRetry; retry++) {
- print.log("\n [ÕÒÊé] === µÚ" + (retry + 1) + "/" + maxRetry + "ÂÖ ===");
- try {
- // 0. ÒÑÔÚÔĶÁÒ³ÔòÖ±½Ó·µ»Ø
- if (Engine.isOnReadingPage(app)) {
- print.log(" [ÕÒÊé] ✓ ÒÑÔÚÔĶÁÒ³£¬ÎÞÐèÕÒÊé");
- return true;
- }
- // 1. È·±£ÔÚÊé³ÇÒ³£¨µãÊé³ÇTab£©
- if (retry === 0 && app.Êé³ÇTab×ø±ê) {
- print.log(" [ÕÒÊé] 1. µã»÷Êé³ÇTab...");
- Engine.clickPercent(app.Êé³ÇTab×ø±ê[0], app.Êé³ÇTab×ø±ê[1]);
- sleep.second(3);
- Engine.closePopup();
- }
- // 2. µã»÷Ò»±¾Ê飺ÓÅÏÈÓýڵãID£¬¶µµ×ÓÃ×ø±ê
- var bookClicked = false;
- var bookTitle = "";
- // ²ßÂÔA: Óà tv_book_title ½Úµãµã»÷£¨Í¨¹ý×ø±êfallbackÈ·±£µã»÷³É¹¦£©
- try {
- var nodes = auto.nodeSearch(2000);
- if (nodes) {
- var titleNodes = nodes.id(app.°üÃû + ":id/tv_book_title");
- if (titleNodes && titleNodes.count() > 0) {
- var idx = Math.min(retry, titleNodes.count() - 1);
- var titleNode = titleNodes.getNode(idx);
- if (titleNode) {
- // AIWROK½ÚµãtextÊÇÊôÐÔ²»ÊÇ·½·¨
- bookTitle = titleNode.text || ("Êé" + idx);
- // tv_book_title ±¾Éí clickable=false£¬Óà clickNode ×ø±êfallback
- if (Engine.clickNode(titleNode, bookTitle, "ÊéÃû")) {
- print.log(" [ÕÒÊé] 2A. µã»÷ÊéÃû[" + bookTitle + "] idx=" + idx);
- bookClicked = true;
- }
- }
- }
- }
- } catch(e2a) {
- if (CONFIG.µ÷ÊÔģʽ) print.log(" [ÕÒÊé] 2AÒì³£: " + e2a.message);
- }
- // ²ßÂÔB: Óà rank_book_cover ½Úµãµã»÷
- if (!bookClicked) {
- try {
- var nodes2 = auto.nodeSearch(2000);
- if (nodes2) {
- var coverIds = [
- app.°üÃû + ":id/rank_book_cover",
- "rank_book_cover",
- "book_cover", "iv_cover", "item_book"
- ];
- for (var ci = 0; ci < coverIds.length; ci++) {
- try {
- var coverNodes = nodes2.id(coverIds[ci]);
- if (coverNodes && coverNodes.count() > 0) {
- var cIdx = Math.min(retry, coverNodes.count() - 1);
- var coverNode = coverNodes.getNode(cIdx);
- if (coverNode && Engine.clickNode(coverNode, "·âÃæ" + cIdx, "Êé¼®")) {
- print.log(" [ÕÒÊé] 2B. µã»÷·âÃæ id=" + coverIds[ci] + " idx=" + cIdx);
- bookClicked = true;
- break;
- }
- }
- } catch(e2b2) {}
- }
- }
- } catch(e2b) {
- if (CONFIG.µ÷ÊÔģʽ) print.log(" [ÕÒÊé] 2BÒì³£: " + e2b.message);
- }
- }
- // ²ßÂÔC: ÓÃ×ø±êµã»÷²»Í¬µÄÊé
- // XMLʵ²â: µÚ1±¾Êé center=[0.1287,0.3932], µÚ5±¾Êé center=[0.7148,0.3932]
- // ´¹Ö±·½Ïò¼ä¸ôÔ¼0.1187 (0.3932¡ú0.512¡ú0.6307¡ú0.7495)
- if (!bookClicked) {
- var bookPositions = [
- [0.13, 0.39], [0.13, 0.51], [0.13, 0.63], [0.13, 0.75],
- [0.71, 0.39], [0.71, 0.51], [0.71, 0.63], [0.71, 0.75]
- ];
- var posIdx = retry % bookPositions.length;
- print.log(" [ÕÒÊé] 2C. ×ø±êµã»÷ÍÆ¼öÊé (" + bookPositions[posIdx][0] + "," + bookPositions[posIdx][1] + ")");
- Engine.clickPercent(bookPositions[posIdx][0], bookPositions[posIdx][1]);
- bookClicked = true;
- }
- if (!bookClicked) {
- print.log(" [ÕÒÊé] ⚠ ÎÞ·¨ÕÒµ½¿Éµã»÷µÄÊé¼®£¬ÖØÊÔ...");
- sleep.second(2);
- continue;
- }
- // 3. µÈ´ýÒ³ÃæÌø×ª£¬È»ºó¹Ø±Õµ¯´°
- sleep.second(3);
- Engine.closePopup();
- // 4. ¼ì²éÊÇ·ñÖ±½Ó½øÈëÁËÔĶÁÒ³£¨ÓÐЩApp»áÖ±½Ó´ò¿ª£©
- if (Engine.isOnReadingPage(app)) {
- print.log(" [ÕÒÊé] ✓ Ö±½Ó½øÈëÔĶÁÒ³");
- return true;
- }
- // 5. ÔÚÊé¼®ÏêÇéÒ³ÕÒ"¿ªÊ¼ÔĶÁ"°´Å¥»ò"×󻬿ªÊ¼ÔĶÁ"Ìáʾ
- print.log(" [ÕÒÊé] 3. ²éÕÒÔĶÁÈë¿Ú...");
- var found = false;
- // 5a. Ïȼì²âÊÇ·ñÓÐ"×󻬿ªÊ¼ÔĶÁ"Ìáʾ£¨ÆßÃ¨ÌØÓУ©
- try {
- var nodesTip = auto.nodeSearch(2000);
- if (nodesTip) {
- // ÆßèÏêÇéÒ³×󻬽øÈëÔĶÁ
- var tipNode = nodesTip.id(app.°üÃû + ":id/tv_tip1");
- if (tipNode && tipNode.count() > 0) {
- print.log(" [ÕÒÊé] ¼ì²âµ½¡¾×󻬿ªÊ¼ÔĶÁ¡¿Ìáʾ£¬Ö´ÐÐ×ó»¬ÊÖÊÆ...");
- // ×󻬣º´ÓÓÒ(0.8)µ½×ó(0.2)£¬ÔÚÆÁÄ»Öв¿
- auto.swipPercent_v2(0.8, 0.5, 0.2, 0.5, 500, 0);
- sleep.second(3);
- Engine.closePopup();
- if (Engine.isOnReadingPage(app)) {
- print.log(" [ÕÒÊé] ✓ ×󻬺ó½øÈëÔĶÁÒ³");
- return true;
- }
- found = true; // ¼ÙÉè×󻬳ɹ¦ÁË
- }
- }
- } catch(e5a) {
- if (CONFIG.µ÷ÊÔģʽ) print.log(" [ÕÒÊé] 5a×󻬼ì²âÒì³£: " + e5a.message);
- }
- // 5b. ¾«È·Æ¥ÅäÔĶÁ°´Å¥ÎÄ×Ö
- if (!found) {
- for (var i = 0; i < readBtns.length; i++) {
- if (Engine.findAndClickText(readBtns[i])) {
- print.log(" [ÕÒÊé] ✓ µã»÷ÁË¡¾" + readBtns[i] + "¡¿");
- found = true;
- break;
- }
- }
- }
- // 5c. Ä£ºýÆ¥Å䣨Æßè°´Å¥¿ÉÄܺ¬Í¼±ê·ûºÅ£©
- if (!found) {
- var readKeywords = ["Ãâ·Ñ¶Á", "¿ªÊ¼¶Á", "Á¢¼´¶Á", "ÔĶÁ", "×ó»¬"];
- try {
- var nodes3 = auto.nodeSearch(2000);
- if (nodes3) {
- for (var ri = 0; ri < readKeywords.length; ri++) {
- try {
- var inc = nodes3.textIncludes(readKeywords[ri]);
- if (inc && inc.count() > 0) {
- var rn = inc.getNode(0);
- if (rn && Engine.clickNode(rn, readKeywords[ri], "Ä£ºýÔĶÁ")) {
- print.log(" [ÕÒÊé] ✓ Ä£ºýµã»÷¡¾" + readKeywords[ri] + "¡¿");
- found = true;
- break;
- }
- }
- } catch(e3) {}
- }
- }
- } catch(e3b) {}
- }
- // 5d. Èç¹ûÕÒµ½"×ó»¬"ÎÄ×Öµ«Ö®Ç°Ã»´¦Àí£¬×ö×ó»¬ÊÖÊÆ
- if (!found) {
- try {
- var nodes4 = auto.nodeSearch(2000);
- if (nodes4) {
- var swipeTip = nodes4.textIncludes("×ó»¬");
- if (swipeTip && swipeTip.count() > 0) {
- print.log(" [ÕÒÊé] ¼ì²âµ½¡¾×󻬡¿ÎÄ×Ö£¬Ö´ÐÐ×ó»¬ÊÖÊÆ...");
- auto.swipPercent_v2(0.8, 0.5, 0.2, 0.5, 500, 0);
- sleep.second(3);
- Engine.closePopup();
- found = true;
- }
- }
- } catch(e5d) {}
- }
- // 5e. ¶µµ×£ºÈç¹ûÒÔÉ϶¼Ã»ÕÒµ½£¬Ïȳ¢ÊÔ×󻬣¨Æßè×î³£¼ûµÄÈë¿Ú£©£¬ÔÙ³¢ÊÔµãµ×²¿
- if (!found) {
- print.log(" [ÕÒÊé] 3b. ³¢ÊÔ×ó»¬ÊÖÊÆ½øÈëÔĶÁ...");
- auto.swipPercent_v2(0.8, 0.5, 0.2, 0.5, 500, 0);
- sleep.second(3);
- Engine.closePopup();
- if (Engine.isOnReadingPage(app)) {
- print.log(" [ÕÒÊé] ✓ ×󻬺ó½øÈëÔĶÁÒ³");
- return true;
- }
- // ×󻬲»ÐУ¬ÔÙÊÔµãµ×²¿³£¼û°´Å¥Î»ÖÃ
- print.log(" [ÕÒÊé] 3c. ×ó»¬Î´³É¹¦£¬µãµ×²¿°´Å¥Î»ÖÃ...");
- Engine.clickPercent(0.5, 0.88);
- sleep.second(2);
- if (!Engine.isOnReadingPage(app)) {
- Engine.clickPercent(0.5, 0.80);
- sleep.second(2);
- }
- }
- // 6. µÈ´ý½øÈëÔĶÁÒ³
- sleep.second(3);
- Engine.closePopup();
- if (Engine.isOnReadingPage(app)) {
- print.log(" [ÕÒÊé] ✓ ÒѽøÈëÔĶÁÒ³");
- return true;
- }
- // 7. ¿ÉÄÜÐèÒªÏȼÓÈëÊé¼Ü²ÅÄÜÔĶÁ
- print.log(" [ÕÒÊé] 4. ³¢ÊÔ¼ÓÈëÊé¼Ü...");
- for (var j = 0; j < addBtns.length; j++) {
- if (Engine.findAndClickText(addBtns[j])) {
- print.log(" [ÕÒÊé] ✓ µã»÷ÁË¡¾" + addBtns[j] + "¡¿");
- sleep.second(2);
- break;
- }
- }
- // 8. ¼ÓÈëÊé¼ÜºóÔÙÕÒÔĶÁ°´Å¥
- for (var k = 0; k < readBtns.length; k++) {
- if (Engine.findAndClickText(readBtns[k])) {
- print.log(" [ÕÒÊé] ✓ ¼ÓÈëÊé¼Üºóµã»÷ÁË¡¾" + readBtns[k] + "¡¿");
- found = true;
- break;
- }
- }
- sleep.second(3);
- Engine.closePopup();
- if (Engine.isOnReadingPage(app)) {
- print.log(" [ÕÒÊé] ✓ ͨ¹ý¼ÓÈëÊé¼Ü½øÈëÔĶÁÒ³");
- return true;
- }
- // 9. ±¾ÂÖʧ°Ü£¬·µ»ØÊé³ÇÖØÊÔ
- print.log(" [ÕÒÊé] ⚠ µÚ" + (retry + 1) + "ÂÖʧ°Ü£¬·µ»ØÊé³ÇÖØÊÔ...");
- Engine.back();
- sleep.second(2);
- if (app.Êé³ÇTab×ø±ê) {
- Engine.clickPercent(app.Êé³ÇTab×ø±ê[0], app.Êé³ÇTab×ø±ê[1]);
- sleep.second(2);
- }
- } catch(e) {
- print.log(" [ÕÒÊé] µÚ" + (retry + 1) + "ÂÖÒì³£: " + e.message);
- try { Engine.back(); sleep.second(2); } catch(e2) {}
- }
- }
- print.log(" [ÕÒÊé] ⚠ " + maxRetry + "ÂÖ³¢ÊÔºóÈÔδ½øÈëÔĶÁÒ³");
- return false;
- },
- // ¿´¹ã¸æÁì½±Àø
- watchAd: function() {
- this.totalAds++;
- var elapsedMin = ((Date.now() - this.startTime) / 60000).toFixed(1);
- print.log("\n[" + elapsedMin + "m] 📺 µÚ" + this.totalAds + "´Î¿´¹ã¸æÁì½±Àø");
- try {
- // 0. ÏȹرտÉÄܵ²×¡µÄ¸¡´°
- Engine.closePopup();
- // 1. µãµ×²¿¸£Àû/ÈÎÎñTab
- print.log(" [¹ã¸æ] 1. µã»÷¸£ÀûTab (" + this.app.¸£ÀûÒ³×ø±ê[0] + "," + this.app.¸£ÀûÒ³×ø±ê[1] + ")");
- Engine.clickPercent(this.app.¸£ÀûÒ³×ø±ê[0], this.app.¸£ÀûÒ³×ø±ê[1]);
- sleep.second(3);
- Engine.closePopup();
- // 2. ÕÒ"¿´ÊÓÆµÁì½ð±Ò"°´Å¥²¢µã»÷
- print.log(" [¹ã¸æ] 2. ²éÕÒ¡¾" + this.app.¹ã¸æ°´Å¥ÎÄ×Ö + "¡¿");
- var clicked = Engine.findAndClickText(this.app.¹ã¸æ°´Å¥ÎÄ×Ö);
- if (!clicked) {
- // ³¢ÊÔÆäËû³£¼ûµÄ¿´¹ã¸æ°´Å¥ÎÄ×Ö
- var adBtns = ["¿´ÊÓÆµ", "¿´¹ã¸æ", "Áì½ð±Ò", "ÁìÈ¡", "¿´ÊÓÆµ½±Àø", "Á¢¼´ÁìÈ¡"];
- for (var i = 0; i < adBtns.length; i++) {
- if (Engine.findAndClickText(adBtns[i])) {
- clicked = true;
- break;
- }
- }
- }
- if (!clicked) {
- // ¶µµ×£ºµãÆÁÄ»ÖÐÏ·½³£¼ûλÖÃ
- print.log(" [¹ã¸æ] 2b. ÎÄ×ÖδÕÒµ½£¬µã³£¼ûλÖà (0.5, 0.65)");
- Engine.clickPercent(0.5, 0.65);
- sleep.second(2);
- }
- // 3. µÈ´ý¹ã¸æ²¥·Å
- print.log(" [¹ã¸æ] 3. µÈ´ý¹ã¸æ²¥·Å " + CONFIG.¹ã¸æµÈ´ýÃë + " Ãë...");
- Engine.smartSleep(CONFIG.¹ã¸æµÈ´ýÃë, 5);
- // 4. ¹Ø±Õ¹ã¸æ½áÊøºóµÄµ¯´°
- print.log(" [¹ã¸æ] 4. ¹Ø±Õ¹ã¸æµ¯´°");
- Engine.closePopup();
- sleep.second(2);
- // 5. ·µ»ØÔĶÁÒ³
- print.log(" [¹ã¸æ] 5. ·µ»ØÔĶÁÒ³");
- Engine.back();
- sleep.second(2);
- Engine.closePopup();
- } catch(e) {
- print.log(" ⚠ ¿´¹ã¸æÒì³£: " + e.message);
- // ¾¡Á¦»Ö¸´
- try { Engine.back(); sleep.second(2); } catch(e2) {}
- try { Engine.closePopup(); } catch(e3) {}
- }
- },
- // È·±£»Øµ½ÔĶÁÒ³
- ensureReadingPage: function() {
- if (Engine.isOnReadingPage(this.app)) return;
- print.log(" [»Ö¸´] ²»ÔÚÔĶÁÒ³£¬³¢ÊÔ»Ö¸´...");
- var tryCount = 0;
- while (tryCount < 3) {
- tryCount++;
- Engine.back();
- sleep.second(2);
- Engine.closePopup();
- if (Engine.isOnReadingPage(this.app)) {
- print.log(" [»Ö¸´] ✓ Òѻص½ÔĶÁÒ³");
- return;
- }
- // µã»÷ÆÁÄ»ÖÐÑë³¢ÊÔ½øÈëÔĶÁ
- Engine.clickPercent(0.5, 0.5);
- sleep.second(2);
- if (Engine.isOnReadingPage(this.app)) {
- print.log(" [»Ö¸´] ✓ Òѻص½ÔĶÁÒ³");
- return;
- }
- }
- // ¶à´Î·µ»Ø¶¼²»ÔÚÔĶÁÒ³£¬¿ÉÄÜ»ØÍ˵½ÁËÊé¼Ü/Êé³Ç
- // ³¢ÊÔÖØÐÂÕÒÊé½øÈëÔĶÁ
- if (this.app.ÐèÒªÕÒÊé) {
- print.log(" [»Ö¸´] ·µ»Øµ½·ÇÔĶÁÒ³£¬³¢ÊÔÖØÐÂÕÒÊé...");
- this.findBookAndRead(this.app);
- if (Engine.isOnReadingPage(this.app)) {
- print.log(" [»Ö¸´] ✓ ÖØÐ½øÈëÔĶÁÒ³");
- return;
- }
- }
- print.log(" [»Ö¸´] ⚠ ¶à´Î³¢ÊÔºóÈÔδ»Øµ½ÔĶÁÒ³£¬¼ÌÐø·Ò³");
- }
- };
- // =============================================================================
- // µÚËIJ¿·Ö£ºÖ÷Èë¿Ú
- // =============================================================================
- function main() {
- if (!Engine.init()) {
- print.log("✗ ÒýÇæ³õʼ»¯Ê§°Ü£¬Í˳ö");
- return;
- }
- // »ñȡĿ±êAppÅäÖÃ
- var app = null;
- for (var i = 0; i < CONFIG.App±í.length; i++) {
- if (CONFIG.App±í[i].±àºÅ === CONFIG.Ä¿±êApp±àºÅ) {
- app = CONFIG.App±í[i];
- break;
- }
- }
- if (!app) {
- print.log("✗ Ä¿±êApp±àºÅ " + CONFIG.Ä¿±êApp±àºÅ + " ²»´æÔÚ£¡");
- print.log(" ¿ÉÓñàºÅ£º");
- for (var j = 0; j < CONFIG.App±í.length; j++) {
- print.log(" " + CONFIG.App±í[j].±àºÅ + " = " + CONFIG.App±í[j].Ãû³Æ + "£¨" + CONFIG.App±í[j].°üÃû + "£©");
- }
- return;
- }
- // ÏÈ»Ø×ÀÃæ
- Engine.home();
- sleep.second(2);
- // ÔËÐÐ
- try {
- ReadingBot.run(app);
- } catch(e) {
- print.log("⚠ Ö÷Á÷³ÌÒì³£: " + e.message);
- print.log(" ³¢ÊÔ»Ö¸´...");
- try { Engine.home(); } catch(e2) {}
- }
- print.log("\n✓ ½Å±¾Íê³É£¡");
- print.timeEnd();
- }
- // Æô¶¯
- main();
¸´ÖÆ´úÂë
|
|