分享快手极速版助手APK和源代码

分享快手极速版助手APK和源代码

快手极速版高级的版本已经开启检测autojs,因此最新的快手极速版是无法用autojs脚本刷刷刷的。我这里提供9.2的下载地址,这个可以刷。地址如下:

https://wwa.lanzoui.com/icST4rzv4kh

另外我的邀请码如下:460754595

本次和大家分享的apk完全免费而且代码开源我先把地址和apk地址给大家。

APK地址:https://wwa.lanzoui.com/iSpfxsumwvi

源代码地址:https://wwa.lanzoui.com/i7YiEsu7gxe

一、 核心功能

无图无真想先给大家晒晒图。

word.png

一图知千意,切记用我提供的快手否则无法阅读。

功能我就不一一说了我先说下注意的地方。

一、首先此版本是免费版本,核心技术是AutojsPro开发,所以需要开启安卓系统的无障碍服务。其次本软件【签到】是基于找图技术研发找图技术需要适配分辨率,找图截图是依据OPPOR9SK开发分辨率是1080*1920的,故非此分辨率【签到】将无法运行。谢谢理解!!!最后作者wx18141782993需要购买收费版本的请联系谢谢!

二、本版本就用到几个图片且代码是完全开源的所以大家自己替换对应的图片就行可以了。

把这几个图片用截图工具自己截图替换就行了。

word.png


点=代码:

"ui";
var rootUrl = "http://www.yadinghao.com";
var storageSign = "YadinghaoKSFreeAssist"
var softVersion = "1.0.0"
var yadinghaoStorages = storages.create(storageSign);//创建本地存储

ui.layout(
    <vertical>
        <scroll>
            <vertical>
                <vertical>
                    <horizontal  >
                        <text text="快手极速版邀请码:460754595 " textColor="#228B22" paddingLeft="14"/>
                        <button text="复制" id="btnCopyText" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                    </horizontal>
                </vertical>
                <vertical>
                    <horizontal  >
                        <text text="下载快手极速版v9.2.40.1209 " textColor="#228B22" paddingLeft="14"/>
                        <button text="下载" id="btnDownloadApp" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                        <text text="别安装最新的最新的刷不了" textColor="#228B22" paddingLeft="2"/>
                    </horizontal>
                </vertical>
                {/* 是否开启控制台 */}
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAHtElEQVR4Xu2dT4hVVRzHf7 7mED6owtDpKIoRMdm8c65ThQESmKzsAiNkiQQIrI/7gylFukmF VCI4lsFUKLJiWqhbpIxCLm3d8TBRMkSag0aVGmi2CYOXHszfRm3pu55z7Pu/eed793e3/3d37n /u8c /5885hwlVpBbjStUflCQBUHAIAAAAqrkDFq48WAABUXIGKVx8tAABIV0BrvZyZl6RbwqIsCkRRdHlsbOxCWjwdW4BarbY4iqIdRFQjIkVEC9Mc4X4pFbhORMLM54hoNEmSE7OjbAMgjuPVxpiDRPRQKauEoLpWwBizu9Fo7Gp1MAMArfV ItrWdQl4MAQFjojIhqlApwHQWh8goldDqAFivGUFtovIXuvlJgBxHG80xozesls4CEaBKIqG6/V6nYeGhhYNDAx8R0QrgokegfpQ4NT4 PgIK6U2M/MhHx7hIzgFtrDWeg8R7QwudATsQ4F9tgU4zsxrfXiDj7AUYOaTtgW4RkR3dhH6VSI638VzeMS/AsuIaGkXbm9YAEyWB 1gAhEdbjQaZ7M8B9veKlCr1QajKLJjOFuzlJQVgKUiciVLAbDNV4EmCHbo1 lyBqDTMKJTCTDKXQGl1Hpm/sqlYFcAjorIiItD2JRDAa31USJalxaNEwD49afJWL77Wuv3iGh7WmSuADzVaDS TnOG  VRQGv9DBEdSYvICQBmXtNpLjnNOe4Xp0BzWv/btAgAQJpCgd4HAIEmzlfYAMCXkoH6AQCBJs5X2ADAl5KB gEAgSbOV9gAwJeSgfoBAIEmzlfYAMCXkoH6AQCBJs5X2ADAl5KB gEADokbHh5eNjExMSEiFx3MgzIBAPOkqzlVuomI7mmaXWLmY0mSvBJUlucJFgB0EEdr/QgR/TBfkicnJ1eePn36x9BBAACdAfjNYfXsORF5GAC0KNAP6wGUUruY R2XxPbDCii0ALMyrbW2q2PsKhmXK/g1kACgHYA/M x08reI3OVCSlltAEA7AJn ACMiQW gBQAAgN3qB2sCpzjI hc4tAB91gsAAJ2/ViqzKhgAAIDcPwKVUnpiYuL3M2fO2AGoXC98BBb0Eai1fpCI7N ynmjZd8FONtmxhdfzogAAFACAw2jjHyJydx4QAICcAYjjeJMx5jOH5H4kIj3fjxEA5AyA1vokET3uAAAx87NJknzhYtutDQDIH4CfiMi /1MvZn43SZK3Uw1vwQAA5A/AP0R0m2POvhGR9Y62XZkBgPwByNLNPCEia7rKrONDAAAAYC6glYFejwRm9I8WYL6WbHBw8PYFCxY8T0TDxhjbb7abWZ8VkWOOLWCbWcYEUdbJoIz AcBciVy1atVjk5OTHxPRytk2duuzJEme7gaCjAkCAK0i57UmMI7jN4wxH6Qk KKIZD7OBgB0VrU0s4Faa3s41feOXak9IvJWlpYAAJQcAKXUy8xsm36X65KIPOBiOGUDAEoOgNb6QyJ6zTWpURTdV6/Xf3G1BwDlB8CuX1vtmtCs3yUAAABkGalDLyDvXoDWGi2Aa/PnYBfcUDAAcMhqBhMAgLmAsOYC0AJk Hk7mKIFQAuAFqCVAXQD0Q1EN7ADA2WaC0A30OHd7mqCbwB8A AbAN8AAf09HN1A18bdzQ6vALwC8ArAKwCvgGkGMA6AcQCMA2AcwO0DylphWXiLVllX37jL/L8legHdqDb3M157AcaYnp8dDAD8AuD17OA89s4FAN4B8Hd6eHN/mxG/Ic70BgD8qqu1PkpE69K8Ok0GWSfGmF2NRmN3msNu7wOAbpVrf04ptd7 jc7FozMATWdLReSKi OsNgAgq2Kd7Wu12mAURedcvWUFwLYEthU43Gg0zroW4mIHAFxUmtummfhtRLQ1iycLwLWW/eyyPHuViM5necDB1vmPIUR0wsFfq0kW3/a5XvrP6jutqsscTkLp5OMGK6WOM/PatBJwv/8UYOaTtgXYQ0Q7 696qJGDAvtsC7CZmQ85GMOk/xTYwkNDQ4sGBgbsFiwr q9 qNE8CpwaHx8fuXksShzHG40xo5CrOgpEUTRcr9fr0 fiaK0PEFHP97CtjsSlrul2EdlrI5xxMJLWej8R2b4krv5V4IiIbJiqXtvJWM1pxINElHkjpv7VrD9q1mlSr PRaLVabXEURTuIqEZEdvOmhf0hQeVqcd2ubWFmOzQ8miRJ2wCU09l4WuvlzLykcvIFXOEoii6PjY1dSKuCEwBpTnA/XAUAQLi58xI5APAiY7hOAEC4ufMSOQDwImO4TgBAuLnzEjkA8CJjuE4AQLi58xJ5qQBQSj1JRI9GUaSMMXd4qWF5nPzl4 QT39UpDQCOh0X4rn8h/uwCnCRJXiyk8FmFlgIApdSXzNzVUTBlELHLGN4XkTe7fNbbY4UDEMfxS8aYT7zVKCBHzPxCkiQu5w33rFaFA6CU pSZS9Ec9kzluR1/LiLPFVDudJGFA6C1/pmI7i9ShALL/lVE7i2w/JkrgooIBABUHAC8Air CsBHYMU/Au1rB93AIl6 /5VZ EfgVNUxEFQMBKUBoNkSYCg4Zw5KBUDOdUdxZXoFIBvFKIAWoBjdS1MqAChNKooJBAAUo3tpSgUApUlFMYEAgGJ0L02p/wK7 MgyOBnklAAAAABJRU5ErkJggg=="></img>
                        <Switch id='switchIsShowConsole' text="是否开启控制台(不建议开启偶尔会遮挡点击事件" paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                {/* 是否强制停止 */}
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAD60lEQVRYR9WXX2gUVxTGfze7haBEES1Rog2IgRATSERqfLDFh0Y0iZXAJjv7poIhPiipiRJjBCvWmPinb5aaJ4WdiSmkFomavNggYhRKq6JiVhRiUVEoZhFF2Z1y5u7kj0l2d5K2oRfm4c6955xvvnvOd 4oZnmoWY7P/wOAHQrlEY/neGIrI NPFQ4PprJJyYBtGE3Ad6kcTbHepEyzNZltUgB2ILACn 8Ba9b42LDBG4YrV2BgIEYslq 6uiJTGScHYBi9ZGZ xZEjcPAgvHmTHoi5c HQIdi/H96/71OmWeYZgG0YlcAvhELw6hX09qYX3N21cSPMnw WBUqVq3C4ZzIHkzJg79jxCcPD98jOXkFjI zdC7btDYDPB0ePwrFj8gGRxFHEPnYyOYBgsAGl2mlqgosX4c4db8Hd3atWwfr1cOKEvKlXpvl9SgB2IPApfv8jiouzKCuDtrbpBXetWlqguxvu3o2iVK4Kh/8a63ACA3Yw2IHfv92hrr0dXryYGYCcHNizRz/x A/KsuqmBGCHQsXE479RWalYsADOnZtZcNd62zZ49gx6emxisULV1XXPXRrHgG0YA2Rlfe4kT0MDvHun9y1eDH4/vHwJy5ePgopEYM4cvf74sZScZDzk5 s9sv7hA0hZCqP79kkp9yvT/HICADsYrEEpi7o6bdjXp/ds2QKvX0NBgU7I1ath3Tq4ehX6 2HnTrhwAdau1XMBWlGhwc6bB6dOaT/l5bBkCXR0SEVVKcvqltcjDNiGcZvc3CJ279bn5ZZdVRUUFcH583D/vnYm1SEsSZIOD8ONGyBlJ8IjYJYtg2vXYNcuOHxY28i6VMPx4/D06e/KNEvSAyD0iaAEAnKGMDg4CqC0FPLydK7k5oKIz/XrsGkTPHwIt27B0JAGIEcjwYWRoaE/lGUVfwygGuikthaePAHRchmbN2vnEqi5GaJRnGM6fVqvV1fDypXw/DmEwyBZv2iRPo6xQ8AtXQpnzgi7AWVZP40DIJORJBTtF5rT1f7xoSbO3CQUn9Ho5EnoAHDLsKJCsXAhnD2bynV661u3aoZSlaED4t8Qovp6nJ4Sj/ oLKt2LOqJSuhKcWFhlpNM/7UUJ3KhEWhzuuClS9NvRiUluhmdPCmJ942yrIQojHKQrB1HyM7 zFFEUbDptOPWVpDHazt2WKip ZqMjJ dC4momquM6aWd1gRRws5O7xcSN4ZtGL SmfmFcyU7cADevk0v/D9xJXNYCAQK8PluU1rqc2TXy7h8GW7enNmlNFGWLSj1rZfYI3ttu1lZVtIrfcr/goRAzd6PybS 3INRWgx48Od566wD Bvm9YYwjOfNDwAAAABJRU5ErkJggg=="></img>
                        <Switch id='switchIsCloseApp' text="是否强制停止(不是所有手机都支持)" paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                {/* 是否自动签到 */}
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAALDUlEQVR4Xu1df4wcZRl 3r0rxWCJcLu0kKqIFI2/ EOxEAT8TWemNPaP1ha01VJQ1IK3R4sl1KMKFWx3Fy0aSgSF1haLUdLefHvBRk5LlZA2xgRMKm2sGAn0pkUtNba529fM9u64a/d2vm93Zm62886/877P 37P  w7s/N98w1BjlQzQKkevQweIoCUi0AEIAJIOQMpH750ABFAyhlI fClA4gAUs5AyocvHUAEkHIGUj586QAigJQzkPLhSwcQAbQOA7ZtzyaiBcxsAdhFRD2u6z480SNwHOfmSqWykIjeD2AbgKeUUj0TnZdO/JbpALZt/xzA9TUGtYeZryyXy8d0BhymjWVZk4loF4AP18DdqJRaFGa8KLBaQgCWZS0hokfqEFBUSnVFQVA9TMdx1jPzN8azYebF5XL58bjzMonXEgJwHOfHzHxLnYHtVUq912TgYdg6jvMCM/ttv ZBRI 6rntjGLGiwmgJAViW9QwRfbweCUqp2Mdi2zbXy4mZ 8rl8ieiKl4YuLGT1kjSIoBGWNPzEQHo8VTTSjpAE SZuEoHMGHLzFY6gBlfY6ylAzRBnomrdAATtsxspQOY8SUdoAm GnaVDtAwdYGO0gECKRrfILX3ALZt383MlxPRFQDOboLDWq57APQope4ePtlIB7AsaysAP8e3h5BfPxHtHRwcXNXb29s3jGcigKF5gzUAHADvCSGn0RAHAOwkomdNJ8eMOoBlWe/LZDJb6z3 DGtgzPxkuVye7 OZCiCoMM3kmMlk3tnT0/OyjxEUZ/STQNu2d48zadRMOjV/QEqpj iCagvAcZyLmHm/LnBIdjcopTabCMCyrA1EdHNI8WvBuEqp2SYC8KeLmXlDhDmNgR794wmKqS0A27Z/D CqIMCQz1enVE0EYNv2XgCXhJzHGLj29vYZ27Zt26fbAWzb9tcIXBdlTjWwFymlNgbF1BKA3/qJ6MUgsAjO9yqlLEMBvAHgrAhyGYFk5ivK5fJzBgI4CCAXZU41sLcopWqtnxhjqiUAx3HmMbN/UxXrQUQPuq67zFAAzwO4LOJEz1dKvWoggJ8AiHta K9KqcCbTS0B Hf9ALojJrUW/GVKqd2GAog615JSKm9yD AvZQOwPW7 dKbIkyyA1cN/BU0EMFSYXwP4XASEe0qpkVau2wGGcvJXBn0xgpzGhYxVAP5fnjAGR0R/BrBj9KJKUwEMEe4/q/Bb4LQQ8vKfA xXSq0cjWUiAN/PsqxFmUzmmkqlclEIOSGMRTJhdoCRX2wYgxuN0YgAws6hFp6pAMLMKSxORABNVEUEMJY86QAniSnKNYHSAU4iW eGp4kfe01X6QDSASZsVbB0AOkAoSyVl5vAJq4LcgmI7xKwlYjm1anVmAc0TdTUyNW27aBn/P5LonONQDWNU3UJsG37ewC VYebXUqpj2lyF5qZ4zg7mble3O8rpe4ILeAooFQJYM6cOVMHBgZeHY/ISqVyVW9v77NREF0P07Zt/9HuuC9/Hj9 /G07duz4dxR5pUoAQ49Ra65GIqLlruuui4JkHcxaM6VE9AqAea7r/kEHoxGb1AlgSASTmXluJpO5EMA/iegvruv6awgn9LBt 4MAZgI4x58zOHr06NN9fX3 uoTIjlQKIDI2WxBYBNCCRQszZRFAmGy2IJYIoAWLFmbKIoAw2WxBLBFACxYtzJRFAGGy2YJYIoAWLFqYKYsAwmSzBbFEAAktGndfeCbeOOI/qZwCav87rXvNnzEM/RABhE5pc4DcjQyOZL8Nwk1gXDCCRniCCt7C5tBP9RYBhM1oE3h8 9SzUBncVOdllNVU9Eb2O2gi1IirCCAMFkPA4K4LsuBjmwC6ti4cVT5LhcO/CSFkFUIEEBaTTeDwinOnYyDj72J dSAM4xYqeQ8F2mkaiAA0iYrKjJfnZmCQ/bb/Ua0YzCupdOg LVsNIxGABklRmfBt530Ibf41n/x1AHoHYyGVvCf0jIOtRADBHEViwbd1zEQ7bQRjhnYARh VvFB3DRcBaLMfniF3Zq8BsAmE6Qaox6jonWlgr2UqAtCiKTwj7szNArG/507WAPUgFb2pBvbapiIAbaqaN TOjrkg8otvsvfQPip6 pcJwzRFAIaENWrOndnrQdWl320GGHuo6Gnv1WeAO2KaGgFw5/S3oHJ8BjLEOOP4y3T/65Gss69VBM7nlgBc72NVp7oRfksF71ONFNXEJxUC4Hzu8wD726u uaUK42EMDq6nH77 gglhprac7/g6QA8a j1FRS SV8FOzuO0FwDns PvrMV4CVxZTA8c/qNhgbTMOZ 9HcBaLeNhI6LHqND/JSOfJoxPfwF0ZbeB6 yuyXgNyCyi0sGnm DxFFfuzN0F4u aYfJ6Kh661cynOevTXwD5jr8B5M rj38w/gumxfRA/y bo/OEN3d23AuiO42wiO hwqFVRj4hGKdAAFn9LV ZllCp/6fN8Mr5bAFAdQNI7YOxgkqe2aVCG7y 4ekvgK7s82CDLV Zvkml/h80wi935X4E5q8Z RK QgVvwj5cnQIBdKwA0/1GRWFaRaX e0x8uKvjUTB92cQHoAVU7P FmU 41qe9AKrX5HzHHQCZTaES1lLBWxFEN3ejHUey/gMes VaRDYV stB FGfT4UAToig izAbBqV8BAVvHE/Ns0rslMwUH26Z7Kf8BEgM4uKByN7599ENKkRQFUEt3fMRIWeMyEIwGZMeeuNtPrA/0b78cppORwb8Is/ywDvFWQGr6V10T58MsgnfUvCuDN3MYhfMiEJhO2gtqXDS7P51nPegUltj4FR90vkY2IQ9oIrn6Hi4X8YxY7YOFUdYJhLXjYth0kD/m7i5xvw zswLQVxBozHQdWdPHSP3Zg0 Ok45x90E0ulAKqXg26cgf909OHEJ t0jz8ByAC4VNcBwDNU9D5pYB raWoFMNIN8ll/NW7gN3EaqgpjO5W8OQ35xuSUegEM/UO4D Cw9 HbTEXvhpjq2HAYEcAQddyZuxPE9zbM5FjHDVT0vhoSVqQwIoBR9DY4d39ygdZR0VseadVCBBcBnEQm5zu AFTX7ZkfjG4qed8xd5w4DxFADe65M3sdCFuMFm8S8lTwShNXysYiiwDG4Y27cleD WcA3hVILeEmKnj Rx1b7hAB1CkZ58 7FKj46/nG28l7H0B3TfSMXjOqEwEEsMfLLp6MSf9aA8b8N9/k4QPVL3i2ZdbQ2v5xdx9vpjBx YoADJjmfPYStGUGae3B/QZuiTYVASS6PNEnJwKInuNERxABJLo80ScnAoie40RHEAEkujzRJycCiJ7jREcQASS6PNEnJwKInuNERxABJLo80ScnAoie40RHEAEkujzRJycCiJ7jREdIogASTVgak1NKUdC4Aw18ANu2/a3Ou4PA5HyyGBABJKsesWcTmgBmz549t1Kp/Cr2EUjAhhkgohdd1/1AEIDWJcCyrHcT0b4gMDmfKAYeUUotDcpISwA iOM4m5g58W/MBA04LeeJ6ErXdQP3MtAWwNDN4CEA56aFxBYe52qllNY3iowE4BNiWdYWIlrQwuSc1qkz85Plcnm 7iCNBTD8t5CZL6cTr2ifrRtM7CJjwF/tvNN/pV0pZbRdXkMCiGwYAhw7AyKA2ClPVkARQLLqEXs2IoDYKU9WQBFAsuoRezYigNgpT1ZAEUCy6hF7NiKA2ClPVkARQLLqEXs2IoDYKU9WQBFAsuoRezYigNgpT1ZAEUCy6hF7NiKA2ClPVsD/A zHWduo4wvbAAAAAElFTkSuQmCC"></img>
                        <Switch id='switchIsAutoSign' text="是否自动签到 " paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAH4ElEQVR4Xu2dCcgVVRTHf0JGRTsUaNAKURmU7dJCBVG0KFlZlEVFWlGRZSFE2EJBpGXQRtpCZZREQbZQlmSLqZkllrbRZlmkRbZbBsW/5tnz883MdZj3Zubcc DjQ7 7nf/5zZ17Z be249w2x44ChgJbANsm/wOL8FTdkuBFcByQL nAi8CS0Mq6xeQ6HhgNHBCQFpPUh8FngYmA89kNSkLgEOBKz3w9YlowZYIhAnAa53ypwEwCrgT6F wUs9WLwVWAxcBU/o2qxMA1wLX1Kv93pqSFLgOUHzXWF8AjgRmllSZF1NPBfYCFrWa1g7A3sAcYKPAdv8OzAtM68m6q8CBwMaBVcwCjgUUP9oBmB4w4FsJXA/MTWAJrNOT9UCBIcBBwHhgy5z6bgbGtQOgqZ5Gi1n2TvIMYEkPnPEqiiuwR/IsYHBOEYcAs1s9QN7Vv87goXj7PGePFNBAfq0BX596FfNhAmBn4JOMRqlnGNqjRns15SqQd2HvIgAuA25NqfdrYH9Av92ap8BAYD6g353scgHwMnB4SoIrgFua57e3uE2BscDEFEVmCYD3gEEpCY4ANG1wa64Curh1kXeyxQJAb5H0dq vrVqPuWVz5Ymj5Zrzd3q s0IA/J3WPQDqAdyar0Dqbd4BaH5wQzxwAEJUMpzGATAc3BDXHIAQlQyncQAMBzfENQcgRCXDaRwAw8ENcc0BCFHJcBoHwHBwQ1xzAEJUMpzGATAc3BDXHIAQlQyncQAMBzfENQcgRCXDaRwAw8ENcc0BCFHJcBoHwHBwQ1xzAEJUMpymcgC07lALFbT4dHPDQpfp2uPAiJIKrBSAAcBbGd ml SjyWK0T8O9JXhWKQCnAY W4ESMRSwG9izB8UoBGANMKsGJGIv4BdisBMcrBUA7i80owYkYi3gDOLgExysFQO1/M1ljWIIv0RTxHXBKSSuzKgdAUdNSZS003SSaEBZz9GdAezA8AHxYrIh1ctUCgJJ88WIKKOAAFBDNUhYHwFI0C/jiABQQzVIWB8BSNAv44gAUEM1SFgfAUjQL OIAFBDNUhYHwFI0C/jiABQQzVIWB8BSNAv44gAUEM1SFgfAUjQL OIAFBDNUhYHwFI0C/jiABQQzVIWB8BSNAv44gAUEM1SFgfAUjQL FILALQjuT5y1JnDdTIdhvEp8FKdGlVyWyoH4OxkadiOJTtWZnGWz0WqFIB9k6VhZQarG2X9BugkLZ2OZs0qBeBc4L6GKHpXcsZuQ5ob3EwHIFAqB6BNKJ0VVMaJIX4LCKSvi8kq7QHkVxMGgVq5pIGgRascAInq08Dq0KoFANW57zU7AJEz4AA4AJ1Ph/Vj4 Igw3uAOOKc6qUD4AD4LSBmBrwHiDn6yenhOkV8HfNBYBxkeA8QR5x9EBh5nB0AB6CzAn4LiJwMB8AB8OcAMTPgPUDM0ffnAJFH3wFwAPwWEDkDDoADkD4L BPo30GgtwF90u3WfAUWAPt0cGO1XgZ9BWyX4uMWwE/N9z9qD3RM348pCiwTAFoLp3P9OtkxwAtRy9d8548Gnk9xY6EAeAw4NSWB5RWzzQ9tmAda8KJDOzvZNAFwIvBkRllnAlPD6vJUNVNgJPBwRpuGCwCdS/cFsFVKwrLOrquZNlE0RwdQbZri6Q/ADgJAdg8wOkOSOcBhwF9RyNZ8JzcAXgWGZLgyGTi/BUDICl5NF4cDzzZfH9MeHJfc0jfM8XI/YEELgJBeoFWexgt6RjC7pEMNTUejR87pg0 dMKq5vi7SPPv36leidgA0FtAp37vm5a74758nR9H 60APbQJwMlDnfY5C5PgI0NWv8cFaAOjfuwHvh5RSgzS9nKJOA0bUwOcymrA78EGroPYeoPV/omN GTX1oIydAPUI3bRHgNO7WUEPy9bRverl11gnAPRH7eV3P6ABRZ1N97xu7ur1EKDnIE03Ddy1Wdfyvo6kAaB0mkpcDYwCBtZQgS TW5a2d uG6QI4pxsF97BMbYI5BbghbQqfBUCrnQOSEeNQYHAPG59X1SXAHXmJCv5do2SB31RTrzg9eb7zTZYTIQC05xcAw5L9frTnj356bSuApwDdm7thdwMX5BSsHdTqZNKk9SNtgm L6wtAnZzuRltuBy7OKVjPQTQd/LsbDeh1mQ7A/4rfBlyaEwB1qwr 6l4Hqlv1OQD/KTsRGJsj8nPAScCqbgWjinIdALgJGJcj/owk HozaspiB BG4KqciM5Muv2VpiKfOBMzAHqUPD4nqK8kV/73FoMvn2IFQIHP2xdYbzt1z//WavBjBUBdvrr LJubdPvLLAc/RgA02NOgL8v0skRTPX0mZ95iugVomqfpXpYtTLp9HSIVhcUCwBhgUk5E302ufH0wEY3FAIAe7eoRb5bpIxh1 0uiiXziqHUALgR0DlCWfZx0  oBojPLAOh1rl7rZtlnSfCD355ZI8QqACFH1S1Nuv2mfP7WFfYsAnAW8GCOWvpSRvd8LXiJ2qwBcEbAOkZ9F6cnfK9HHXmDg0CtcNZK5yzTM31d XX7oqcyFq30AFoZo31wskybJCj4lk8JX2 QrACQuglSosivSbfvm130QcQKAOrat07B/48k L6otYNAVgCYBxzQwT8tZ1e3ry9l3QwDcF6yAKKviwr Ex75dAWs9ADyUHvhaFOrQcCi5IMPfcvnlqHAP51r0QqaROycAAAAAElFTkSuQmCC"></img>
                        <Switch id='switchIsAutoComment' text="是否自动评论" paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                {/* 是否自动清理缓存 */}
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAIrklEQVR4Xu2di5HeNBCAlQqACgIVBCoIVABUAFQAVABUAFQAVECoAKgAUgFQAVABzHex/pNt2XpLa/2rmZub5KyHdz/tavXyEzNfer680pvGGH5setsY83rC6/7iPPuPMeb35d8vjTH8e4r05IJvgVKfGmPeXRRqFcvvnulPYww/gAEQAPOvA0rPtmTXJR0AlP3MGINyUXhqL84WTGFGoAAIfv 6gFJYZJvs0gDARL /KBuFuya8jQT6lGotBVAAhHUnfWo/qUUCAPTqj5wePlwoHRoAEC MMT MhmEUAPTsT40xH0zUy3O5YfzwvTHm2xGuojcA9PSPl96eK7CZ8 EigAHL0CX1AMD69S 1t0frFKvwzWIVmoacrQHAzKP4lPg7Wkp38CDKR364hyapFQCM4L/THl9NZwwaP1lCy2qFUlBtAOjpKJ7Bnab6EiByAIRqbqEmAPT6H9Xc19f6pkSUDwTAUJxqAfDF4quKG6QFREvgsxpjgxoAYPIJ7TT1lwAhI9YgO5UCoMrPFn21jEUQlABAnEqYp2m8BAgTcQnJKRcARvkM DTJkQCuAGuQlHIAINT7Q0f7SXLu8TDRwXupi0s5ANDzNc7vodL0OlhmficlWyoA JmvUyrQZ7tL4KuUkDwFADX93XWZVSGuACvA9HEwpQDAogQTPprkS4Dl5Ki5mVgAtPfLV/q2hW/FWIFYADTmvx4AUVYgBgB6/9/Xe39tsTEmaAViANCR/3VZClqBGACY9Ln69mxO8xwtn25PEFl1Y/k4k3D19MbZ/oEQAKzx/3xxCXy 7K/LeY0ZIp/TKeIQAMwts5P3qomjWqX7EYmrX7uqAJap4cPZwTMAZhj8cQoHK1aS2KptD5yWlDMy7 Fg8AwAJhJY779yUgBeae/QDZ4BwKCJc3pXTgrAK 0dLhKdAfDflTW/tF0BeFSiNxo4AmCWDR8KwCMA3mjgCICrj/7taysAjwB4J4WOAJhh8odXVwAeAWB5mGhglXwAMDMGADMkBWCtxV046ANghvBPXYC/  7GAT4AZvH/6gL2EOy2j/sA G25jEldwCsJzDATeGgRfQDMEP rCzjuviudbwGYYfXPfXUdBO5B4OzA7RLMLQCzbf5QAPYArNYFtgDMtvdPAdgDsJoQ2gIw04BHowD/OGDVKbYAsPmzdAOFpOhBLYBfGze9bwGYKQJQC3DcFW8zgi4As0UACsAxALdIQAEIO6zZxkW88S0ScAGQtAOWzZzsSIo64HiiQ/InX5qwKY 1kdJt8VhXSfsKbyeIpQLALlYxV6qHjUTUE9yKzjS7hHQbHLsASNkDWGPkLkHIvjZIWWjzAiDF180MgBQ3e9sk6loABaC93ZACAG/6oHsXAClzAGoB2oOoAPSR8a4WtQARglcLECGkCo88nBNQF1BBkglFSLIAD7OBFgBJO4HVAiQQVfDoCgBJ6wAKQIFWE7IqAAnCqvWoWBegFqCWis/LUQAi5KwuIEJIFR5RF1BBiKlFqAWIkBjz1FkfP4go2/dIz0  KwCZStJs9SUg1gXUf1Ut0ScBBeDOuVAAFACZU8F/VdjHJ1W3TLlLuXhzZQEQmO4HaI NpAk3BaC9vnc1SALg4XCILgf3pUASALstYVIuRZ55Klg0ALoptL01UAAiZKwWIEJIhY8QaT2cdnLHAOIOLRS pMTsUiyA92CIlIUKtQDt0f3Jfv7XtQBS7gdSANoD4D0cKs48tZdD9xqkyNh7PFzK6VW1AO259F4QIWU6WAFoD4D3ihiq5UKFp 3rP61BAWivgMNLoiRMBikAbQE4vSZOQiioALQFYHVj PaaOAnfClAA2gJwelWshEhAAWgLwOr JYnXxSsAbQE4vS6eqkcPBBWAdgDsZOuzAKNvDFcA2gEQ9cmY0R NVADaAfDhcgHnrQafBRj91XAFoB0Au8/H gCges7nPWvXDp0JHCDbl76PgR0BMHIckGoBfCtst XOA0H78oTqzcmzrX7kauDO/293BLmNHTkfEFJEjFBDZeQoMydPTFt7GYOd/z8DgL N2iUcUl6MUENl5CgzJ09MW3sBkPT5eBo1ao9gSHkxQg2VkaPMnDwxbe0BwG0L2LayozEAz40KB7E80BqbchTTK8/2HUZtu1vN/7uNOgNgpBs4bLCHil7KzKnHbS7hNd8LKP34RGzHcJ/bfTXc/jEEwMhogFAUaxBKCJZBq5tCXwpBCax8ts5jy6eN1Dfii2yH5p/GhQCQdINoCAT9u18Cu0/Gp7gAnh29OKSKzZcAF2CdWp2QBaBqCZtE8kVw3zlDE2JBF2DFN2pO4L7VV/b29H5c Ok4KsYC0IxR4UuZCO479 oj0UeiiAWA/BK2jN 3SuPfPqr3x0QBbpU6FohXwOgng77fNjDFAqgVGK3WuPqje3 qBeD5kauEca vT3lX/WqMAWwZEg6PqJr9Ejid9fNlSXUBtoyRO4ZU X4JJJn 3DGAzYcrYIbwNdWGGAlkfXA71wLw1qOWi8VIXFBDTuf7z9pZAgDlamg4noJs5edEAb7XVQjGQVCk/FoAUA6bJV7omKAbCQz4cMGMw4pSqQtwK2fZEQieF7VIM4ckwH5HrC5T88WpJgC2MSwcMVegEUKxelYF0OuRK7u0qqUWANA4liFprJSPI1QT2KCCmOChY1Xp9e47tALA1sF8AcSqW8gjB3NPRyr29UfVtwbA1ssgEb lFiEOBHo8HaeZ4m0zegFg67O7cYFh9HV0caro9xQ nsM4KL66qR9tAXz1E8bYn3seMNLbiZ5QfvfU2wIcvSAg4Cb4PbtloKejcH4w8TFnH5qBIQUA9wVxExYGfs9gHRjMoWz700yhqQVLBGD7DgBBNOH SLYSKBsfjrJZNudHbLoCAEfCwzrYY2FAwg//bn2zCZ9bQcGYbqtclM3/dRu81SLqygCEZGChcOckUs7muWcTXWWH6r3U3/8H8hTokCtnuOkAAAAASUVORK5CYII="></img>
                        <Switch id='switchIsClearCache' text="是否自动清理缓存" paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                {/* 屏幕滑动时间间隔 系统内部加减2秒*/}
                <vertical>
                    <horizontal >
                        <text text="屏幕滑动时间间隔(系统内部加减2秒):" textColor="red" padding="8 8 8 8" />
                        <input id="txtScreenSileTimesInterval" text="10" hint="视频之间的滑动时间间隔" inputType="number" padding="8 8 8 8" />
                    </horizontal>
                </vertical>

                {/* App启动时间 */}
                <vertical>
                    <horizontal >
                        <text text="App启动时间(秒):" textColor="red" padding="8 8 8 8" />
                        <input id="txtAppStartWaiteTime" text="30" hint="App启动时间(秒)" inputType="number" padding="8 8 8 8" />
                    </horizontal>
                </vertical>
                {/* App执行时间 */}
                <vertical>
                    <horizontal >
                        <text text="App执行时间(分):" textColor="red" padding="8 8 8 8" />
                        <input id="txtAppExecuteTime" text="120" hint="App执行时间(分)" inputType="number" padding="8 8 8 8" />
                    </horizontal>
                </vertical>
                <horizontal>
                    <button style="Widget.AppCompat.Button.Colored" id="btnStartApp" text="启动" padding="12dp" w="*" />
                </horizontal>
            </vertical>
        </scroll>
        <frame id="frameSecondTab">
            <scroll>
                <vertical>
                    <text w="auto" color="#111111" size="26" text="相关软件推荐" textColor="black" padding="8 8 8 8" />
                    <list id="reItemList" padding="25 0 8 8"  >
                        <horizontal h="40">
                            <text id="appIndex" text="{{this.ProductIndex}}、" inputType="number" w="40" gravity="center" textColor="#228B22" />
                            <text id="txtSoftName" textSize="18sp" textColor="#000000" text="{{SoftName}}" textColor="#228B22" />
                            <button text="下载" id="btnDownLoad" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                            <button text="访问" id="btnVistorWeb" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                        </horizontal>
                    </list>
                </vertical>
            </scroll>
        </frame>
    </vertical>
)
initializeFrendTipMessage()
initializeReItemList()
var CommentKeyWord = [
    '我是App小助手关注了你你要关注我哦!',
    '山高路远坑深,大军纵横驰奔,谁敢横刀立马?惟有点赞加关注大军!',
    '我的未来不是梦我相信你也是!',
    '身同感受',
    '风雨送春归,飞雪迎春到。',
    '俏也不争春,只把春来报。',
    '天若有情天亦老...',
    '...人间正道是沧桑',
    '...喜欢的人喜欢的事亦不能表达喜欢的心...',
    '三分春色二分愁,更一分风雨',
];
var isShowConsole = yadinghaoStorages.get("isShowConsole");
if (isShowConsole != null && isShowConsole == "true") {
    ui.switchIsShowConsole.setChecked(true);
} else {
    ui.switchIsShowConsole.setChecked(false);
}
var timesInterval = yadinghaoStorages.get("timesInterval");
if (timesInterval != null) {
    ui.txtScreenSileTimesInterval.setText(timesInterval);
}
var IsAutoSign = yadinghaoStorages.get("isAutoSign");
var IsClearCache = yadinghaoStorages.get("isClearCache");
var IsCashOut = yadinghaoStorages.get("isCashOut");
var IsAutoComment = yadinghaoStorages.get("isAutoComment");
if (IsAutoComment != null && IsAutoComment == "true") {
    ui.switchIsAutoComment.setChecked(true);
} else {
    ui.switchIsAutoComment.setChecked(false);
}
if (IsAutoSign != null && IsAutoSign == "true") {
    ui.switchIsAutoSign.setChecked(true);
} else {
    ui.switchIsAutoSign.setChecked(false);
}
if (IsClearCache != null && IsClearCache == "true") {
    ui.switchIsClearCache.setChecked(true);
} else {
    ui.switchIsClearCache.setChecked(false);
}
if (IsCashOut != null && IsCashOut == "true") {
    ui.switchIsCashOut.setChecked(true);
}


var WateForTime = yadinghaoStorages.get("WateForTime");
if (WateForTime != null) {
    ui.txtWateForTime.setText(WateForTime);
}
var exectueTime = yadinghaoStorages.get("exectueTime");
if (exectueTime != null) {
    ui.txtAppExecuteTime.setText(exectueTime);
}

var IsCloseApp = yadinghaoStorages.get("isCloseApp");
if (IsCloseApp != null && IsCloseApp == "true") {
    ui.switchIsCloseApp.setChecked(true);
} else {
    ui.switchIsCloseApp.setChecked(false);
}

ui.btnCopyText.on("click", function () {
    let AppCode = "460754595";
    toast("复制成功: "   AppCode);
    setClip(AppCode);
});
ui.btnDownloadApp.on("click", function () {
    try {
        app.openUrl("https://wwa.lanzoui.com/icST4rzv4kh");
    } catch (e) {
        //悬浮窗爱出错On Windows   Shift   Alt   F 代码格式
        console.show()
        toastLog("执行脚本出错...请将此页面截图联系攻城狮"   e)
    }
});

ui.btnStartApp.on("click", function () {
    let isShowConsole = ui.switchIsShowConsole.isChecked();
    let timesInterval = ui.txtScreenSileTimesInterval.getText();
    let IsAutoSign = ui.switchIsAutoSign.isChecked();
    let IsClearCache = ui.switchIsClearCache.isChecked();
    let IsAutoComment = ui.switchIsAutoComment.isChecked();
    let wateForTime = parseInt(ui.txtAppStartWaiteTime.getText());
    let IsCloseApp = ui.switchIsCloseApp.isChecked();
    let probability = 10;
    let totalTimes = ui.txtAppExecuteTime.getText() //执行时间
    let consoleMessage = "不开启控制台";
    if (isShowConsole) {
        consoleMessage = "开启控制台";
    }
    let totalHour = parseFloat(totalTimes / 60).toFixed(2);//转成小时
    //let havedHour = parseFloat(totalExecTimes / 60).toFixed(2);//转成小时
    let tipMessage = "本次共执行:"   totalHour   "小时."   consoleMessage;
    confirm(tipMessage).then(value => {
        if (value) {
            threads.start(function () {
                auto.waitFor();
                saveConfig()//保存一下配置
                threads.start(function () {
                    if (isShowConsole) {
                        console.show();
                        console.setPosition(0, device.height / 3);
                    }
                    //开启截图功能
                    if (!requestScreenCapture()) {
                        toastLog("请求截图失败");
                        stop();
                    }
                });

                let appName = "快手极速版"
                快手极速版(appName, wateForTime, timesInterval, probability, totalTimes, IsAutoSign, IsAutoComment)
                if (IsClearCache) {
                    clearAppCache()
                }
                if (IsCloseApp) {
                    clearCach(appName)
                }
            });
        } else {
            toastLog("操作被取消了");
        }
    });
});
function 快手极速版(appName, wateForTime, timesInterval, probability, execTimes, isAutoSign, isAutoComment) {
    app.launchApp(appName);//启动App
    toastLog("当前自动阅读程序"   appName   "等待进入");//系统日志提示
    cutDownBySleep(wateForTime)//启动App时候等待时间
    adolescentWindows();//关闭青少年窗口
    closeUpgradetWindows();//关闭升级提示框
    if (isAutoSign)
        autoSign(appName)
    while (true) {
        try {
            var start = new Date().getTime();//App起始时间
            let x1 = random(device.width * 0.8, device.width * 0.9);
            let y1 = device.height - (device.height * 0.15)
            let x2 = random(device.width * 0.8, device.width * 0.9);
            let y2 = device.height * 0.2
            let pressTime = random(700, 800);
            keepBrush()
            randomHeart('like_icon', probability);//随机关注百分之一的概率
            randomFollow('series_follow', probability)
            if (isAutoComment)
                AutoComment(probability)
            randomUpSildeScreen(x1, y2, x1, y1, pressTime, probability);
            randomDownSildeScreen(x1, y1, x2, y2, pressTime, timesInterval, probability);
            slideScreenDown(x1, y1, x2, y2, pressTime, timesInterval, false);
            appRunTimeRecord(appName, (new Date().getTime() - start))//记录一次时间
            computerExctueTime(appName, execTimes)
        } catch (error) {
            toastLog(appName   "刷刷刷时出现错误!"   error);
            sleep(timesInterval * 1000)
        }
    }
}
function keepBrush(){
    if (id("left_btn").exists()) {
        back()
    }
    let return_image_array=["./Image/快手极速版/返回1.png", "./Image/快手极速版/返回2.png", "./Image/快手极速版/返回3.png"]
    let ad_area_coordinate = [0, 0, device.width, device.height * 0.55]
    let threshold = 0.8
    if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
    }
}
/**
 *  自动签到
 */
function autoSign(appName) {
    let signValue = getSignTime(appName);
    if (getDate() == signValue) {
        toastLog("已签到本次签到跳过...");
        return;
    }
    let ad_area_coordinate = [0, 0, device.width, device.height * 0.55]
    let threshold = 0.8
    let get_coin_image = ["./Image/快手极速版/红包1.png", "./Image/快手极速版/红包2.png"]
    let ad_image_array = buildADArray("./Image/AD", 12);
    let sign_image_array=   ["./Image/快手极速版/快手立即签到.png", "./Image/快手极速版/立.png", "./Image/快手极速版/即.png"]
    let return_image_array=["./Image/快手极速版/返回1.png", "./Image/快手极速版/返回2.png", "./Image/快手极速版/返回3.png"]
    if (clickAreaForFindImage(get_coin_image, ad_area_coordinate, threshold)) {
        sleepRandom3() //是个网页加载的慢
        if (clickAreaForFindImage(sign_image_array, ad_area_coordinate, threshold)) {
            clickAreaForFindImage(ad_image_array)
            if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {

            }else{
                back()
            }
        }else{
            if (文字去签到()) {
                clickAreaForFindImage(ad_image_array)
                if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
                }else{
                    back()
                }
            }
            swipeDown()
            if (文字去签到()) {
                clickAreaForFindImage(ad_image_array)
                if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
                }else{
                    back()
                }
            }
            swipeDown()
            if (文字去签到()) {
                clickAreaForFindImage(ad_image_array)
                if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
                }else{
                    back()
                }
            }
            swipeDown()
            if (文字去签到()) {
                clickAreaForFindImage(ad_image_array)
                if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
                }else{
                    back()
                }
            }

        }
        if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
        }else{
            back()
        }
        
    }

    function 文字去签到() {
        if (text("去签到").exists()) {
            console.log("快手极速版去签到");
            if (clickControlBounds(text("去签到"))) {
                recordSignTime(appName);
                return true
            } else {
                return false
            }
        } else {
            return false
        }
    }

}
/**
 * 清理缓存
 */
function clearAppCache() {
    if (className("android.widget.ImageView").id("left_btn").exists()) {
        className("android.widget.ImageView").id("left_btn").findOnce().click();
        sleep(3000);
        if (className("android.widget.TextView").text("设置").exists()) {
            toastLog("点击设置");
            let b = className("android.widget.TextView").text("设置").findOne().bounds();
            click(b.centerX(), b.centerY());
            sleep(3000);
            if (className("android.widget.TextView").text("清除缓存").exists()) {
                let b = className("android.widget.TextView").text("清除缓存").findOnce().bounds();
                let result = click(b.centerX(), b.centerY());
                if (result) {
                    toastLog("清理成功");
                }
            }
        }
    }
}
/**
 * 自动评论
 */
function AutoComment(probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        let comment = CommentKeyWord[Math.floor(Math.random() * CommentKeyWord.length)];
        let buttons = className("android.widget.LinearLayout").id("comment_button").find();
        if (buttons.length > 0) {
            let clickResult = buttons[0].click();
            if (clickResult) {
                sleep(3000);
                if (id("comment_editor_holder_text").exists()) {
                    id("comment_editor_holder_text").findOnce().click();
                    sleep(1000);
                    setText(0, comment);
                    sleep(1000);
                    if (text("发送").exists()) {
                        toastLog("开启自动评论");
                        if (text("发送").findOnce().click()) {
                            toastLog("自动评论成功");
                            if (clickControlBounds(id("photo_detail_panel_close"))) {

                            } else {
                                back();
                            }
                        }
                    }
                }
            }
        }
    }
}
function saveConfig() {
    yadinghaoStorages.put("isShowConsole", ""   ui.switchIsShowConsole.isChecked()   "");
    yadinghaoStorages.put("timesInterval", ""   ui.txtScreenSileTimesInterval.getText()   "");
    yadinghaoStorages.put("isAutoSign", ""   ui.switchIsAutoSign.isChecked()   "");
    yadinghaoStorages.put("isClearCache", ""   ui.switchIsClearCache.isChecked()   "");
    yadinghaoStorages.put("isAutoComment", ""   ui.switchIsAutoComment.isChecked()   "");
    yadinghaoStorages.put("wateForTime", ""   ui.txtAppStartWaiteTime.getText()   "");
    yadinghaoStorages.put("isCloseApp", ""   ui.switchIsCloseApp.isChecked()   "");
    yadinghaoStorages.put("exectueTime", ""   ui.txtAppExecuteTime.getText()   "");
}
function initializeFrendTipMessage() {
    try {
        dialogs.build({
            title: "友情提醒",
            positive: "确定",
            negative: "复制微信",
            neutral: "访问官网",
            items: ["首先此版本是免费版本,核心技术是AutojsPro开发,所以需要开启安卓系统的无障碍服务。
其次本软件【签到】是基于找图技术研发找图技术需要适配分辨率,找图截图是依据OPPOR9SK开发分辨率是1080*1920的,故非此分辨率【签到】将无法运行。谢谢理解!!!
最后作者wx18141782993需要购买收费版本的请联系谢谢!"]
        }).on("negative", () => {
            app.openUrl("www.yadinghao.com");
        }).on("neutral", () => {
            app.openUrl("www.yadinghao.com");
        }).on("show", (dialog) => {
        }).show();

    } catch (e) {
        console.show()
        toastLog("initializeFrendTipMessage出错...请将此页面截图联系攻城狮"   e)
    }
}
function initializeReItemList() {
    try {
        var result_threads = threads.disposable();
        threads.start(function () {
            let dict_result = []
            try {
                var url_address = rootUrl   "/api/AppFindRecommendSoft?type=1";
                response = http.post(url_address, { "type": "1" });
                if (response.statusCode == 200) {
                    var product_json = response.body.json();
                    if (product_json.success == "true") {
                        var ProducCloudList = [];
                        let recProductList = JSON.parse(product_json.data)
                        for (let i = 0; i < recProductList.length; i  ) {
                            let row = { ProductIndex: (i   1), SoftName: recProductList[i].PRODUCT_NAME, DownURL: recProductList[i].DOWNLOAD_URL, VistorURL: recProductList[i].VISTOR_URL };
                            ProducCloudList.push(row);
                        }
                        dict_result = [true, ProducCloudList]
                        result_threads.setAndNotify(dict_result);
                    } else {
                        dict_result = [false, "读取云端信息出现问题:"   json.message]
                        result_threads.setAndNotify(dict_result);
                    }
                } else if (response.statusCode == 404) {
                    dict_result = [false, "读取云端信息出现问题访问服务器出现错误404错误请稍后重试"]
                    result_threads.setAndNotify(dict_result);
                } else {
                    dict_result = [false, "读取云端信息出现问题无法连接服务器"]
                    result_threads.setAndNotify(dict_result);
                }
            } catch (error) {
                dict_result = [false, "读取云端脚本出现问题:"   error]
                result_threads.setAndNotify(dict_result);
            }
        });
        result_threads = result_threads.blockedGet()
        if (result_threads[0] == false) {
            toastLog(result_threads[1])
        }
        else {
            ui.reItemList.setDataSource(result_threads[1]);
        }
    } catch (error) {
        toastLog("initializeReItemList构建推荐脚本出现错误:"   error)
    }

    ui.reItemList.on("item_bind", function (itemView, itemHolder) {
        itemView.btnDownLoad.on("click", function () {
            try {
                let item = itemHolder.item;
                let url = item.DownURL
                app.openUrl(url);
            } catch (e) {
                //悬浮窗爱出错On Windows   Shift   Alt   F 代码格式
                console.show()
                toastLog("btnDownLoad执行脚本出错...请将此页面截图联系攻城狮"   e)
            }
        });
        itemView.btnVistorWeb.on("click", function () {
            try {
                let item = itemHolder.item;
                let url = item.VistorURL
                app.openUrl(url);
            } catch (e) {
                //悬浮窗爱出错On Windows   Shift   Alt   F 代码格式
                console.show()
                toastLog("btnVistorWeb执行脚本出错...请将此页面截图联系攻城狮"   e)
            }
        });
    });
}

//#region 公共方法
function buildADArray(ad_path, ad_number) {
    let ad_array = []
    for (let i = 1; i <= ad_number; i  ) {
        let ad_full_path = ad_path   "/ad"   (i)   ".png"
        ad_array.push(ad_full_path)
    }
    return ad_array;
}
function clearCach(appName) {
    let deviceModel = device.model
    if (deviceModel == "OPPO R9sk") {
        recents()
        sleep(2000);
        click(device.width / 2, device.height / 1.19)
    } else {
        stopApp(appName)
    }
}
/**
 * 强制停止app
 * @param {应用名称} appName 
 */
function stopApp(appName) {
    try {
        openAppSetting(getPackageName(appName));
        sleep(3000);
        if (className("android.widget.Button").text("强行停止").exists()) {
            className("android.widget.Button").text("强行停止").findOnce().click();
        } else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
            }
        }
        sleep(3000);
        if (className("android.widget.Button").text("确定").exists()) {
            className("android.widget.Button").text("确定").findOnce().click();
            toastLog(appName   "已经停止!");
        }
        else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
                toastLog(appName   "已经停止!");
            } else {
                if (text("结束运行").exists()) {
                    text("结束运行").findOnce().click();
                    sleep(500);
                    if (text("确定").exists()) {
                        text("确定").findOnce().click();
                        toastLog("MIUI9 Android7"   appName   "已经停止!");
                    }
                }
            }

        }
    } catch (e) {
        toastLog(e);
    }
}
/**
 * 找图,找到并点击
 * @param {可以是数组也可以是字符串,传输数组可以多次找图知道找到为止} img_path_array 
 * @param {找图区域,默认是全屏找图,该参数可以不传输} area_region 
 * @param {相似度,默认是0.8,可以不传输} threshold 
 * @returns true表示执行成功Flase表示失败
 */
function clickAreaForFindImage(img_path_array, area_region, threshold, is_continue) {
    try {
        area_region = area_region || [0, 0, device.width, device.height] //默认的找图区域 全屏找图 前2位是坐标 后面是长度和宽度   千万别理解成是坐标
        threshold = threshold || 0.8 // 默认的相识度0.8
        is_continue = is_continue || false
        if (img_path_array instanceof Array) {
            let arrayLength = img_path_array.length
            for (let i = 0; i < arrayLength; i  ) {
                //toastLog("正在进行第"   (i   1)   "次找图...")
                img_path = img_path_array[i] //小图地址可判断是否存在
                if (!files.exists(img_path)) {
                    toastLog(img_path   "文件不存在因此跳过")
                    continue
                }
                var little_image = images.read(img_path) //小图
                var find_result_bounds = findImage(
                    captureScreen(), little_image, {
                    region: area_region,
                    threshold: threshold
                });
                if (find_result_bounds) {
                    toastLog(img_path   "图找到,准备点击坐标:"   find_result_bounds)
                    click(find_result_bounds.x, find_result_bounds.y)
                    return true
                } else {
                    //toastLog(img_path "小图存在但是在大图中未找到图片进入下一次循环...")
                }
            }
            return false
        }
        if (typeof (img_path_array) == "string") {
            img_path = img_path_array//小图地址可判断是否存在
            if (!files.exists(img_path)) {
                toastLog(img_path   "文件不存在因此跳过")
                return false
            }
            var little_image = images.read(img_path) //小图
            var find_result_bounds = findImage(
                captureScreen(), little_image, {
                region: area_region,
                threshold: threshold
            });
            if (find_result_bounds) {
                toastLog(img_path   "图找到,准备点击坐标:"   find_result_bounds)
                click(find_result_bounds.x, find_result_bounds.y)
                return true
            } else {
                //toastLog(img_path   "小图存在但是在大图中未找到图片")
                return false
            }
        }
    } catch (error) {
        toastLog("clickAreaForFindImage方法出现错误:"   error)
        return false;
    }
}
/**
 * 启动app
 * @param {*} appName 
 */
function startApp(appName) {
    sleepRandom3()
    app.launchApp(appName);//启动App
    sleep(30000);//启动App时候等待时间
    adolescentWindows();//关闭青少年窗口
    //closeUpgradetWindows();//关闭升级提示框
}
/**
 *  * 判断app今日时间否到达
 * 1、完成部分
 * 2、全部完成
 * 3、继续执行
 * @param {App名称} appName 
 * @param {总共执行时间} execTimes 
 * @param {是否碎片化} isFragmentation 
 * @param {碎片化时间} fragmentationTime 
 */
function computerExctueTime(appName, execTimes) {
    if (appName == app.getAppName(currentPackage())) {
        //toastLog("Run the same app as the task app")
    } else {
        startApp(appName)
    }
    let key = appName   storageSign   getDate();
    let havedRunTimes = yadinghaoStorages.get(""   key   ""); //系统存储已经执行的时间
    let havedMinute = (havedRunTimes / 1000) / 60;//读取到的时间是毫秒需要转换成秒,转换成秒后在转换成分钟
    toastLog(appName   "已经执行"   havedMinute.toFixed(2)   '分'   "总计:"   execTimes   "分");
}
/**
 * 贝塞尔曲线
 * @param {坐标点} ScreenPoint 
 * @param {偏移量} Offset 
 */
function bezier_curves(ScreenPoint, Offset) {
    cx = 3.0 * (ScreenPoint[1].x - ScreenPoint[0].x);
    bx = 3.0 * (ScreenPoint[2].x - ScreenPoint[1].x) - cx;
    ax = ScreenPoint[3].x - ScreenPoint[0].x - cx - bx;
    cy = 3.0 * (ScreenPoint[1].y - ScreenPoint[0].y);
    by = 3.0 * (ScreenPoint[2].y - ScreenPoint[1].y) - cy;
    ay = ScreenPoint[3].y - ScreenPoint[0].y - cy - by;
    tSquared = Offset * Offset;
    tCubed = tSquared * Offset;
    result = {
        "x": 0,
        "y": 0
    };
    result.x = (ax * tCubed)   (bx * tSquared)   (cx * Offset)   ScreenPoint[0].x;
    result.y = (ay * tCubed)   (by * tSquared)   (cy * Offset)   ScreenPoint[0].y;
    return result;
}
/**
 * 滑动(默认概率是百分之三十)
 * @param {*} qx 
 * @param {*} qy 
 * @param {*} zx 
 * @param {*} zy 
 * @param {*} time 
 * @param {*} timesInterval 
 */
function slideScreenDown(qx, qy, zx, zy, time, timesInterval, CurveBrushScreen) {
    if (CurveBrushScreen) {
        curveDown(qx, qy, zx, zy, time, timesInterval); //曲线概率
    } else {
        lineDown(qx, qy, zx, zy, time, timesInterval); //直线概率
    }
}
/**
 * 概率0-9 大于3的时候采用曲线概率 小于3的时候直线概率
 */
function randomFunction() {
    return Math.floor(Math.random() * 10);
}
/**
 * 
 * @param {*} qx 
 * @param {*} qy 
 * @param {*} zx 
 * @param {*} zy 
 * @param {*} time 
 * @param {*} timesInterval 
 */
function curveDown(qx, qy, zx, zy, time, timesInterval) {
    var xxy = [time];
    var point = [];
    var dx0 = {
        "x": qx,
        "y": qy
    };
    var dx1 = {
        "x": random(qx - 100, qx   100),
        "y": random(qy, qy   50)
    };
    var dx2 = {
        "x": random(zx - 100, zx   100),
        "y": random(zy, zy   50),
    };
    var dx3 = {
        "x": zx,
        "y": zy
    };
    for (var i = 0; i < 4; i  ) {
        eval("point.push(dx"   i   ")");
    };
    for (let i = 0; i < 1; i  = 0.08) {
        let newPoint = bezier_curves(point, i);
        xxyy = [parseInt(newPoint.x), parseInt(newPoint.y)]
        xxy.push(xxyy);
    }
    gesture.apply(null, xxy);

    let randomMin = timesInterval * 1000;
    let randomMax = (parseInt(timesInterval)   2) * 1000;
    let delayTime = random(randomMin, randomMax);
    sleep(delayTime);
}
function swipeDown() {
    let x1 = random(device.width * 0.8, device.width * 0.9);
    let y1 = device.height - (device.height * 0.2)
    let x2 = random(device.width * 0.8, device.width * 0.9);
    let y2 = device.height * 0.1
    swipe(x1, y1, x2, y2, 700);
    sleep(3000);
}
/**
 * 屏幕向下滑动并延迟8至12秒
 */
function lineDown(startX, startY, endX, endY, pressTime, timesInterval) {
    swipe(startX, startY, endX, endY, pressTime);
    let randomMin = timesInterval * 1000;
    let randomMax = (parseInt(timesInterval)   2) * 1000;
    let delayTime = random(randomMin, randomMax);
    sleep(delayTime);
}
/**
 * 按照指定概率随机上滑
 * @param {*} startX 
 * @param {*} startY 
 * @param {*} endX 
 * @param {*} endY 
 * @param {*} pressTime 
 * @param {*} probability 
 */
function randomUpSildeScreen(startX, startY, endX, endY, pressTime, probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        swipe(startX, startY, endX, endY, pressTime);
        delayTime = random(12000, 15000);
        sleep(delayTime);
    }
}
/**
 * 连续下滑对上一个无兴趣
 * 其实得和上滑做个排他,既然无兴趣不要在上滑
 */
function randomDownSildeScreen(startX, startY, endX, endY, pressTime, timesInterval, probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        swipe(startX, startY, endX, endY, pressTime);
        sleep(3500);
        swipe(startX, startY, endX, endY, pressTime);
        sleep(timesInterval);
    }
}
/**
 * 随机点赞
 * @param {点赞ID}} view_id 
 */
function randomHeart(view_id, probability) {
    index = random(1, parseInt(probability));
    if (index == 1) {
        var target = id(view_id).findOnce();
        if (target == null) {
            doubleClick() //双击加关注
            return;
        } else {
            target.click();
        }
    }
}
/**
 * 随机关注
 * @param {控件ID} follow_view_id 
 * @param {概率} probability 
 */
function randomFollow(follow_view_id, probability) {
    index = random(1, parseInt(probability));
    if (index == 1) {
        var target = id(follow_view_id).findOnce();
        if (target == null) {
            return;
        } else {
            target.click();
            sleep(1000);
        }
    }
}
/**
 * 双击屏幕(很多视频其实就是点赞)
 */
function doubleClick() {
    //增加个随机概念 最多敲击三次
    click(200, 200)
    sleep(100)
    click(202, 210)
}
/**
 * 记录App一次运行的时间
 * @param {appName} appName 
 * @param {本次运行时间} recordTimes 
 */
function appRunTimeRecord(appName, recordTimes) {
    let key = appName   storageSign   getDate();
    var havedRunTimes = yadinghaoStorages.get(""   key   "");
    let value = "";
    if (havedRunTimes == null) {
        yadinghaoStorages.put(key, parseInt(recordTimes));
    } else {
        value = parseInt(havedRunTimes)   parseInt(recordTimes);
        yadinghaoStorages.put(key, value);
    }
}
/**
 * 获取当前时间格式yyyyMMdd
 */
function getDate() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()   1;
    if (month < 10) {
        month = "0"   month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0"   day;
    };
    return year   "-"   month   "-"   day;
}

/**
 * 
 */
function getTime() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()   1;
    if (month < 10) {
        month = "0"   month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0"   day;
    };
    var hour = date.getHours();
    if (hour < 10) {
        hour = "0"   hour;
    };
    var minute = date.getMinutes();
    if (minute < 10) {
        minute = "0"   minute;
    };
    var seconds = date.getSeconds();     //获取当前秒数(0-59)
    var millisecond = date.getMilliseconds();    //获取当前毫秒数(0-999)
    return year   "-"   month   "-"   day   " "   hour   ":"   minute   ":"   seconds   ":"   millisecond;
}
/**
 * 青少年窗口
 */
function adolescentWindows() {
    if (text("我知道了").exists()) {
        text("我知道了").findOnce().click();
    }
    if (text("知道了").exists()) {
        text("知道了").findOnce().click();
    }
    if (text("同意").exists()) {
        clickControlBounds(text("同意"));
    }
}
/**
 * 升级窗口
 */
function closeUpgradetWindows() {
    clickControlBounds(text("以后再说"))
    clickControlBounds(text("直接无视"))
    clickControl(text("我在想想"))
    clickControl(text("稍候再说"))
    clickControl(text("以后"))
    clickControl(text("以后更新"))
    clickControl(text("回头再说"))
    clickControl(text("回头在说"))
    clickControl(text("先去看看"))
    clickControl(text("先去逛逛"))
    clickControl(text("以后再说"))
    clickControl(text("忽略该版本"))
    clickControl(text("游客逛逛"))
    clickControl(text("暂不更新"))

}
/**
 * 倒计时方法适用于脚本
 * @param {倒计时时间} lasterTime 
 */
function cutDownBySleep(lasterTime, message) {
    message = message || ""
    for (let i = lasterTime; i => 0; i--) {
        console.info(message   "剩余"   i   "秒...")
        sleep(1000)
        if (i == 1) {
            return
        }
    }
}
/**
 * 休眠随机0.1秒至0.5秒
 */
function sleepRandom0() {
    sleep(random(100, 500));
}
/**
 * 休眠随机1秒至3秒
 */
function sleepRandom1() {
    sleep(random(1000, 3000));
}
/**
 * 休眠随机3秒至5秒
 */
function sleepRandom3() {
    sleep(random(3000, 5000));
}
/**
 * 休眠随机5秒至7秒
 */
function sleepRandom5() {
    sleep(random(5000, 7000));
}
/**
 * 休眠随机7秒至9秒
 */
function sleepRandom7() {
    sleep(random(7000, 9000));
}
/**
 * 休眠随机11秒至9秒
 */
function sleepRandom9() {
    sleep(random(9000, 11000));
}
/**
 * 点击屏幕上的坐标
 * @param {坐标} b 
 */
function clickBounds(b) {
    return clickResult = click(b.centerX(), b.centerY());
}
/**
 * 点击屏幕上的坐标
 * @param {坐标} b 
 */
function clickControlBounds(element) {
    let clickResult = false;
    if (element == null) {
        return false;
    }
    try {
        if (element.exists()) {
            toastLog("准备click:"   element);
            let b = element.findOnce().bounds();
            clickResult = click(b.centerX(), b.centerY());
            sleep(random(2000, 3200));
        } else {

        }
        return clickResult;
    } catch (error) {
        toastError("clickControlBounds方法出现错误:"   error)
        return false;
    }
}
/**
 * 点击UI上的控件
 * @param {UI上的元素} element 
 */
function clickControl(element) {
    let clickResult = false;
    if (element == null) {
        return false;
    }
    try {
        if (element.exists()) {
            toastLog("准备click:"   element);
            let b = element.findOnce().bounds();
            clickResult = click(b.centerX(), b.centerY());
            sleep(random(2000, 3200));
        } else {

        }
        return clickResult;
    } catch (error) {
        toastError("clickControlBounds方法出现错误:"   error)
        return false;
    }
}
/**
 * 记录App签到时间
 * @param {App名称} appName 
 */
function recordSignTime(appName) {
    let key = appName   storageSign;
    let value = getDate();
    yadinghaoStorages.put(key, value);
}
/**
 * 记录App签到时间
 * @param {App名称} appName 
 */
 function getSignTime(appName) {
    let key = appName   storageSign;
    let value = yadinghaoStorages.get(key);
    return value;
}
//#endregion

三、核心技术

此次用的是autojsPro7 主要使用了找图功能。友情提醒autojs4支持找图但是会宕掉,而autojsPro8不支持快手无法进行元素分析。

 

二、 机型选择

我开发采用的是OppoR9SK 分辨率是1920*1080的。所以大家尽量和我机器一样,如果不一样分辨率一样也行,实在不一样就自己截图替换一下图片就行了。

我封装了几个NB的找图方法还算NBA大家可以看看。

http://www.yadinghao.com/article/details/202108190001


分享快手极速版助手APK和源代码

快手极速版高级的版本已经开启检测autojs,因此最新的快手极速版是无法用autojs脚本刷刷刷的。我这里提供9.2的下载地址,这个可以刷。地址如下:

https://wwa.lanzoui.com/icST4rzv4kh

另外我的邀请码如下:460754595

本次和大家分享的apk完全免费而且代码开源我先把地址和apk地址给大家。

APK地址:https://wwa.lanzoui.com/iSpfxsumwvi

源代码地址:https://wwa.lanzoui.com/i7YiEsu7gxe

一、 核心功能

无图无真想先给大家晒晒图。

word.png

一图知千意,切记用我提供的快手否则无法阅读。

功能我就不一一说了我先说下注意的地方。

一、首先此版本是免费版本,核心技术是AutojsPro开发,所以需要开启安卓系统的无障碍服务。其次本软件【签到】是基于找图技术研发找图技术需要适配分辨率,找图截图是依据OPPOR9SK开发分辨率是1080*1920的,故非此分辨率【签到】将无法运行。谢谢理解!!!最后作者wx18141782993需要购买收费版本的请联系谢谢!

二、本版本就用到几个图片且代码是完全开源的所以大家自己替换对应的图片就行可以了。

把这几个图片用截图工具自己截图替换就行了。

word.png


点=代码:

"ui";
var rootUrl = "http://www.yadinghao.com";
var storageSign = "YadinghaoKSFreeAssist"
var softVersion = "1.0.0"
var yadinghaoStorages = storages.create(storageSign);//创建本地存储

ui.layout(
    <vertical>
        <scroll>
            <vertical>
                <vertical>
                    <horizontal  >
                        <text text="快手极速版邀请码:460754595 " textColor="#228B22" paddingLeft="14"/>
                        <button text="复制" id="btnCopyText" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                    </horizontal>
                </vertical>
                <vertical>
                    <horizontal  >
                        <text text="下载快手极速版v9.2.40.1209 " textColor="#228B22" paddingLeft="14"/>
                        <button text="下载" id="btnDownloadApp" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                        <text text="别安装最新的最新的刷不了" textColor="#228B22" paddingLeft="2"/>
                    </horizontal>
                </vertical>
                {/* 是否开启控制台 */}
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAHtElEQVR4Xu2dT4hVVRzHf7 7mED6owtDpKIoRMdm8c65ThQESmKzsAiNkiQQIrI/7gylFukmF VCI4lsFUKLJiWqhbpIxCLm3d8TBRMkSag0aVGmi2CYOXHszfRm3pu55z7Pu/eed793e3/3d37n /u8c /5885hwlVpBbjStUflCQBUHAIAAAAqrkDFq48WAABUXIGKVx8tAABIV0BrvZyZl6RbwqIsCkRRdHlsbOxCWjwdW4BarbY4iqIdRFQjIkVEC9Mc4X4pFbhORMLM54hoNEmSE7OjbAMgjuPVxpiDRPRQKauEoLpWwBizu9Fo7Gp1MAMArfV ItrWdQl4MAQFjojIhqlApwHQWh8goldDqAFivGUFtovIXuvlJgBxHG80xozesls4CEaBKIqG6/V6nYeGhhYNDAx8R0QrgokegfpQ4NT4 PgIK6U2M/MhHx7hIzgFtrDWeg8R7QwudATsQ4F9tgU4zsxrfXiDj7AUYOaTtgW4RkR3dhH6VSI638VzeMS/AsuIaGkXbm9YAEyWB 1gAhEdbjQaZ7M8B9veKlCr1QajKLJjOFuzlJQVgKUiciVLAbDNV4EmCHbo1 lyBqDTMKJTCTDKXQGl1Hpm/sqlYFcAjorIiItD2JRDAa31USJalxaNEwD49afJWL77Wuv3iGh7WmSuADzVaDS TnOG  VRQGv9DBEdSYvICQBmXtNpLjnNOe4Xp0BzWv/btAgAQJpCgd4HAIEmzlfYAMCXkoH6AQCBJs5X2ADAl5KB gEAgSbOV9gAwJeSgfoBAIEmzlfYAMCXkoH6AQCBJs5X2ADAl5KB gEADokbHh5eNjExMSEiFx3MgzIBAPOkqzlVuomI7mmaXWLmY0mSvBJUlucJFgB0EEdr/QgR/TBfkicnJ1eePn36x9BBAACdAfjNYfXsORF5GAC0KNAP6wGUUruY R2XxPbDCii0ALMyrbW2q2PsKhmXK/g1kACgHYA/M x08reI3OVCSlltAEA7AJn ACMiQW gBQAAgN3qB2sCpzjI hc4tAB91gsAAJ2/ViqzKhgAAIDcPwKVUnpiYuL3M2fO2AGoXC98BBb0Eai1fpCI7N ynmjZd8FONtmxhdfzogAAFACAw2jjHyJydx4QAICcAYjjeJMx5jOH5H4kIj3fjxEA5AyA1vokET3uAAAx87NJknzhYtutDQDIH4CfiMi /1MvZn43SZK3Uw1vwQAA5A/AP0R0m2POvhGR9Y62XZkBgPwByNLNPCEia7rKrONDAAAAYC6glYFejwRm9I8WYL6WbHBw8PYFCxY8T0TDxhjbb7abWZ8VkWOOLWCbWcYEUdbJoIz AcBciVy1atVjk5OTHxPRytk2duuzJEme7gaCjAkCAK0i57UmMI7jN4wxH6Qk KKIZD7OBgB0VrU0s4Faa3s41feOXak9IvJWlpYAAJQcAKXUy8xsm36X65KIPOBiOGUDAEoOgNb6QyJ6zTWpURTdV6/Xf3G1BwDlB8CuX1vtmtCs3yUAAABkGalDLyDvXoDWGi2Aa/PnYBfcUDAAcMhqBhMAgLmAsOYC0AJk Hk7mKIFQAuAFqCVAXQD0Q1EN7ADA2WaC0A30OHd7mqCbwB8A AbAN8AAf09HN1A18bdzQ6vALwC8ArAKwCvgGkGMA6AcQCMA2AcwO0DylphWXiLVllX37jL/L8legHdqDb3M157AcaYnp8dDAD8AuD17OA89s4FAN4B8Hd6eHN/mxG/Ic70BgD8qqu1PkpE69K8Ok0GWSfGmF2NRmN3msNu7wOAbpVrf04ptd7 jc7FozMATWdLReSKi OsNgAgq2Kd7Wu12mAURedcvWUFwLYEthU43Gg0zroW4mIHAFxUmtummfhtRLQ1iycLwLWW/eyyPHuViM5necDB1vmPIUR0wsFfq0kW3/a5XvrP6jutqsscTkLp5OMGK6WOM/PatBJwv/8UYOaTtgXYQ0Q7 696qJGDAvtsC7CZmQ85GMOk/xTYwkNDQ4sGBgbsFiwr q9 qNE8CpwaHx8fuXksShzHG40xo5CrOgpEUTRcr9fr0 fiaK0PEFHP97CtjsSlrul2EdlrI5xxMJLWej8R2b4krv5V4IiIbJiqXtvJWM1pxINElHkjpv7VrD9q1mlSr PRaLVabXEURTuIqEZEdvOmhf0hQeVqcd2ubWFmOzQ8miRJ2wCU09l4WuvlzLykcvIFXOEoii6PjY1dSKuCEwBpTnA/XAUAQLi58xI5APAiY7hOAEC4ufMSOQDwImO4TgBAuLnzEjkA8CJjuE4AQLi58xJ5qQBQSj1JRI9GUaSMMXd4qWF5nPzl4 QT39UpDQCOh0X4rn8h/uwCnCRJXiyk8FmFlgIApdSXzNzVUTBlELHLGN4XkTe7fNbbY4UDEMfxS8aYT7zVKCBHzPxCkiQu5w33rFaFA6CU pSZS9Ec9kzluR1/LiLPFVDudJGFA6C1/pmI7i9ShALL/lVE7i2w/JkrgooIBABUHAC8Air CsBHYMU/Au1rB93AIl6 /5VZ EfgVNUxEFQMBKUBoNkSYCg4Zw5KBUDOdUdxZXoFIBvFKIAWoBjdS1MqAChNKooJBAAUo3tpSgUApUlFMYEAgGJ0L02p/wK7 MgyOBnklAAAAABJRU5ErkJggg=="></img>
                        <Switch id='switchIsShowConsole' text="是否开启控制台(不建议开启偶尔会遮挡点击事件" paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                {/* 是否强制停止 */}
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAD60lEQVRYR9WXX2gUVxTGfze7haBEES1Rog2IgRATSERqfLDFh0Y0iZXAJjv7poIhPiipiRJjBCvWmPinb5aaJ4WdiSmkFomavNggYhRKq6JiVhRiUVEoZhFF2Z1y5u7kj0l2d5K2oRfm4c6955xvvnvOd 4oZnmoWY7P/wOAHQrlEY/neGIrI NPFQ4PprJJyYBtGE3Ad6kcTbHepEyzNZltUgB2ILACn 8Ba9b42LDBG4YrV2BgIEYslq 6uiJTGScHYBi9ZGZ xZEjcPAgvHmTHoi5c HQIdi/H96/71OmWeYZgG0YlcAvhELw6hX09qYX3N21cSPMnw WBUqVq3C4ZzIHkzJg79jxCcPD98jOXkFjI zdC7btDYDPB0ePwrFj8gGRxFHEPnYyOYBgsAGl2mlqgosX4c4db8Hd3atWwfr1cOKEvKlXpvl9SgB2IPApfv8jiouzKCuDtrbpBXetWlqguxvu3o2iVK4Kh/8a63ACA3Yw2IHfv92hrr0dXryYGYCcHNizRz/x A/KsuqmBGCHQsXE479RWalYsADOnZtZcNd62zZ49gx6emxisULV1XXPXRrHgG0YA2Rlfe4kT0MDvHun9y1eDH4/vHwJy5ePgopEYM4cvf74sZScZDzk5 s9sv7hA0hZCqP79kkp9yvT/HICADsYrEEpi7o6bdjXp/ds2QKvX0NBgU7I1ath3Tq4ehX6 2HnTrhwAdau1XMBWlGhwc6bB6dOaT/l5bBkCXR0SEVVKcvqltcjDNiGcZvc3CJ279bn5ZZdVRUUFcH583D/vnYm1SEsSZIOD8ONGyBlJ8IjYJYtg2vXYNcuOHxY28i6VMPx4/D06e/KNEvSAyD0iaAEAnKGMDg4CqC0FPLydK7k5oKIz/XrsGkTPHwIt27B0JAGIEcjwYWRoaE/lGUVfwygGuikthaePAHRchmbN2vnEqi5GaJRnGM6fVqvV1fDypXw/DmEwyBZv2iRPo6xQ8AtXQpnzgi7AWVZP40DIJORJBTtF5rT1f7xoSbO3CQUn9Ho5EnoAHDLsKJCsXAhnD2bynV661u3aoZSlaED4t8Qovp6nJ4Sj/ oLKt2LOqJSuhKcWFhlpNM/7UUJ3KhEWhzuuClS9NvRiUluhmdPCmJ942yrIQojHKQrB1HyM7 zFFEUbDptOPWVpDHazt2WKip ZqMjJ dC4momquM6aWd1gRRws5O7xcSN4ZtGL SmfmFcyU7cADevk0v/D9xJXNYCAQK8PluU1rqc2TXy7h8GW7enNmlNFGWLSj1rZfYI3ttu1lZVtIrfcr/goRAzd6PybS 3INRWgx48Od566wD Bvm9YYwjOfNDwAAAABJRU5ErkJggg=="></img>
                        <Switch id='switchIsCloseApp' text="是否强制停止(不是所有手机都支持)" paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                {/* 是否自动签到 */}
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAALDUlEQVR4Xu1df4wcZRl 3r0rxWCJcLu0kKqIFI2/ EOxEAT8TWemNPaP1ha01VJQ1IK3R4sl1KMKFWx3Fy0aSgSF1haLUdLefHvBRk5LlZA2xgRMKm2sGAn0pkUtNba529fM9u64a/d2vm93Zm62886/877P 37P  w7s/N98w1BjlQzQKkevQweIoCUi0AEIAJIOQMpH750ABFAyhlI fClA4gAUs5AyocvHUAEkHIGUj586QAigJQzkPLhSwcQAbQOA7ZtzyaiBcxsAdhFRD2u6z480SNwHOfmSqWykIjeD2AbgKeUUj0TnZdO/JbpALZt/xzA9TUGtYeZryyXy8d0BhymjWVZk4loF4AP18DdqJRaFGa8KLBaQgCWZS0hokfqEFBUSnVFQVA9TMdx1jPzN8azYebF5XL58bjzMonXEgJwHOfHzHxLnYHtVUq912TgYdg6jvMCM/ttv ZBRI 6rntjGLGiwmgJAViW9QwRfbweCUqp2Mdi2zbXy4mZ 8rl8ieiKl4YuLGT1kjSIoBGWNPzEQHo8VTTSjpAE SZuEoHMGHLzFY6gBlfY6ylAzRBnomrdAATtsxspQOY8SUdoAm GnaVDtAwdYGO0gECKRrfILX3ALZt383MlxPRFQDOboLDWq57APQope4ePtlIB7AsaysAP8e3h5BfPxHtHRwcXNXb29s3jGcigKF5gzUAHADvCSGn0RAHAOwkomdNJ8eMOoBlWe/LZDJb6z3 DGtgzPxkuVye7 OZCiCoMM3kmMlk3tnT0/OyjxEUZ/STQNu2d48zadRMOjV/QEqpj iCagvAcZyLmHm/LnBIdjcopTabCMCyrA1EdHNI8WvBuEqp2SYC8KeLmXlDhDmNgR794wmKqS0A27Z/D CqIMCQz1enVE0EYNv2XgCXhJzHGLj29vYZ27Zt26fbAWzb9tcIXBdlTjWwFymlNgbF1BKA3/qJ6MUgsAjO9yqlLEMBvAHgrAhyGYFk5ivK5fJzBgI4CCAXZU41sLcopWqtnxhjqiUAx3HmMbN/UxXrQUQPuq67zFAAzwO4LOJEz1dKvWoggJ8AiHta K9KqcCbTS0B Hf9ALojJrUW/GVKqd2GAog615JSKm9yD AvZQOwPW7 dKbIkyyA1cN/BU0EMFSYXwP4XASEe0qpkVau2wGGcvJXBn0xgpzGhYxVAP5fnjAGR0R/BrBj9KJKUwEMEe4/q/Bb4LQQ8vKfA xXSq0cjWUiAN/PsqxFmUzmmkqlclEIOSGMRTJhdoCRX2wYgxuN0YgAws6hFp6pAMLMKSxORABNVEUEMJY86QAniSnKNYHSAU4iW eGp4kfe01X6QDSASZsVbB0AOkAoSyVl5vAJq4LcgmI7xKwlYjm1anVmAc0TdTUyNW27aBn/P5LonONQDWNU3UJsG37ewC VYebXUqpj2lyF5qZ4zg7mble3O8rpe4ILeAooFQJYM6cOVMHBgZeHY/ISqVyVW9v77NREF0P07Zt/9HuuC9/Hj9 /G07duz4dxR5pUoAQ49Ra65GIqLlruuui4JkHcxaM6VE9AqAea7r/kEHoxGb1AlgSASTmXluJpO5EMA/iegvruv6awgn9LBt 4MAZgI4x58zOHr06NN9fX3 uoTIjlQKIDI2WxBYBNCCRQszZRFAmGy2IJYIoAWLFmbKIoAw2WxBLBFACxYtzJRFAGGy2YJYIoAWLFqYKYsAwmSzBbFEAAktGndfeCbeOOI/qZwCav87rXvNnzEM/RABhE5pc4DcjQyOZL8Nwk1gXDCCRniCCt7C5tBP9RYBhM1oE3h8 9SzUBncVOdllNVU9Eb2O2gi1IirCCAMFkPA4K4LsuBjmwC6ti4cVT5LhcO/CSFkFUIEEBaTTeDwinOnYyDj72J dSAM4xYqeQ8F2mkaiAA0iYrKjJfnZmCQ/bb/Ua0YzCupdOg LVsNIxGABklRmfBt530Ibf41n/x1AHoHYyGVvCf0jIOtRADBHEViwbd1zEQ7bQRjhnYARh VvFB3DRcBaLMfniF3Zq8BsAmE6Qaox6jonWlgr2UqAtCiKTwj7szNArG/507WAPUgFb2pBvbapiIAbaqaN TOjrkg8otvsvfQPip6 pcJwzRFAIaENWrOndnrQdWl320GGHuo6Gnv1WeAO2KaGgFw5/S3oHJ8BjLEOOP4y3T/65Gss69VBM7nlgBc72NVp7oRfksF71ONFNXEJxUC4Hzu8wD726u uaUK42EMDq6nH77 gglhprac7/g6QA8a j1FRS SV8FOzuO0FwDns PvrMV4CVxZTA8c/qNhgbTMOZ 9HcBaLeNhI6LHqND/JSOfJoxPfwF0ZbeB6 yuyXgNyCyi0sGnm DxFFfuzN0F4u aYfJ6Kh661cynOevTXwD5jr8B5M rj38w/gumxfRA/y bo/OEN3d23AuiO42wiO hwqFVRj4hGKdAAFn9LV ZllCp/6fN8Mr5bAFAdQNI7YOxgkqe2aVCG7y 4ekvgK7s82CDLV Zvkml/h80wi935X4E5q8Z RK QgVvwj5cnQIBdKwA0/1GRWFaRaX e0x8uKvjUTB92cQHoAVU7P FmU 41qe9AKrX5HzHHQCZTaES1lLBWxFEN3ejHUey/gMes VaRDYV stB FGfT4UAToig izAbBqV8BAVvHE/Ns0rslMwUH26Z7Kf8BEgM4uKByN7599ENKkRQFUEt3fMRIWeMyEIwGZMeeuNtPrA/0b78cppORwb8Is/ywDvFWQGr6V10T58MsgnfUvCuDN3MYhfMiEJhO2gtqXDS7P51nPegUltj4FR90vkY2IQ9oIrn6Hi4X8YxY7YOFUdYJhLXjYth0kD/m7i5xvw zswLQVxBozHQdWdPHSP3Zg0 Ok45x90E0ulAKqXg26cgf909OHEJ t0jz8ByAC4VNcBwDNU9D5pYB raWoFMNIN8ll/NW7gN3EaqgpjO5W8OQ35xuSUegEM/UO4D Cw9 HbTEXvhpjq2HAYEcAQddyZuxPE9zbM5FjHDVT0vhoSVqQwIoBR9DY4d39ygdZR0VseadVCBBcBnEQm5zu AFTX7ZkfjG4qed8xd5w4DxFADe65M3sdCFuMFm8S8lTwShNXysYiiwDG4Y27cleD WcA3hVILeEmKnj Rx1b7hAB1CkZ58 7FKj46/nG28l7H0B3TfSMXjOqEwEEsMfLLp6MSf9aA8b8N9/k4QPVL3i2ZdbQ2v5xdx9vpjBx YoADJjmfPYStGUGae3B/QZuiTYVASS6PNEnJwKInuNERxABJLo80ScnAoie40RHEAEkujzRJycCiJ7jREcQASS6PNEnJwKInuNERxABJLo80ScnAoie40RHEAEkujzRJycCiJ7jREdIogASTVgak1NKUdC4Aw18ANu2/a3Ou4PA5HyyGBABJKsesWcTmgBmz549t1Kp/Cr2EUjAhhkgohdd1/1AEIDWJcCyrHcT0b4gMDmfKAYeUUotDcpISwA iOM4m5g58W/MBA04LeeJ6ErXdQP3MtAWwNDN4CEA56aFxBYe52qllNY3iowE4BNiWdYWIlrQwuSc1qkz85Plcnm 7iCNBTD8t5CZL6cTr2ifrRtM7CJjwF/tvNN/pV0pZbRdXkMCiGwYAhw7AyKA2ClPVkARQLLqEXs2IoDYKU9WQBFAsuoRezYigNgpT1ZAEUCy6hF7NiKA2ClPVkARQLLqEXs2IoDYKU9WQBFAsuoRezYigNgpT1ZAEUCy6hF7NiKA2ClPVsD/A zHWduo4wvbAAAAAElFTkSuQmCC"></img>
                        <Switch id='switchIsAutoSign' text="是否自动签到 " paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAH4ElEQVR4Xu2dCcgVVRTHf0JGRTsUaNAKURmU7dJCBVG0KFlZlEVFWlGRZSFE2EJBpGXQRtpCZZREQbZQlmSLqZkllrbRZlmkRbZbBsW/5tnz883MdZj3Zubcc DjQ7 7nf/5zZ17Z be249w2x44ChgJbANsm/wOL8FTdkuBFcByQL nAi8CS0Mq6xeQ6HhgNHBCQFpPUh8FngYmA89kNSkLgEOBKz3w9YlowZYIhAnAa53ypwEwCrgT6F wUs9WLwVWAxcBU/o2qxMA1wLX1Kv93pqSFLgOUHzXWF8AjgRmllSZF1NPBfYCFrWa1g7A3sAcYKPAdv8OzAtM68m6q8CBwMaBVcwCjgUUP9oBmB4w4FsJXA/MTWAJrNOT9UCBIcBBwHhgy5z6bgbGtQOgqZ5Gi1n2TvIMYEkPnPEqiiuwR/IsYHBOEYcAs1s9QN7Vv87goXj7PGePFNBAfq0BX596FfNhAmBn4JOMRqlnGNqjRns15SqQd2HvIgAuA25NqfdrYH9Av92ap8BAYD6g353scgHwMnB4SoIrgFua57e3uE2BscDEFEVmCYD3gEEpCY4ANG1wa64Curh1kXeyxQJAb5H0dq vrVqPuWVz5Ymj5Zrzd3q s0IA/J3WPQDqAdyar0Dqbd4BaH5wQzxwAEJUMpzGATAc3BDXHIAQlQyncQAMBzfENQcgRCXDaRwAw8ENcc0BCFHJcBoHwHBwQ1xzAEJUMpzGATAc3BDXHIAQlQyncQAMBzfENQcgRCXDaRwAw8ENcc0BCFHJcBoHwHBwQ1xzAEJUMpymcgC07lALFbT4dHPDQpfp2uPAiJIKrBSAAcBbGd ml SjyWK0T8O9JXhWKQCnAY W4ESMRSwG9izB8UoBGANMKsGJGIv4BdisBMcrBUA7i80owYkYi3gDOLgExysFQO1/M1ljWIIv0RTxHXBKSSuzKgdAUdNSZS003SSaEBZz9GdAezA8AHxYrIh1ctUCgJJ88WIKKOAAFBDNUhYHwFI0C/jiABQQzVIWB8BSNAv44gAUEM1SFgfAUjQL OIAFBDNUhYHwFI0C/jiABQQzVIWB8BSNAv44gAUEM1SFgfAUjQL OIAFBDNUhYHwFI0C/jiABQQzVIWB8BSNAv44gAUEM1SFgfAUjQL FILALQjuT5y1JnDdTIdhvEp8FKdGlVyWyoH4OxkadiOJTtWZnGWz0WqFIB9k6VhZQarG2X9BugkLZ2OZs0qBeBc4L6GKHpXcsZuQ5ob3EwHIFAqB6BNKJ0VVMaJIX4LCKSvi8kq7QHkVxMGgVq5pIGgRascAInq08Dq0KoFANW57zU7AJEz4AA4AJ1Ph/Vj4 Igw3uAOOKc6qUD4AD4LSBmBrwHiDn6yenhOkV8HfNBYBxkeA8QR5x9EBh5nB0AB6CzAn4LiJwMB8AB8OcAMTPgPUDM0ffnAJFH3wFwAPwWEDkDDoADkD4L BPo30GgtwF90u3WfAUWAPt0cGO1XgZ9BWyX4uMWwE/N9z9qD3RM348pCiwTAFoLp3P9OtkxwAtRy9d8548Gnk9xY6EAeAw4NSWB5RWzzQ9tmAda8KJDOzvZNAFwIvBkRllnAlPD6vJUNVNgJPBwRpuGCwCdS/cFsFVKwrLOrquZNlE0RwdQbZri6Q/ADgJAdg8wOkOSOcBhwF9RyNZ8JzcAXgWGZLgyGTi/BUDICl5NF4cDzzZfH9MeHJfc0jfM8XI/YEELgJBeoFWexgt6RjC7pEMNTUejR87pg0 dMKq5vi7SPPv36leidgA0FtAp37vm5a74758nR9H 60APbQJwMlDnfY5C5PgI0NWv8cFaAOjfuwHvh5RSgzS9nKJOA0bUwOcymrA78EGroPYeoPV/omN GTX1oIydAPUI3bRHgNO7WUEPy9bRverl11gnAPRH7eV3P6ABRZ1N97xu7ur1EKDnIE03Ddy1Wdfyvo6kAaB0mkpcDYwCBtZQgS TW5a2d uG6QI4pxsF97BMbYI5BbghbQqfBUCrnQOSEeNQYHAPG59X1SXAHXmJCv5do2SB31RTrzg9eb7zTZYTIQC05xcAw5L9frTnj356bSuApwDdm7thdwMX5BSsHdTqZNKk9SNtgm L6wtAnZzuRltuBy7OKVjPQTQd/LsbDeh1mQ7A/4rfBlyaEwB1qwr 6l4Hqlv1OQD/KTsRGJsj8nPAScCqbgWjinIdALgJGJcj/owk HozaspiB BG4KqciM5Muv2VpiKfOBMzAHqUPD4nqK8kV/73FoMvn2IFQIHP2xdYbzt1z//WavBjBUBdvrr LJubdPvLLAc/RgA02NOgL8v0skRTPX0mZ95iugVomqfpXpYtTLp9HSIVhcUCwBhgUk5E302ufH0wEY3FAIAe7eoRb5bpIxh1 0uiiXziqHUALgR0DlCWfZx0  oBojPLAOh1rl7rZtlnSfCD355ZI8QqACFH1S1Nuv2mfP7WFfYsAnAW8GCOWvpSRvd8LXiJ2qwBcEbAOkZ9F6cnfK9HHXmDg0CtcNZK5yzTM31d XX7oqcyFq30AFoZo31wskybJCj4lk8JX2 QrACQuglSosivSbfvm130QcQKAOrat07B/48k L6otYNAVgCYBxzQwT8tZ1e3ry9l3QwDcF6yAKKviwr Ex75dAWs9ADyUHvhaFOrQcCi5IMPfcvnlqHAP51r0QqaROycAAAAAElFTkSuQmCC"></img>
                        <Switch id='switchIsAutoComment' text="是否自动评论" paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                {/* 是否自动清理缓存 */}
                <vertical>
                    <horizontal >
                        <img w="50" h="50" padding="16" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAIrklEQVR4Xu2di5HeNBCAlQqACgIVBCoIVABUAFQAVABUAFQAVECoAKgAUgFQAVABzHex/pNt2XpLa/2rmZub5KyHdz/tavXyEzNfer680pvGGH5setsY83rC6/7iPPuPMeb35d8vjTH8e4r05IJvgVKfGmPeXRRqFcvvnulPYww/gAEQAPOvA0rPtmTXJR0AlP3MGINyUXhqL84WTGFGoAAIfv 6gFJYZJvs0gDARL /KBuFuya8jQT6lGotBVAAhHUnfWo/qUUCAPTqj5wePlwoHRoAEC MMT MhmEUAPTsT40xH0zUy3O5YfzwvTHm2xGuojcA9PSPl96eK7CZ8 EigAHL0CX1AMD69S 1t0frFKvwzWIVmoacrQHAzKP4lPg7Wkp38CDKR364hyapFQCM4L/THl9NZwwaP1lCy2qFUlBtAOjpKJ7Bnab6EiByAIRqbqEmAPT6H9Xc19f6pkSUDwTAUJxqAfDF4quKG6QFREvgsxpjgxoAYPIJ7TT1lwAhI9YgO5UCoMrPFn21jEUQlABAnEqYp2m8BAgTcQnJKRcARvkM DTJkQCuAGuQlHIAINT7Q0f7SXLu8TDRwXupi0s5ANDzNc7vodL0OlhmficlWyoA JmvUyrQZ7tL4KuUkDwFADX93XWZVSGuACvA9HEwpQDAogQTPprkS4Dl5Ki5mVgAtPfLV/q2hW/FWIFYADTmvx4AUVYgBgB6/9/Xe39tsTEmaAViANCR/3VZClqBGACY9Ln69mxO8xwtn25PEFl1Y/k4k3D19MbZ/oEQAKzx/3xxCXy 7K/LeY0ZIp/TKeIQAMwts5P3qomjWqX7EYmrX7uqAJap4cPZwTMAZhj8cQoHK1aS2KptD5yWlDMy7 Fg8AwAJhJY779yUgBeae/QDZ4BwKCJc3pXTgrAK 0dLhKdAfDflTW/tF0BeFSiNxo4AmCWDR8KwCMA3mjgCICrj/7taysAjwB4J4WOAJhh8odXVwAeAWB5mGhglXwAMDMGADMkBWCtxV046ANghvBPXYC/  7GAT4AZvH/6gL2EOy2j/sA G25jEldwCsJzDATeGgRfQDMEP rCzjuviudbwGYYfXPfXUdBO5B4OzA7RLMLQCzbf5QAPYArNYFtgDMtvdPAdgDsJoQ2gIw04BHowD/OGDVKbYAsPmzdAOFpOhBLYBfGze9bwGYKQJQC3DcFW8zgi4As0UACsAxALdIQAEIO6zZxkW88S0ScAGQtAOWzZzsSIo64HiiQ/InX5qwKY 1kdJt8VhXSfsKbyeIpQLALlYxV6qHjUTUE9yKzjS7hHQbHLsASNkDWGPkLkHIvjZIWWjzAiDF180MgBQ3e9sk6loABaC93ZACAG/6oHsXAClzAGoB2oOoAPSR8a4WtQARglcLECGkCo88nBNQF1BBkglFSLIAD7OBFgBJO4HVAiQQVfDoCgBJ6wAKQIFWE7IqAAnCqvWoWBegFqCWis/LUQAi5KwuIEJIFR5RF1BBiKlFqAWIkBjz1FkfP4go2/dIz0  KwCZStJs9SUg1gXUf1Ut0ScBBeDOuVAAFACZU8F/VdjHJ1W3TLlLuXhzZQEQmO4HaI NpAk3BaC9vnc1SALg4XCILgf3pUASALstYVIuRZ55Klg0ALoptL01UAAiZKwWIEJIhY8QaT2cdnLHAOIOLRS pMTsUiyA92CIlIUKtQDt0f3Jfv7XtQBS7gdSANoD4D0cKs48tZdD9xqkyNh7PFzK6VW1AO259F4QIWU6WAFoD4D3ihiq5UKFp 3rP61BAWivgMNLoiRMBikAbQE4vSZOQiioALQFYHVj PaaOAnfClAA2gJwelWshEhAAWgLwOr JYnXxSsAbQE4vS6eqkcPBBWAdgDsZOuzAKNvDFcA2gEQ9cmY0R NVADaAfDhcgHnrQafBRj91XAFoB0Au8/H gCges7nPWvXDp0JHCDbl76PgR0BMHIckGoBfCtst XOA0H78oTqzcmzrX7kauDO/293BLmNHTkfEFJEjFBDZeQoMydPTFt7GYOd/z8DgL N2iUcUl6MUENl5CgzJ09MW3sBkPT5eBo1ao9gSHkxQg2VkaPMnDwxbe0BwG0L2LayozEAz40KB7E80BqbchTTK8/2HUZtu1vN/7uNOgNgpBs4bLCHil7KzKnHbS7hNd8LKP34RGzHcJ/bfTXc/jEEwMhogFAUaxBKCJZBq5tCXwpBCax8ts5jy6eN1Dfii2yH5p/GhQCQdINoCAT9u18Cu0/Gp7gAnh29OKSKzZcAF2CdWp2QBaBqCZtE8kVw3zlDE2JBF2DFN2pO4L7VV/b29H5c Ok4KsYC0IxR4UuZCO479 oj0UeiiAWA/BK2jN 3SuPfPqr3x0QBbpU6FohXwOgng77fNjDFAqgVGK3WuPqje3 qBeD5kauEca vT3lX/WqMAWwZEg6PqJr9Ejid9fNlSXUBtoyRO4ZU X4JJJn 3DGAzYcrYIbwNdWGGAlkfXA71wLw1qOWi8VIXFBDTuf7z9pZAgDlamg4noJs5edEAb7XVQjGQVCk/FoAUA6bJV7omKAbCQz4cMGMw4pSqQtwK2fZEQieF7VIM4ckwH5HrC5T88WpJgC2MSwcMVegEUKxelYF0OuRK7u0qqUWANA4liFprJSPI1QT2KCCmOChY1Xp9e47tALA1sF8AcSqW8gjB3NPRyr29UfVtwbA1ssgEb lFiEOBHo8HaeZ4m0zegFg67O7cYFh9HV0caro9xQ nsM4KL66qR9tAXz1E8bYn3seMNLbiZ5QfvfU2wIcvSAg4Cb4PbtloKejcH4w8TFnH5qBIQUA9wVxExYGfs9gHRjMoWz700yhqQVLBGD7DgBBNOH SLYSKBsfjrJZNudHbLoCAEfCwzrYY2FAwg//bn2zCZ9bQcGYbqtclM3/dRu81SLqygCEZGChcOckUs7muWcTXWWH6r3U3/8H8hTokCtnuOkAAAAASUVORK5CYII="></img>
                        <Switch id='switchIsClearCache' text="是否自动清理缓存" paddingTop="16" textColor="black" />
                    </horizontal>
                </vertical>
                {/* 屏幕滑动时间间隔 系统内部加减2秒*/}
                <vertical>
                    <horizontal >
                        <text text="屏幕滑动时间间隔(系统内部加减2秒):" textColor="red" padding="8 8 8 8" />
                        <input id="txtScreenSileTimesInterval" text="10" hint="视频之间的滑动时间间隔" inputType="number" padding="8 8 8 8" />
                    </horizontal>
                </vertical>

                {/* App启动时间 */}
                <vertical>
                    <horizontal >
                        <text text="App启动时间(秒):" textColor="red" padding="8 8 8 8" />
                        <input id="txtAppStartWaiteTime" text="30" hint="App启动时间(秒)" inputType="number" padding="8 8 8 8" />
                    </horizontal>
                </vertical>
                {/* App执行时间 */}
                <vertical>
                    <horizontal >
                        <text text="App执行时间(分):" textColor="red" padding="8 8 8 8" />
                        <input id="txtAppExecuteTime" text="120" hint="App执行时间(分)" inputType="number" padding="8 8 8 8" />
                    </horizontal>
                </vertical>
                <horizontal>
                    <button style="Widget.AppCompat.Button.Colored" id="btnStartApp" text="启动" padding="12dp" w="*" />
                </horizontal>
            </vertical>
        </scroll>
        <frame id="frameSecondTab">
            <scroll>
                <vertical>
                    <text w="auto" color="#111111" size="26" text="相关软件推荐" textColor="black" padding="8 8 8 8" />
                    <list id="reItemList" padding="25 0 8 8"  >
                        <horizontal h="40">
                            <text id="appIndex" text="{{this.ProductIndex}}、" inputType="number" w="40" gravity="center" textColor="#228B22" />
                            <text id="txtSoftName" textSize="18sp" textColor="#000000" text="{{SoftName}}" textColor="#228B22" />
                            <button text="下载" id="btnDownLoad" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                            <button text="访问" id="btnVistorWeb" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                        </horizontal>
                    </list>
                </vertical>
            </scroll>
        </frame>
    </vertical>
)
initializeFrendTipMessage()
initializeReItemList()
var CommentKeyWord = [
    '我是App小助手关注了你你要关注我哦!',
    '山高路远坑深,大军纵横驰奔,谁敢横刀立马?惟有点赞加关注大军!',
    '我的未来不是梦我相信你也是!',
    '身同感受',
    '风雨送春归,飞雪迎春到。',
    '俏也不争春,只把春来报。',
    '天若有情天亦老...',
    '...人间正道是沧桑',
    '...喜欢的人喜欢的事亦不能表达喜欢的心...',
    '三分春色二分愁,更一分风雨',
];
var isShowConsole = yadinghaoStorages.get("isShowConsole");
if (isShowConsole != null && isShowConsole == "true") {
    ui.switchIsShowConsole.setChecked(true);
} else {
    ui.switchIsShowConsole.setChecked(false);
}
var timesInterval = yadinghaoStorages.get("timesInterval");
if (timesInterval != null) {
    ui.txtScreenSileTimesInterval.setText(timesInterval);
}
var IsAutoSign = yadinghaoStorages.get("isAutoSign");
var IsClearCache = yadinghaoStorages.get("isClearCache");
var IsCashOut = yadinghaoStorages.get("isCashOut");
var IsAutoComment = yadinghaoStorages.get("isAutoComment");
if (IsAutoComment != null && IsAutoComment == "true") {
    ui.switchIsAutoComment.setChecked(true);
} else {
    ui.switchIsAutoComment.setChecked(false);
}
if (IsAutoSign != null && IsAutoSign == "true") {
    ui.switchIsAutoSign.setChecked(true);
} else {
    ui.switchIsAutoSign.setChecked(false);
}
if (IsClearCache != null && IsClearCache == "true") {
    ui.switchIsClearCache.setChecked(true);
} else {
    ui.switchIsClearCache.setChecked(false);
}
if (IsCashOut != null && IsCashOut == "true") {
    ui.switchIsCashOut.setChecked(true);
}


var WateForTime = yadinghaoStorages.get("WateForTime");
if (WateForTime != null) {
    ui.txtWateForTime.setText(WateForTime);
}
var exectueTime = yadinghaoStorages.get("exectueTime");
if (exectueTime != null) {
    ui.txtAppExecuteTime.setText(exectueTime);
}

var IsCloseApp = yadinghaoStorages.get("isCloseApp");
if (IsCloseApp != null && IsCloseApp == "true") {
    ui.switchIsCloseApp.setChecked(true);
} else {
    ui.switchIsCloseApp.setChecked(false);
}

ui.btnCopyText.on("click", function () {
    let AppCode = "460754595";
    toast("复制成功: "   AppCode);
    setClip(AppCode);
});
ui.btnDownloadApp.on("click", function () {
    try {
        app.openUrl("https://wwa.lanzoui.com/icST4rzv4kh");
    } catch (e) {
        //悬浮窗爱出错On Windows   Shift   Alt   F 代码格式
        console.show()
        toastLog("执行脚本出错...请将此页面截图联系攻城狮"   e)
    }
});

ui.btnStartApp.on("click", function () {
    let isShowConsole = ui.switchIsShowConsole.isChecked();
    let timesInterval = ui.txtScreenSileTimesInterval.getText();
    let IsAutoSign = ui.switchIsAutoSign.isChecked();
    let IsClearCache = ui.switchIsClearCache.isChecked();
    let IsAutoComment = ui.switchIsAutoComment.isChecked();
    let wateForTime = parseInt(ui.txtAppStartWaiteTime.getText());
    let IsCloseApp = ui.switchIsCloseApp.isChecked();
    let probability = 10;
    let totalTimes = ui.txtAppExecuteTime.getText() //执行时间
    let consoleMessage = "不开启控制台";
    if (isShowConsole) {
        consoleMessage = "开启控制台";
    }
    let totalHour = parseFloat(totalTimes / 60).toFixed(2);//转成小时
    //let havedHour = parseFloat(totalExecTimes / 60).toFixed(2);//转成小时
    let tipMessage = "本次共执行:"   totalHour   "小时."   consoleMessage;
    confirm(tipMessage).then(value => {
        if (value) {
            threads.start(function () {
                auto.waitFor();
                saveConfig()//保存一下配置
                threads.start(function () {
                    if (isShowConsole) {
                        console.show();
                        console.setPosition(0, device.height / 3);
                    }
                    //开启截图功能
                    if (!requestScreenCapture()) {
                        toastLog("请求截图失败");
                        stop();
                    }
                });

                let appName = "快手极速版"
                快手极速版(appName, wateForTime, timesInterval, probability, totalTimes, IsAutoSign, IsAutoComment)
                if (IsClearCache) {
                    clearAppCache()
                }
                if (IsCloseApp) {
                    clearCach(appName)
                }
            });
        } else {
            toastLog("操作被取消了");
        }
    });
});
function 快手极速版(appName, wateForTime, timesInterval, probability, execTimes, isAutoSign, isAutoComment) {
    app.launchApp(appName);//启动App
    toastLog("当前自动阅读程序"   appName   "等待进入");//系统日志提示
    cutDownBySleep(wateForTime)//启动App时候等待时间
    adolescentWindows();//关闭青少年窗口
    closeUpgradetWindows();//关闭升级提示框
    if (isAutoSign)
        autoSign(appName)
    while (true) {
        try {
            var start = new Date().getTime();//App起始时间
            let x1 = random(device.width * 0.8, device.width * 0.9);
            let y1 = device.height - (device.height * 0.15)
            let x2 = random(device.width * 0.8, device.width * 0.9);
            let y2 = device.height * 0.2
            let pressTime = random(700, 800);
            keepBrush()
            randomHeart('like_icon', probability);//随机关注百分之一的概率
            randomFollow('series_follow', probability)
            if (isAutoComment)
                AutoComment(probability)
            randomUpSildeScreen(x1, y2, x1, y1, pressTime, probability);
            randomDownSildeScreen(x1, y1, x2, y2, pressTime, timesInterval, probability);
            slideScreenDown(x1, y1, x2, y2, pressTime, timesInterval, false);
            appRunTimeRecord(appName, (new Date().getTime() - start))//记录一次时间
            computerExctueTime(appName, execTimes)
        } catch (error) {
            toastLog(appName   "刷刷刷时出现错误!"   error);
            sleep(timesInterval * 1000)
        }
    }
}
function keepBrush(){
    if (id("left_btn").exists()) {
        back()
    }
    let return_image_array=["./Image/快手极速版/返回1.png", "./Image/快手极速版/返回2.png", "./Image/快手极速版/返回3.png"]
    let ad_area_coordinate = [0, 0, device.width, device.height * 0.55]
    let threshold = 0.8
    if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
    }
}
/**
 *  自动签到
 */
function autoSign(appName) {
    let signValue = getSignTime(appName);
    if (getDate() == signValue) {
        toastLog("已签到本次签到跳过...");
        return;
    }
    let ad_area_coordinate = [0, 0, device.width, device.height * 0.55]
    let threshold = 0.8
    let get_coin_image = ["./Image/快手极速版/红包1.png", "./Image/快手极速版/红包2.png"]
    let ad_image_array = buildADArray("./Image/AD", 12);
    let sign_image_array=   ["./Image/快手极速版/快手立即签到.png", "./Image/快手极速版/立.png", "./Image/快手极速版/即.png"]
    let return_image_array=["./Image/快手极速版/返回1.png", "./Image/快手极速版/返回2.png", "./Image/快手极速版/返回3.png"]
    if (clickAreaForFindImage(get_coin_image, ad_area_coordinate, threshold)) {
        sleepRandom3() //是个网页加载的慢
        if (clickAreaForFindImage(sign_image_array, ad_area_coordinate, threshold)) {
            clickAreaForFindImage(ad_image_array)
            if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {

            }else{
                back()
            }
        }else{
            if (文字去签到()) {
                clickAreaForFindImage(ad_image_array)
                if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
                }else{
                    back()
                }
            }
            swipeDown()
            if (文字去签到()) {
                clickAreaForFindImage(ad_image_array)
                if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
                }else{
                    back()
                }
            }
            swipeDown()
            if (文字去签到()) {
                clickAreaForFindImage(ad_image_array)
                if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
                }else{
                    back()
                }
            }
            swipeDown()
            if (文字去签到()) {
                clickAreaForFindImage(ad_image_array)
                if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
                }else{
                    back()
                }
            }

        }
        if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {
                    
        }else{
            back()
        }
        
    }

    function 文字去签到() {
        if (text("去签到").exists()) {
            console.log("快手极速版去签到");
            if (clickControlBounds(text("去签到"))) {
                recordSignTime(appName);
                return true
            } else {
                return false
            }
        } else {
            return false
        }
    }

}
/**
 * 清理缓存
 */
function clearAppCache() {
    if (className("android.widget.ImageView").id("left_btn").exists()) {
        className("android.widget.ImageView").id("left_btn").findOnce().click();
        sleep(3000);
        if (className("android.widget.TextView").text("设置").exists()) {
            toastLog("点击设置");
            let b = className("android.widget.TextView").text("设置").findOne().bounds();
            click(b.centerX(), b.centerY());
            sleep(3000);
            if (className("android.widget.TextView").text("清除缓存").exists()) {
                let b = className("android.widget.TextView").text("清除缓存").findOnce().bounds();
                let result = click(b.centerX(), b.centerY());
                if (result) {
                    toastLog("清理成功");
                }
            }
        }
    }
}
/**
 * 自动评论
 */
function AutoComment(probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        let comment = CommentKeyWord[Math.floor(Math.random() * CommentKeyWord.length)];
        let buttons = className("android.widget.LinearLayout").id("comment_button").find();
        if (buttons.length > 0) {
            let clickResult = buttons[0].click();
            if (clickResult) {
                sleep(3000);
                if (id("comment_editor_holder_text").exists()) {
                    id("comment_editor_holder_text").findOnce().click();
                    sleep(1000);
                    setText(0, comment);
                    sleep(1000);
                    if (text("发送").exists()) {
                        toastLog("开启自动评论");
                        if (text("发送").findOnce().click()) {
                            toastLog("自动评论成功");
                            if (clickControlBounds(id("photo_detail_panel_close"))) {

                            } else {
                                back();
                            }
                        }
                    }
                }
            }
        }
    }
}
function saveConfig() {
    yadinghaoStorages.put("isShowConsole", ""   ui.switchIsShowConsole.isChecked()   "");
    yadinghaoStorages.put("timesInterval", ""   ui.txtScreenSileTimesInterval.getText()   "");
    yadinghaoStorages.put("isAutoSign", ""   ui.switchIsAutoSign.isChecked()   "");
    yadinghaoStorages.put("isClearCache", ""   ui.switchIsClearCache.isChecked()   "");
    yadinghaoStorages.put("isAutoComment", ""   ui.switchIsAutoComment.isChecked()   "");
    yadinghaoStorages.put("wateForTime", ""   ui.txtAppStartWaiteTime.getText()   "");
    yadinghaoStorages.put("isCloseApp", ""   ui.switchIsCloseApp.isChecked()   "");
    yadinghaoStorages.put("exectueTime", ""   ui.txtAppExecuteTime.getText()   "");
}
function initializeFrendTipMessage() {
    try {
        dialogs.build({
            title: "友情提醒",
            positive: "确定",
            negative: "复制微信",
            neutral: "访问官网",
            items: ["首先此版本是免费版本,核心技术是AutojsPro开发,所以需要开启安卓系统的无障碍服务。
其次本软件【签到】是基于找图技术研发找图技术需要适配分辨率,找图截图是依据OPPOR9SK开发分辨率是1080*1920的,故非此分辨率【签到】将无法运行。谢谢理解!!!
最后作者wx18141782993需要购买收费版本的请联系谢谢!"]
        }).on("negative", () => {
            app.openUrl("www.yadinghao.com");
        }).on("neutral", () => {
            app.openUrl("www.yadinghao.com");
        }).on("show", (dialog) => {
        }).show();

    } catch (e) {
        console.show()
        toastLog("initializeFrendTipMessage出错...请将此页面截图联系攻城狮"   e)
    }
}
function initializeReItemList() {
    try {
        var result_threads = threads.disposable();
        threads.start(function () {
            let dict_result = []
            try {
                var url_address = rootUrl   "/api/AppFindRecommendSoft?type=1";
                response = http.post(url_address, { "type": "1" });
                if (response.statusCode == 200) {
                    var product_json = response.body.json();
                    if (product_json.success == "true") {
                        var ProducCloudList = [];
                        let recProductList = JSON.parse(product_json.data)
                        for (let i = 0; i < recProductList.length; i  ) {
                            let row = { ProductIndex: (i   1), SoftName: recProductList[i].PRODUCT_NAME, DownURL: recProductList[i].DOWNLOAD_URL, VistorURL: recProductList[i].VISTOR_URL };
                            ProducCloudList.push(row);
                        }
                        dict_result = [true, ProducCloudList]
                        result_threads.setAndNotify(dict_result);
                    } else {
                        dict_result = [false, "读取云端信息出现问题:"   json.message]
                        result_threads.setAndNotify(dict_result);
                    }
                } else if (response.statusCode == 404) {
                    dict_result = [false, "读取云端信息出现问题访问服务器出现错误404错误请稍后重试"]
                    result_threads.setAndNotify(dict_result);
                } else {
                    dict_result = [false, "读取云端信息出现问题无法连接服务器"]
                    result_threads.setAndNotify(dict_result);
                }
            } catch (error) {
                dict_result = [false, "读取云端脚本出现问题:"   error]
                result_threads.setAndNotify(dict_result);
            }
        });
        result_threads = result_threads.blockedGet()
        if (result_threads[0] == false) {
            toastLog(result_threads[1])
        }
        else {
            ui.reItemList.setDataSource(result_threads[1]);
        }
    } catch (error) {
        toastLog("initializeReItemList构建推荐脚本出现错误:"   error)
    }

    ui.reItemList.on("item_bind", function (itemView, itemHolder) {
        itemView.btnDownLoad.on("click", function () {
            try {
                let item = itemHolder.item;
                let url = item.DownURL
                app.openUrl(url);
            } catch (e) {
                //悬浮窗爱出错On Windows   Shift   Alt   F 代码格式
                console.show()
                toastLog("btnDownLoad执行脚本出错...请将此页面截图联系攻城狮"   e)
            }
        });
        itemView.btnVistorWeb.on("click", function () {
            try {
                let item = itemHolder.item;
                let url = item.VistorURL
                app.openUrl(url);
            } catch (e) {
                //悬浮窗爱出错On Windows   Shift   Alt   F 代码格式
                console.show()
                toastLog("btnVistorWeb执行脚本出错...请将此页面截图联系攻城狮"   e)
            }
        });
    });
}

//#region 公共方法
function buildADArray(ad_path, ad_number) {
    let ad_array = []
    for (let i = 1; i <= ad_number; i  ) {
        let ad_full_path = ad_path   "/ad"   (i)   ".png"
        ad_array.push(ad_full_path)
    }
    return ad_array;
}
function clearCach(appName) {
    let deviceModel = device.model
    if (deviceModel == "OPPO R9sk") {
        recents()
        sleep(2000);
        click(device.width / 2, device.height / 1.19)
    } else {
        stopApp(appName)
    }
}
/**
 * 强制停止app
 * @param {应用名称} appName 
 */
function stopApp(appName) {
    try {
        openAppSetting(getPackageName(appName));
        sleep(3000);
        if (className("android.widget.Button").text("强行停止").exists()) {
            className("android.widget.Button").text("强行停止").findOnce().click();
        } else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
            }
        }
        sleep(3000);
        if (className("android.widget.Button").text("确定").exists()) {
            className("android.widget.Button").text("确定").findOnce().click();
            toastLog(appName   "已经停止!");
        }
        else {
            if (text("强行停止").exists()) {
                text("强行停止").findOnce().click();
                toastLog(appName   "已经停止!");
            } else {
                if (text("结束运行").exists()) {
                    text("结束运行").findOnce().click();
                    sleep(500);
                    if (text("确定").exists()) {
                        text("确定").findOnce().click();
                        toastLog("MIUI9 Android7"   appName   "已经停止!");
                    }
                }
            }

        }
    } catch (e) {
        toastLog(e);
    }
}
/**
 * 找图,找到并点击
 * @param {可以是数组也可以是字符串,传输数组可以多次找图知道找到为止} img_path_array 
 * @param {找图区域,默认是全屏找图,该参数可以不传输} area_region 
 * @param {相似度,默认是0.8,可以不传输} threshold 
 * @returns true表示执行成功Flase表示失败
 */
function clickAreaForFindImage(img_path_array, area_region, threshold, is_continue) {
    try {
        area_region = area_region || [0, 0, device.width, device.height] //默认的找图区域 全屏找图 前2位是坐标 后面是长度和宽度   千万别理解成是坐标
        threshold = threshold || 0.8 // 默认的相识度0.8
        is_continue = is_continue || false
        if (img_path_array instanceof Array) {
            let arrayLength = img_path_array.length
            for (let i = 0; i < arrayLength; i  ) {
                //toastLog("正在进行第"   (i   1)   "次找图...")
                img_path = img_path_array[i] //小图地址可判断是否存在
                if (!files.exists(img_path)) {
                    toastLog(img_path   "文件不存在因此跳过")
                    continue
                }
                var little_image = images.read(img_path) //小图
                var find_result_bounds = findImage(
                    captureScreen(), little_image, {
                    region: area_region,
                    threshold: threshold
                });
                if (find_result_bounds) {
                    toastLog(img_path   "图找到,准备点击坐标:"   find_result_bounds)
                    click(find_result_bounds.x, find_result_bounds.y)
                    return true
                } else {
                    //toastLog(img_path "小图存在但是在大图中未找到图片进入下一次循环...")
                }
            }
            return false
        }
        if (typeof (img_path_array) == "string") {
            img_path = img_path_array//小图地址可判断是否存在
            if (!files.exists(img_path)) {
                toastLog(img_path   "文件不存在因此跳过")
                return false
            }
            var little_image = images.read(img_path) //小图
            var find_result_bounds = findImage(
                captureScreen(), little_image, {
                region: area_region,
                threshold: threshold
            });
            if (find_result_bounds) {
                toastLog(img_path   "图找到,准备点击坐标:"   find_result_bounds)
                click(find_result_bounds.x, find_result_bounds.y)
                return true
            } else {
                //toastLog(img_path   "小图存在但是在大图中未找到图片")
                return false
            }
        }
    } catch (error) {
        toastLog("clickAreaForFindImage方法出现错误:"   error)
        return false;
    }
}
/**
 * 启动app
 * @param {*} appName 
 */
function startApp(appName) {
    sleepRandom3()
    app.launchApp(appName);//启动App
    sleep(30000);//启动App时候等待时间
    adolescentWindows();//关闭青少年窗口
    //closeUpgradetWindows();//关闭升级提示框
}
/**
 *  * 判断app今日时间否到达
 * 1、完成部分
 * 2、全部完成
 * 3、继续执行
 * @param {App名称} appName 
 * @param {总共执行时间} execTimes 
 * @param {是否碎片化} isFragmentation 
 * @param {碎片化时间} fragmentationTime 
 */
function computerExctueTime(appName, execTimes) {
    if (appName == app.getAppName(currentPackage())) {
        //toastLog("Run the same app as the task app")
    } else {
        startApp(appName)
    }
    let key = appName   storageSign   getDate();
    let havedRunTimes = yadinghaoStorages.get(""   key   ""); //系统存储已经执行的时间
    let havedMinute = (havedRunTimes / 1000) / 60;//读取到的时间是毫秒需要转换成秒,转换成秒后在转换成分钟
    toastLog(appName   "已经执行"   havedMinute.toFixed(2)   '分'   "总计:"   execTimes   "分");
}
/**
 * 贝塞尔曲线
 * @param {坐标点} ScreenPoint 
 * @param {偏移量} Offset 
 */
function bezier_curves(ScreenPoint, Offset) {
    cx = 3.0 * (ScreenPoint[1].x - ScreenPoint[0].x);
    bx = 3.0 * (ScreenPoint[2].x - ScreenPoint[1].x) - cx;
    ax = ScreenPoint[3].x - ScreenPoint[0].x - cx - bx;
    cy = 3.0 * (ScreenPoint[1].y - ScreenPoint[0].y);
    by = 3.0 * (ScreenPoint[2].y - ScreenPoint[1].y) - cy;
    ay = ScreenPoint[3].y - ScreenPoint[0].y - cy - by;
    tSquared = Offset * Offset;
    tCubed = tSquared * Offset;
    result = {
        "x": 0,
        "y": 0
    };
    result.x = (ax * tCubed)   (bx * tSquared)   (cx * Offset)   ScreenPoint[0].x;
    result.y = (ay * tCubed)   (by * tSquared)   (cy * Offset)   ScreenPoint[0].y;
    return result;
}
/**
 * 滑动(默认概率是百分之三十)
 * @param {*} qx 
 * @param {*} qy 
 * @param {*} zx 
 * @param {*} zy 
 * @param {*} time 
 * @param {*} timesInterval 
 */
function slideScreenDown(qx, qy, zx, zy, time, timesInterval, CurveBrushScreen) {
    if (CurveBrushScreen) {
        curveDown(qx, qy, zx, zy, time, timesInterval); //曲线概率
    } else {
        lineDown(qx, qy, zx, zy, time, timesInterval); //直线概率
    }
}
/**
 * 概率0-9 大于3的时候采用曲线概率 小于3的时候直线概率
 */
function randomFunction() {
    return Math.floor(Math.random() * 10);
}
/**
 * 
 * @param {*} qx 
 * @param {*} qy 
 * @param {*} zx 
 * @param {*} zy 
 * @param {*} time 
 * @param {*} timesInterval 
 */
function curveDown(qx, qy, zx, zy, time, timesInterval) {
    var xxy = [time];
    var point = [];
    var dx0 = {
        "x": qx,
        "y": qy
    };
    var dx1 = {
        "x": random(qx - 100, qx   100),
        "y": random(qy, qy   50)
    };
    var dx2 = {
        "x": random(zx - 100, zx   100),
        "y": random(zy, zy   50),
    };
    var dx3 = {
        "x": zx,
        "y": zy
    };
    for (var i = 0; i < 4; i  ) {
        eval("point.push(dx"   i   ")");
    };
    for (let i = 0; i < 1; i  = 0.08) {
        let newPoint = bezier_curves(point, i);
        xxyy = [parseInt(newPoint.x), parseInt(newPoint.y)]
        xxy.push(xxyy);
    }
    gesture.apply(null, xxy);

    let randomMin = timesInterval * 1000;
    let randomMax = (parseInt(timesInterval)   2) * 1000;
    let delayTime = random(randomMin, randomMax);
    sleep(delayTime);
}
function swipeDown() {
    let x1 = random(device.width * 0.8, device.width * 0.9);
    let y1 = device.height - (device.height * 0.2)
    let x2 = random(device.width * 0.8, device.width * 0.9);
    let y2 = device.height * 0.1
    swipe(x1, y1, x2, y2, 700);
    sleep(3000);
}
/**
 * 屏幕向下滑动并延迟8至12秒
 */
function lineDown(startX, startY, endX, endY, pressTime, timesInterval) {
    swipe(startX, startY, endX, endY, pressTime);
    let randomMin = timesInterval * 1000;
    let randomMax = (parseInt(timesInterval)   2) * 1000;
    let delayTime = random(randomMin, randomMax);
    sleep(delayTime);
}
/**
 * 按照指定概率随机上滑
 * @param {*} startX 
 * @param {*} startY 
 * @param {*} endX 
 * @param {*} endY 
 * @param {*} pressTime 
 * @param {*} probability 
 */
function randomUpSildeScreen(startX, startY, endX, endY, pressTime, probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        swipe(startX, startY, endX, endY, pressTime);
        delayTime = random(12000, 15000);
        sleep(delayTime);
    }
}
/**
 * 连续下滑对上一个无兴趣
 * 其实得和上滑做个排他,既然无兴趣不要在上滑
 */
function randomDownSildeScreen(startX, startY, endX, endY, pressTime, timesInterval, probability) {
    let randomIndex = random(1, parseInt(probability));
    if (randomIndex == 1) {
        swipe(startX, startY, endX, endY, pressTime);
        sleep(3500);
        swipe(startX, startY, endX, endY, pressTime);
        sleep(timesInterval);
    }
}
/**
 * 随机点赞
 * @param {点赞ID}} view_id 
 */
function randomHeart(view_id, probability) {
    index = random(1, parseInt(probability));
    if (index == 1) {
        var target = id(view_id).findOnce();
        if (target == null) {
            doubleClick() //双击加关注
            return;
        } else {
            target.click();
        }
    }
}
/**
 * 随机关注
 * @param {控件ID} follow_view_id 
 * @param {概率} probability 
 */
function randomFollow(follow_view_id, probability) {
    index = random(1, parseInt(probability));
    if (index == 1) {
        var target = id(follow_view_id).findOnce();
        if (target == null) {
            return;
        } else {
            target.click();
            sleep(1000);
        }
    }
}
/**
 * 双击屏幕(很多视频其实就是点赞)
 */
function doubleClick() {
    //增加个随机概念 最多敲击三次
    click(200, 200)
    sleep(100)
    click(202, 210)
}
/**
 * 记录App一次运行的时间
 * @param {appName} appName 
 * @param {本次运行时间} recordTimes 
 */
function appRunTimeRecord(appName, recordTimes) {
    let key = appName   storageSign   getDate();
    var havedRunTimes = yadinghaoStorages.get(""   key   "");
    let value = "";
    if (havedRunTimes == null) {
        yadinghaoStorages.put(key, parseInt(recordTimes));
    } else {
        value = parseInt(havedRunTimes)   parseInt(recordTimes);
        yadinghaoStorages.put(key, value);
    }
}
/**
 * 获取当前时间格式yyyyMMdd
 */
function getDate() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()   1;
    if (month < 10) {
        month = "0"   month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0"   day;
    };
    return year   "-"   month   "-"   day;
}

/**
 * 
 */
function getTime() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()   1;
    if (month < 10) {
        month = "0"   month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0"   day;
    };
    var hour = date.getHours();
    if (hour < 10) {
        hour = "0"   hour;
    };
    var minute = date.getMinutes();
    if (minute < 10) {
        minute = "0"   minute;
    };
    var seconds = date.getSeconds();     //获取当前秒数(0-59)
    var millisecond = date.getMilliseconds();    //获取当前毫秒数(0-999)
    return year   "-"   month   "-"   day   " "   hour   ":"   minute   ":"   seconds   ":"   millisecond;
}
/**
 * 青少年窗口
 */
function adolescentWindows() {
    if (text("我知道了").exists()) {
        text("我知道了").findOnce().click();
    }
    if (text("知道了").exists()) {
        text("知道了").findOnce().click();
    }
    if (text("同意").exists()) {
        clickControlBounds(text("同意"));
    }
}
/**
 * 升级窗口
 */
function closeUpgradetWindows() {
    clickControlBounds(text("以后再说"))
    clickControlBounds(text("直接无视"))
    clickControl(text("我在想想"))
    clickControl(text("稍候再说"))
    clickControl(text("以后"))
    clickControl(text("以后更新"))
    clickControl(text("回头再说"))
    clickControl(text("回头在说"))
    clickControl(text("先去看看"))
    clickControl(text("先去逛逛"))
    clickControl(text("以后再说"))
    clickControl(text("忽略该版本"))
    clickControl(text("游客逛逛"))
    clickControl(text("暂不更新"))

}
/**
 * 倒计时方法适用于脚本
 * @param {倒计时时间} lasterTime 
 */
function cutDownBySleep(lasterTime, message) {
    message = message || ""
    for (let i = lasterTime; i => 0; i--) {
        console.info(message   "剩余"   i   "秒...")
        sleep(1000)
        if (i == 1) {
            return
        }
    }
}
/**
 * 休眠随机0.1秒至0.5秒
 */
function sleepRandom0() {
    sleep(random(100, 500));
}
/**
 * 休眠随机1秒至3秒
 */
function sleepRandom1() {
    sleep(random(1000, 3000));
}
/**
 * 休眠随机3秒至5秒
 */
function sleepRandom3() {
    sleep(random(3000, 5000));
}
/**
 * 休眠随机5秒至7秒
 */
function sleepRandom5() {
    sleep(random(5000, 7000));
}
/**
 * 休眠随机7秒至9秒
 */
function sleepRandom7() {
    sleep(random(7000, 9000));
}
/**
 * 休眠随机11秒至9秒
 */
function sleepRandom9() {
    sleep(random(9000, 11000));
}
/**
 * 点击屏幕上的坐标
 * @param {坐标} b 
 */
function clickBounds(b) {
    return clickResult = click(b.centerX(), b.centerY());
}
/**
 * 点击屏幕上的坐标
 * @param {坐标} b 
 */
function clickControlBounds(element) {
    let clickResult = false;
    if (element == null) {
        return false;
    }
    try {
        if (element.exists()) {
            toastLog("准备click:"   element);
            let b = element.findOnce().bounds();
            clickResult = click(b.centerX(), b.centerY());
            sleep(random(2000, 3200));
        } else {

        }
        return clickResult;
    } catch (error) {
        toastError("clickControlBounds方法出现错误:"   error)
        return false;
    }
}
/**
 * 点击UI上的控件
 * @param {UI上的元素} element 
 */
function clickControl(element) {
    let clickResult = false;
    if (element == null) {
        return false;
    }
    try {
        if (element.exists()) {
            toastLog("准备click:"   element);
            let b = element.findOnce().bounds();
            clickResult = click(b.centerX(), b.centerY());
            sleep(random(2000, 3200));
        } else {

        }
        return clickResult;
    } catch (error) {
        toastError("clickControlBounds方法出现错误:"   error)
        return false;
    }
}
/**
 * 记录App签到时间
 * @param {App名称} appName 
 */
function recordSignTime(appName) {
    let key = appName   storageSign;
    let value = getDate();
    yadinghaoStorages.put(key, value);
}
/**
 * 记录App签到时间
 * @param {App名称} appName 
 */
 function getSignTime(appName) {
    let key = appName   storageSign;
    let value = yadinghaoStorages.get(key);
    return value;
}
//#endregion

三、核心技术

此次用的是autojsPro7 主要使用了找图功能。友情提醒autojs4支持找图但是会宕掉,而autojsPro8不支持快手无法进行元素分析。

 

二、 机型选择

我开发采用的是OppoR9SK 分辨率是1920*1080的。所以大家尽量和我机器一样,如果不一样分辨率一样也行,实在不一样就自己截图替换一下图片就行了。

我封装了几个NB的找图方法还算NBA大家可以看看。

http://www.yadinghao.com/article/details/202108190001


打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在