diff --git a/.github/1 b/.github/1
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/.github/1
@@ -0,0 +1 @@
+
diff --git a/.github/pull.yml b/.github/pull.yml
new file mode 100644
index 000000000..a2bbd1a57
--- /dev/null
+++ b/.github/pull.yml
@@ -0,0 +1,8 @@
+# 使用方法见[@lxk0301](https://raw.githubusercontent.com/lxk0301/scripts/master/githubAction.md)
+
+version: "1"
+rules: # Array of rules
+ - base: master # Required. Target branch
+ upstream: Sunert:master # Required. Must be in the same fork network.
+ mergeMethod: hardreset # Optional, one of [none, merge, squash, rebase, hardreset], Default: none.
+ mergeUnstable: true # Optional, merge pull request even when the mergeable_state is not clean. Default: false
\ No newline at end of file
diff --git a/.github/workflows/QQread.yml b/.github/workflows/QQread.yml
new file mode 100644
index 000000000..7e7266278
--- /dev/null
+++ b/.github/workflows/QQread.yml
@@ -0,0 +1,50 @@
+# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
+
+name: QQ阅读APP
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '30 10-23 * * *'
+ watch:
+ types: started
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ if: github.event.repository.owner.id == github.event.sender.id
+ env:
+ QQREADAPP_HEADER: ${{ secrets.QQREADAPP_HEADER }}
+ QQREADAPP_VIDEOHD: ${{ secrets.QQREADAPP_VIDEOHD }}
+ COOKIES_SPLIT: ${{ secrets.COOKIES_SPLIT }}
+
+ steps:
+ - name: Checkout
+ run: |
+ git clone https://github.com/ziye12/JavaScript.git ~/JavaScript
+ - name: Use Node.js 12.x
+ uses: actions/setup-node@v1
+ with:
+ node-version: 12.x
+ - name: npm install
+ if: env.QQREADAPP_HEADER
+ run: |
+ cd ~/JavaScript
+ npm install
+ - name: '运行 【QQ阅读APP】'
+ if: env.QQREADAPP_HEADER
+ run: |
+ cd ~/JavaScript
+ node Task/QQread.js
+ env:
+
+ PUSH_KEY: ${{ secrets.PUSH_KEY }}
+ BARK_PUSH: ${{ secrets.BARK_PUSH }}
+ TG_BOT_TOKEN: ${{ secrets.TG_BOT_TOKEN }}
+ TG_USER_ID: ${{ secrets.TG_USER_ID }}
+ BARK_SOUND: ${{ secrets.BARK_SOUND }}
+ DD_BOT_TOKEN: ${{ secrets.DD_BOT_TOKEN }}
+ DD_BOT_SECRET: ${{ secrets.DD_BOT_SECRET }}
+
+
diff --git a/.github/workflows/qqreads.yml b/.github/workflows/qqreads.yml
new file mode 100644
index 000000000..78e9ae550
--- /dev/null
+++ b/.github/workflows/qqreads.yml
@@ -0,0 +1,50 @@
+# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
+
+name: 企鹅读书
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '*/11 * * * *'
+ watch:
+ types: started
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ if: github.event.repository.owner.id == github.event.sender.id
+ env:
+ QQREAD_BODY: ${{ secrets.QQREAD_BODY }}
+ QQREAD_TIMEURL: ${{ secrets.QQREAD_TIMEURL }}
+ QQREAD_TIMEHD: ${{ secrets.QQREAD_TIMEHD }}
+
+ steps:
+ - name: Checkout
+ run: |
+ git clone https://github.com/ziye12/JavaScript.git ~/JavaScript
+ - name: Use Node.js 12.x
+ uses: actions/setup-node@v1
+ with:
+ node-version: 12.x
+ - name: npm install
+ if: env.QQREAD_TIMEHD
+ run: |
+ cd ~/JavaScript
+ npm install
+ - name: '运行 【企鹅读书】'
+ if: env.QQREAD_TIMEHD
+ run: |
+ cd ~/JavaScript
+ node Task/qqreads.js
+ env:
+
+ PUSH_KEY: ${{ secrets.PUSH_KEY }}
+ BARK_PUSH: ${{ secrets.BARK_PUSH }}
+ TG_BOT_TOKEN: ${{ secrets.TG_BOT_TOKEN }}
+ TG_USER_ID: ${{ secrets.TG_USER_ID }}
+ BARK_SOUND: ${{ secrets.BARK_SOUND }}
+ DD_BOT_TOKEN: ${{ secrets.DD_BOT_TOKEN }}
+ DD_BOT_SECRET: ${{ secrets.DD_BOT_SECRET }}
+
+
diff --git a/.github/workflows/sync-repo.yml b/.github/workflows/sync-repo.yml
new file mode 100644
index 000000000..9ab0005cf
--- /dev/null
+++ b/.github/workflows/sync-repo.yml
@@ -0,0 +1,47 @@
+# File: .github/workflows/repo-sync.yml
+name: sync-ziye12-JavaScript
+on:
+ schedule:
+ - cron: '1 */3 * * *'
+ workflow_dispatch:
+ watch:
+ types: started
+ repository_dispatch:
+ types: sync-ziye12-JavaScript
+jobs:
+ repo-sync:
+ env:
+ PAT: ${{ secrets.PAT }} #此处PAT需要申请,教程详见:https://www.jianshu.com/p/bb82b3ad1d11
+ dst_key: ${{ secrets.GITEE_PRIVATE_KEY }} # 我自己同步到gitee使用,其他人可忽略
+ runs-on: ubuntu-latest
+ if: github.event.repository.owner.id == github.event.sender.id
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ persist-credentials: false
+
+ - name: sync ziye12-JavaScript
+ uses: repo-sync/github-sync@v2
+ if: env.PAT
+ with:
+ source_repo: "https://github.com/ziye12/JavaScript.git"
+ source_branch: "master"
+ destination_branch: "master"
+ github_token: ${{ secrets.PAT }}
+ # 我自己同步到gitee使用,其他人可忽略
+ - name: sync github -> gitee
+ uses: Yikun/hub-mirror-action@master
+ if: env.dst_key
+ with:
+ # 必选,需要同步的Github用户(源)
+ src: github/Sunert
+ # 必选,需要同步到的Gitee的用户(目的)
+ dst: gitee/Sunert
+ # 必选,更新指定库名字
+ static_list: "Scripts"
+
+ # 必选,Gitee公钥对应的私钥,https://gitee.com/profile/sshkeys
+ dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
+
+ # 必选,Gitee对应的用于创建仓库的token,https://gitee.com/profile/personal_access_tokens
+ dst_token: ${{ secrets.GITEE_TOKEN }}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..dbbe35581
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+.
diff --git a/Script/1 b/Script/1
new file mode 100644
index 000000000..d00491fd7
--- /dev/null
+++ b/Script/1
@@ -0,0 +1 @@
+1
diff --git a/Task/QQread.js b/Task/QQread.js
new file mode 100644
index 000000000..342d05487
--- /dev/null
+++ b/Task/QQread.js
@@ -0,0 +1,376 @@
+
+/*ziye
+
+本人github地址 https://github.com/ziye12/JavaScript
+转载请备注个名字,谢谢
+
+11.28 ⚠️无时长功能,只有签到,视频,宝箱
+
+日均0.18收益
+
+
+
+
+
+⚠️cookie获取方法:
+
+进 QQ阅读APP 点我的 获取cookie 秘密为 QQREADAPP_HEADER 多账号换行
+
+点 免费 福利 日常福利-看视频 获取视频cookie 秘密为 QQREADAPP_VIDEOHD 多账号换行
+
+
+
+⚠️宝箱奖励为60分钟一次,自己根据情况设置定时,
+
+
+
+hostname=commontgw6.reader.qq.com,eventv36.reader.qq.com
+
+############## 圈x
+
+#QQ阅读APP获取cookie
+
+https:\/\/commontgw6\.reader\.qq\.com\/v7_5_2\/nativepage\/getAcctInfo url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/QQread.js
+
+#QQ阅读APP获取视频cookie
+https:\/\/eventv36\.reader\.qq\.com\/activity\/pkg11955\/watchVideo url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/QQread.js
+
+############## loon
+
+//QQ阅读APP获取cookie
+https:\/\/commontgw6\.reader\.qq\.com\/v7_5_2\/nativepage\/getAcctInfo script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/QQreads.js,requires-header=true, tag=QQ阅读APP获取cookie
+
+//QQ阅读APP获取时长cookie
+https:\/\/eventv36\.reader\.qq\.com\/activity\/pkg11955\/watchVideo script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/QQreads.js, requires-header=true, tag=QQ阅读APP获取视频cookie
+
+############## surge
+
+//QQ阅读APP获取cookie
+QQ阅读APP获取cookie = type=https:\/\/commontgw6\.reader\.qq\.com\/v7_5_2\/nativepage\/getAcctInfo,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/QQreads.js,
+
+//QQ阅读APP获取视频cookie
+QQ阅读APP获取视频cookie = https:\/\/eventv36\.reader\.qq\.com\/activity\/pkg11955\/watchVideo,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/QQreads.js,
+
+
+*/
+
+const jsname='QQ阅读APP'
+const $ = Env(jsname)
+const notify = $.isNode() ? require('./sendNotify') : '';
+var tz='';
+var kz='';
+var task='';
+
+
+var COOKIES_SPLIT='\n' //自定义多cookie之间连接的分隔符,默认为\n换行分割,不熟悉的不要改动和配置,为了兼容本地node执行
+
+const logs = 0; //0为关闭日志,1为开启
+const notifyInterval=1
+//0为关闭通知,1为所有通知,2为宝箱领取成功通知,
+
+const dd=1//单次任务延迟,默认1秒
+
+
+
+let QQreadhdArr = [], QQreadheaderVal = '',
+QQreadvideohdArr = [], QQreadvideoheaderVal = '',
+ QQreadHD = [], QQreadvideoHD = [];
+ if ($.isNode()) {
+ if (process.env.COOKIES_SPLIT){
+ COOKIES_SPLIT = process.env.COOKIES_SPLIT;
+ };
+ console.log(`============ cookies分隔符为:${COOKIES_SPLIT} =============\n`);
+ if (process.env.QQREADAPP_HEADER && process.env.QQREADAPP_HEADER.indexOf(COOKIES_SPLIT) > -1) {
+ QQreadHD = process.env.QQREADAPP_HEADER.split(COOKIES_SPLIT);
+ } else {
+ QQreadHD = process.env.QQREADAPP_HEADER.split()
+ };
+
+
+
+ if (process.env.QQREADAPP_VIDEOHD && process.env.QQREADAPP_VIDEOHD.indexOf(COOKIES_SPLIT) > -1) {
+ QQreadvideoHD = process.env.QQREADAPP_VIDEOHD.split(COOKIES_SPLIT);
+ } else {
+ QQreadvideoHD = process.env.QQREADAPP_VIDEOHD.split()
+ };
+
+}
+
+if ($.isNode()) {
+ Object.keys(QQreadHD).forEach((item) => {
+ if (QQreadHD[item]) {
+ QQreadhdArr.push(QQreadHD[item])
+ }
+ })
+
+ Object.keys(QQreadvideoHD).forEach((item) => {
+ if (QQreadvideoHD[item]) {
+ QQreadvideohdArr.push(QQreadvideoHD[item])
+ }
+ })
+
+ console.log(`============ 共${QQreadhdArr.length}个QQ阅读APP账号 =============\n`)
+ console.log(`============ 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} =============\n`)
+ } else {
+ QQreadhdArr.push($.getdata('QQreadhd'));
+ QQreadvideohdArr.push($.getdata('QQreadvideohd'));
+
+}
+
+ if (isGetCookie = typeof $request !== 'undefined') {
+ GetCookie();
+ $.done();
+ }
+
+
+
+
+function GetCookie() {
+ if($request &&$request.url.indexOf("getAcctInfo")>=0) {
+
+const QQreadheaderVal = JSON.stringify($request.headers)
+ if (QQreadheaderVal) $.setdata(QQreadheaderVal,'QQreadhd')
+ $.log(`[${jsname}] 获取Cookie: 成功,QQreadheaderVal: ${QQreadheaderVal}`)
+ $.msg(jsname, `获取cookie: 成功🎉`, ``)
+ }
+
+
+
+ if($request &&$request.url.indexOf("watchVideo")>=0) {
+
+const QQreadvideoheaderVal = JSON.stringify($request.headers)
+ if (QQreadvideoheaderVal) $.setdata(QQreadvideoheaderVal,'QQreadvideohd')
+ $.log(`[${jsname}] 获取视频Cookie: 成功,QQreadvideoheaderVal: ${QQreadvideoheaderVal}`)
+ $.msg(jsname, `获取视频cookie: 成功🎉`, ``)
+ }
+
+
+
+}
+
+
+
+
+let K = 0;
+ all()
+function all(){
+ QQreadheaderVal = QQreadhdArr[K];
+ QQreadvideoheaderVal = QQreadvideohdArr[K];
+ for(var i=0;i<7;i++)
+ { (function(i) {
+ setTimeout(function() {
+
+ if (i==0)
+QQreadinfo();//用户名
+
+else if (i==1)
+QQreadtask();//任务列表
+
+else if (i==2)
+QQreadboxinfo();//宝箱
+
+else if (i==4&& task.data&&task.data.watchVideo.videoCount==0)
+QQreadsign();//金币签到
+
+else if (i==5&& task.data&&task.data.watchVideo.videoCount<=9)
+QQreadvideo();//视频任务
+
+
+
+else if (i == 6 && K < QQreadhdArr.length - 1) {
+K += 1;
+all();
+ } else if (i == 6 && K == QQreadhdArr.length - 1) {
+ showmsg();//通知
+ console.log(tz)
+ $.done();
+ }
+ },
+
+ (i + 1) * dd * 1000
+ );
+ })(i);
+ }
+}
+
+
+
+//用户名
+function QQreadinfo() {
+return new Promise((resolve, reject) => {
+
+ const toQQreadinfourl = {
+
+ url: 'https://commontgw6.reader.qq.com/v7_5_2/nativepage/getAcctInfo',
+ headers: JSON.parse(QQreadheaderVal),
+ timeout:60000};
+ $.get(toQQreadinfourl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 用户名: ${data}`)
+ info =JSON.parse(data)
+kz+=
+'\n========== 【'+info.nick+'】 ==========\n';
+tz+=
+'\n========== 【'+info.nick+'】 ==========\n';
+
+resolve()
+ })
+ })
+ }
+
+
+
+
+
+//任务列表
+function QQreadtask() {
+return new Promise((resolve, reject) => {
+
+ const toQQreadtaskurl ={url: 'https://eventv3.reader.qq.com/activity/pkg11955/initV2',
+ headers: JSON.parse(QQreadvideoheaderVal),
+ timeout:60000};
+ $.get(toQQreadtaskurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 任务列表: ${data}`)
+ task =JSON.parse(data)
+kz+=
+ '【现金余额】:'+
+ task.data.userBalance.cash+
+ '元\n'+
+ '【今日收益】:'+
+ (task.data.userBalance.coin/30000).toFixed(2)+
+ '元\n';
+
+tz+=
+ '【现金余额】:'+
+ task.data.userBalance.cash+
+ '元\n'+
+ '【今日收益】:'+
+ (task.data.userBalance.coin/30000).toFixed(2)+
+ '元\n'+
+ '【签到天数】:'+
+ (task.data.userType-1)+
+ '天\n'+
+ '【已看视频】:'+
+ task.data.watchVideo.videoCount+
+ '/10次\n'
+
+
+resolve()
+
+ })
+ })
+ }
+
+
+
+
+
+//金币签到
+function QQreadsign() {
+return new Promise((resolve, reject) => {
+ const toQQreadsignurl ={url: 'https://eventv36.reader.qq.com/activity/pkg11955/punchCard_v2',
+ headers: JSON.parse(QQreadvideoheaderVal),
+ timeout:60000};
+ $.get(toQQreadsignurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 金币签到: ${data}`)
+ sign =JSON.parse(data)
+if (sign.code==0)
+ {
+tz+=
+'【金币签到】:获得'+sign.data.coinNum+'金币\n'
+ }
+resolve()
+ })
+ })
+ }
+
+
+
+//视频奖励
+function QQreadvideo() {
+return new Promise((resolve, reject) => {
+ const toQQreadvideourl ={url: 'https://eventv36.reader.qq.com/activity/pkg11955/watchVideo',
+ headers: JSON.parse(QQreadvideoheaderVal),
+ timeout:60000};
+ $.get(toQQreadvideourl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 视频奖励: ${data}`)
+ video =JSON.parse(data)
+if (video.code==0)
+ {
+tz+=
+'【视频任务'+video.data.videoCount+'】:获得100金币\n'
+}
+
+resolve()
+ })
+ })
+ }
+
+
+
+
+
+//宝箱奖励
+ function QQreadboxinfo() {
+ return new Promise((resolve, reject) => {
+ const toQQreadboxinfourl ={url: 'https://eventv3.reader.qq.com/activity/pkg11955/queryOpenBoxInfo',
+ headers: JSON.parse(QQreadvideoheaderVal),
+ timeout:60000};
+ $.get(toQQreadboxinfourl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 宝箱奖励详情: ${data}`)
+ boxinfo =JSON.parse(data)
+ var cz=new Date().getTime()-boxinfo.data.openTime
+ var CZ=3600-(cz/1000).toFixed(0)
+ if (CZ>=1){
+ tz+=
+ '【宝箱剩余'+boxinfo.data.openNum+'】:差'+CZ+'秒\n';
+ kz+=
+ '【宝箱剩余'+boxinfo.data.openNum+'】:差'+CZ+'秒\n';
+ }
+
+ else if(CZ<=0) {
+ const toQQreadboxurl ={url: 'https://eventv3.reader.qq.com/activity/pkg11955/openBox',
+ headers: JSON.parse(QQreadvideoheaderVal),
+ timeout:60000};
+ $.get(toQQreadboxurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 宝箱奖励: ${data}`)
+ box =JSON.parse(data)
+ if (box.code==0){
+ tz+=
+ '【宝箱剩余'+box.data.openNum+'】:获得'+box.data.coin+'金币\n'
+ kz+=
+ '【宝箱剩余'+box.data.openNum+'】:获得'+box.data.coin+'金币\n'
+ }
+
+ })
+
+ }
+ })
+ resolve()
+
+ })
+ }
+
+
+
+
+function showmsg() {
+tz += `\n\n========= 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} \n\n`;
+
+let d = new Date(new Date().getTime() + 8 * 60 * 60 * 1000);
+if (d.getHours()==12 && d.getMinutes()<=20 ||d.getHours()==23 && d.getMinutes()>=40 ) {
+ notify.sendNotify(jsname,kz)
+ }
+
+if (notifyInterval==1)
+$.msg(jsname,'',tz)//显示所有通知
+
+else if (notifyInterval==2&&CZ<=0&&boxinfo.data.openNum>0)
+$.msg(jsname,'',tz)//宝箱领取成功通知
+
+
+
+}
+
+
+// prettier-ignore
+function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
diff --git a/Task/qqreads.js b/Task/qqreads.js
new file mode 100644
index 000000000..6f42fb1ea
--- /dev/null
+++ b/Task/qqreads.js
@@ -0,0 +1,771 @@
+/* ziye
+
+github地址 https://github.com/ziye12/JavaScript
+TG频道地址 https://t.me/ziyescript
+TG交流群 https://t.me/joinchat/AAAAAE7XHm-q1-7Np-tF3g
+
+转载请备注个名字,谢谢
+
+11.25 增加 阅读时长上传,阅读金币,阅读随机金币
+11.25 修复翻倍宝箱不同时领取的问题.增加阅读金币判定
+11.25 修复阅读时长问题,阅读金币问题,请重新获取时长cookie
+11.26 随机金币只有一次,故去除,调整修复阅读金币问题,增加时长上传限制
+11.26 增加领取周时长奖励
+11.26 增加结束命令
+11.27 调整通知为,成功开启宝箱再通知
+11.28 修复错误
+11.29 更新 支持action.默认每天21点到21点20通知
+12.2 修复打卡问题
+12.3 缩短运行时间,由于企鹅读书版本更新.请手动进去看一次书
+12.3 调整推送时间为12点和24点左右
+12.6 精简打印通知
+12.7 解决1金币问题,务必重新获取一次更新body
+12.8 更新支持boxjs
+12.10 默认现金大于10且在23点提现10元,23点40后显示今日收益统计
+
+
+⚠️cookie获取方法:
+
+进 https://m.q.qq.com/a/s/d3eacc70120b9a37e46bad408c0c4c2a
+
+进书库选择一本书,看10秒以下,然后退出,获取时长url和时长header以及更新body,看书一定不能超过10秒
+
+
+
+Secrets对应关系如下,多账号默认换行
+
+qqreadbodyVal 👉 QQREAD_BODY
+qqreadtimeurlVal 👉 QQREAD_TIMEURL
+qqreadtimeheaderVal 👉 QQREAD_TIMEHD
+
+
+
+⚠️宝箱奖励为20分钟一次,自己根据情况设置定时,建议设置11分钟一次
+
+hostname=mqqapi.reader.qq.com
+
+############## 圈x
+
+#企鹅读书获取更新body
+https:\/\/mqqapi\.reader\.qq\.com\/log\/v4\/mqq\/track url script-request-body https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js
+
+#企鹅读书获取时长cookie
+https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid? url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js
+
+############## loon
+
+//企鹅读书获取更新body
+http-request https:\/\/mqqapi\.reader\.qq\.com\/log\/v4\/mqq\/track script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js,requires-body=true, tag=企鹅读书获取更新body
+
+//企鹅读书获取时长cookie
+http-request https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid? script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js, requires-header=true, tag=企鹅读书获取时长cookie
+
+############## surge
+
+//企鹅读书获取更新body
+企鹅读书获取更新body = type=http-request,pattern=https:\/\/mqqapi\.reader\.qq\.com\/log\/v4\/mqq\/track,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js,
+
+//企鹅读书获取时长cookie
+企鹅读书获取时长cookie = type=http-request,pattern=https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid?,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js,
+
+
+*/
+
+const jsname = "企鹅读书";
+const $ = Env(jsname);
+$.idx = ($.idx = ($.getval('qeSuffix') || '1') - 1) > 0 ? ($.idx + 1 + '') : ''; // 账号扩展字符
+const notify = $.isNode() ? require("./sendNotify") : "";
+
+let tz = "";
+let kz = "";
+let task = "";
+let config = "";
+let day=0
+let K = 0;
+
+
+
+let COOKIES_SPLIT = "\n"; // 自定义多cookie之间连接的分隔符,默认为\n换行分割,不熟悉的不要改动和配置,为了兼容本地node执行
+
+const logs = 0; // 0为关闭日志,1为开启
+const notifyInterval = 3;
+// 0为关闭通知,1为所有通知,2为宝箱领取成功通知,3为宝箱每15次通知一次
+
+const dd = 1; // 单次任务延迟,默认1秒
+const TIME = 30; // 单次时长上传限制,默认5分钟
+const maxtime = 1; // 每日上传时长限制,默认12小时
+const wktimess = 1200; // 周奖励领取标准,默认1200分钟
+
+const d = new Date(new Date().getTime() + 8 * 60 * 60 * 1000);
+
+const qqreadbdArr = [];
+let qqreadbodyVal = "";
+const qqreadtimeurlArr = [];
+let qqreadtimeurlVal = "";
+const qqreadtimehdArr = [];
+let qqreadtimeheaderVal = "";
+let qqreadBD = [];
+let qqreadtimeURL = [];
+let qqreadtimeHD = [];
+if ($.isNode()) {
+ if (process.env.COOKIES_SPLIT) {
+ COOKIES_SPLIT = process.env.COOKIES_SPLIT;
+ }
+ console.log(
+ `============ cookies分隔符为:${JSON.stringify(
+ COOKIES_SPLIT
+ )} =============\n`
+ );
+ if (
+ process.env.QQREAD_BODY &&
+ process.env.QQREAD_BODY.indexOf(COOKIES_SPLIT) > -1
+ ) {
+ qqreadBD = process.env.QQREAD_BODY.split(COOKIES_SPLIT);
+ } else {
+ qqreadBD = process.env.QQREAD_BODY.split();
+ }
+
+ if (
+ process.env.QQREAD_TIMEURL &&
+ process.env.QQREAD_TIMEURL.indexOf(COOKIES_SPLIT) > -1
+ ) {
+ qqreadtimeURL = process.env.QQREAD_TIMEURL.split(COOKIES_SPLIT);
+ } else {
+ qqreadtimeURL = process.env.QQREAD_TIMEURL.split();
+ }
+
+ if (
+ process.env.QQREAD_TIMEHD &&
+ process.env.QQREAD_TIMEHD.indexOf(COOKIES_SPLIT) > -1
+ ) {
+ qqreadtimeHD = process.env.QQREAD_TIMEHD.split(COOKIES_SPLIT);
+ } else {
+ qqreadtimeHD = process.env.QQREAD_TIMEHD.split();
+ }
+}
+
+if ($.isNode()) {
+ Object.keys(qqreadBD).forEach((item) => {
+ if (qqreadBD[item]) {
+ qqreadbdArr.push(qqreadBD[item]);
+ }
+ });
+ Object.keys(qqreadtimeURL).forEach((item) => {
+ if (qqreadtimeURL[item]) {
+ qqreadtimeurlArr.push(qqreadtimeURL[item]);
+ }
+ });
+ Object.keys(qqreadtimeHD).forEach((item) => {
+ if (qqreadtimeHD[item]) {
+ qqreadtimehdArr.push(qqreadtimeHD[item]);
+ }
+ });
+
+ console.log(
+ `============ 共${qqreadtimehdArr.length}个企鹅读书账号 =============\n`
+ );
+ console.log(
+ `============ 脚本执行-北京时间(UTC+8):${new Date(
+ new Date().getTime() + 8 * 60 * 60 * 1000
+ ).toLocaleString()} =============\n`
+ );
+} else {
+ qqreadbdArr.push($.getdata("qqreadbd"));
+ qqreadtimeurlArr.push($.getdata("qqreadtimeurl"));
+ qqreadtimehdArr.push($.getdata("qqreadtimehd"));
+ // 根据boxjs中设置的额外账号数,添加存在的账号数据进行任务处理
+ let qeCount = ($.getval('qeCount') || '1') - 0;
+ for (let i = 2; i <= qeCount; i++) {
+ if ($.getdata(`qqreadbd${i}`)) {
+ qqreadbdArr.push($.getdata(`qqreadbd${i}`));
+ qqreadtimeurlArr.push($.getdata(`qqreadtimeurl${i}`));
+ qqreadtimehdArr.push($.getdata(`qqreadtimehd${i}`));
+ }
+ }
+}
+
+if ((isGetCookie = typeof $request !== "undefined")) {
+ GetCookie();
+$.done();
+}
+
+function GetCookie() {
+
+if ($request && $request.url.indexOf("addReadTimeWithBid?") >= 0) {
+ const qqreadtimeurlVal = $request.url;
+ if (qqreadtimeurlVal) $.setdata(qqreadtimeurlVal, "qqreadtimeurl" + $.idx);
+ $.log(
+ `[${jsname + $.idx}] 获取时长url: 成功,qqreadtimeurlVal: ${qqreadtimeurlVal}`
+ );
+ $.msg(jsname + $.idx, `获取时长url: 成功🎉`, ``);
+ const qqreadtimeheaderVal = JSON.stringify($request.headers);
+ if (qqreadtimeheaderVal) $.setdata(qqreadtimeheaderVal, "qqreadtimehd" + $.idx);
+ $.log(
+ `[${jsname + $.idx}] 获取时长header: 成功,qqreadtimeheaderVal: ${qqreadtimeheaderVal}`
+ );
+ $.msg(jsname + $.idx, `获取时长header: 成功🎉`, ``);
+ }
+ else if ($request &&$request.body.indexOf("bookDetail_bottomBar_read_C")>=0&&$request.body.indexOf("bookRead_show_I")>=0&&$request.body.indexOf("topBar_left_back_C")<0&&$request.body.indexOf("bookRead_dropOut_shelfYes_C")<0){
+ const qqreadbodyVal = $request.body;
+ if (qqreadbodyVal) $.setdata(qqreadbodyVal, "qqreadbd" + $.idx);
+ $.log(
+ `[${jsname + $.idx}] 获取更新body: 成功,qqreadbodyVal: ${qqreadbodyVal}`
+ );
+ $.msg(jsname + $.idx, `获取更新body: 成功🎉`, ``);
+
+ }
+
+}
+
+
+
+
+all();
+function all() {
+ qqreadbodyVal = qqreadbdArr[K];
+ qqreadtimeurlVal = qqreadtimeurlArr[K];
+ qqreadtimeheaderVal = qqreadtimehdArr[K];
+ for (let i = 0; i < 13; i++) {
+ (function (i) {
+ setTimeout(
+ function () {
+ if (i == 0)
+ qqreadinfo(); // 用户名
+ if (i == 1) {
+ qqreadwktime(); // 周时长查询
+ qqreadconfig(); // 时长查询
+ qqreadtrack();//更新
+ } else if (i == 2){
+ qqreadtask();// 任务列表
+ if (config.data &&config.data.pageParams.todayReadSeconds / 3600 <= maxtime)qqreadtime(); // 上传时长
+}
+ else if (i == 3 ){
+ qqreadpick();// 领周时长奖励
+ if (task.data && task.data.taskList[0].doneFlag == 0)
+ qqreaddayread();// 阅读任务
+ if (task.data && task.data.taskList[1].doneFlag == 0)
+ qqreadssr1();// 阅读金币1
+ if (task.data && task.data.taskList[2].doneFlag == 0) {
+ qqreadsign(); // 金币签到
+ qqreadtake(); // 阅豆签到
+}
+ if (task.data && task.data.taskList[3].doneFlag == 0)
+ qqreadvideo();// 视频任务
+}
+ else if (i == 7 ){
+ if (task.data && task.data.treasureBox.doneFlag == 0)
+ qqreadbox();// 宝箱
+ if (task.data && task.data.taskList[1].doneFlag == 0)
+ qqreadssr2();// 阅读金币2
+ if (task.data && task.data.taskList[2].doneFlag == 0)
+ qqreadsign2();// 签到翻倍
+}
+ else if (i == 8){
+ if (task.data &&
+task.data.user.amount >= 100000&&d.getHours() == 23)
+ qqreadwithdraw();//现金提现
+}
+ else if (i == 9){
+ if (d.getHours() == 23 && d.getMinutes() >= 40)
+ qqreadtrans();//今日收益累计
+}
+ else if (i == 11 ){
+ if (task.data && task.data.treasureBox.videoDoneFlag == 0)
+ qqreadbox2();// 宝箱翻倍
+ if (task.data && task.data.taskList[1].doneFlag == 0)
+ qqreadssr3();// 阅读金币3
+}
+ else if (i == 12){
+ if ( K < qqreadbdArr.length - 1) {
+ K += 1;
+ all();
+} else if (K == qqreadbdArr.length - 1) {
+ showmsg(); // 通知
+ $.done();
+ }
+ }
+},
+
+ (i + 1) * dd * 1000
+ );
+ })(i);
+ }
+}
+
+
+
+// 任务列表
+function qqreadtask() {
+ return new Promise((resolve, reject) => {
+ const toqqreadtaskurl = {
+ url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/page?fromGuid=",
+ headers: JSON.parse(qqreadtimeheaderVal),
+
+ timeout: 60000,
+ };
+ $.get(toqqreadtaskurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 任务列表: ${data}`);
+ task = JSON.parse(data);
+ kz +=
+ `【现金余额】:${(task.data.user.amount / 10000).toFixed(2)}元\n` +
+ `【已开宝箱】:${task.data.treasureBox.count}个\n`;
+
+ tz +=
+ `【现金余额】:${(task.data.user.amount / 10000).toFixed(2)}元\n` +
+ `【第${task.data.invite.issue}期】:时间${task.data.invite.dayRange}\n` +
+ ` 已邀请${task.data.invite.inviteCount}人,再邀请${task.data.invite.nextInviteConfig.count}人获得${task.data.invite.nextInviteConfig.amount}金币\n` +
+ `【${task.data.taskList[0].title}】:${task.data.taskList[0].amount}金币,${task.data.taskList[0].actionText}\n` +
+ `【${task.data.taskList[1].title}】:${task.data.taskList[1].amount}金币,${task.data.taskList[1].actionText}\n` +
+ `【${task.data.taskList[2].title}】:${task.data.taskList[2].amount}金币,${task.data.taskList[2].actionText}\n` +
+ `【${task.data.taskList[3].title}】:${task.data.taskList[3].amount}金币,${task.data.taskList[3].actionText}\n` +
+ `【宝箱任务${task.data.treasureBox.count + 1}】:${
+ task.data.treasureBox.tipText
+ }\n` +
+ `【${task.data.fans.title}】:${task.data.fans.fansCount}个好友,${task.data.fans.todayAmount}金币\n`;
+
+ resolve();
+ });
+ });
+}
+
+
+
+
+
+
+
+// 金币统计
+function qqreadtrans() {
+ return new Promise((resolve, reject) => {
+for(var y=1;y<9;y++){
+ const daytime=new Date(new Date().toLocaleDateString()).getTime()
+ const toqqreadtransurl = {
+ url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/trans/list?pn="+y,
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreadtransurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 今日收益: ${data}`);
+ trans = JSON.parse(data);
+ for(var i=0;i<20;i++){
+if(trans.data.list[i].createTime>=daytime)
+ day+=trans.data.list[i].amount;
+}
+tz+="【今日收益】:累计"+day+'\n'
+resolve();
+ });
+ }
+ });
+}
+
+
+
+// 更新
+function qqreadtrack() {
+ return new Promise((resolve, reject) => {
+ const body = qqreadbodyVal.replace(new RegExp(/"dis":[0-9]{13}/),`"dis":${new Date().getTime()}`)
+ const toqqreadtrackurl = {
+ url: "https://mqqapi.reader.qq.com/log/v4/mqq/track",
+ headers: JSON.parse(qqreadtimeheaderVal),
+ body: body,
+ timeout: 60000,
+ };
+ $.post(toqqreadtrackurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 更新: ${data}`);
+ track = JSON.parse(data);
+ tz += `【数据更新】:更新${track.msg}\n`;
+ resolve();
+ });
+ });
+}
+
+
+//提现
+//function qqreadwithdraw() {
+// return new Promise((resolve, reject) => {
+// const toqqreadwithdrawurl = {
+// url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/withdraw?amount=100000",
+// headers: JSON.parse(qqreadtimeheaderVal),
+// timeout: 60000,
+// };
+// $.post(toqqreadwithdrawurl, (error, response, data) => {
+// if (logs) $.log(`${jsname}, 提现: ${data}`);
+// withdraw = JSON.parse(data);
+//if(withdraw.data.code==0)
+// tz += `【现金提现】:成功提现10元\n`;
+// kz += `【现金提现】:成功提现10元\n`;
+// resolve();
+// });
+// });
+//}
+
+
+
+
+// 用户名
+function qqreadinfo() {
+ return new Promise((resolve, reject) => {
+ const toqqreadinfourl = {
+ url: "https://mqqapi.reader.qq.com/mqq/user/init",
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreadinfourl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 用户名: ${data}`);
+ info = JSON.parse(data);
+ kz += `\n========== 【${info.data.user.nickName}】 ==========\n`;
+ tz += `\n========== 【${info.data.user.nickName}】 ==========\n`;
+
+ resolve();
+ });
+ });
+}
+
+// 阅豆签到
+function qqreadtake() {
+ return new Promise((resolve, reject) => {
+ const toqqreadtakeurl = {
+ url: "https://mqqapi.reader.qq.com/mqq/sign_in/user",
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.post(toqqreadtakeurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 阅豆签到: ${data}`);
+ take = JSON.parse(data);
+ if (take.data.takeTicket > 0) {
+ tz += `【阅豆签到】:获得${take.data.takeTicket}豆\n`;
+ }
+
+ resolve();
+ });
+ });
+}
+
+// 阅读时长任务
+function qqreadconfig() {
+ return new Promise((resolve, reject) => {
+ const toqqreadconfigurl = {
+ url:
+ "https://mqqapi.reader.qq.com/mqq/page/config?router=%2Fpages%2Fbook-read%2Findex&options=",
+ headers: JSON.parse(qqreadtimeheaderVal),
+ };
+ $.get(toqqreadconfigurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 阅读时长查询: ${data}`);
+ config = JSON.parse(data);
+ if (config.code == 0)
+ tz += `【时长查询】:今日阅读${(
+ config.data.pageParams.todayReadSeconds / 60
+ ).toFixed(0)}分钟\n`;
+
+ resolve();
+ });
+ });
+}
+
+// 阅读时长
+function qqreadtime() {
+ return new Promise((resolve, reject) => {
+ const toqqreadtimeurl = {
+ url: qqreadtimeurlVal.replace(/readTime=/g, `readTime=${TIME}`),
+ headers: JSON.parse(qqreadtimeheaderVal),
+ };
+ $.get(toqqreadtimeurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 阅读时长: ${data}`);
+ time = JSON.parse(data);
+ if (time.code == 0) tz += `【阅读时长】:上传${TIME / 6}分钟\n`;
+
+ resolve();
+ });
+ });
+}
+
+// 阅读金币1
+function qqreadssr1() {
+ return new Promise((resolve, reject) => {
+ const toqqreadssr1url = {
+ url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=30`,
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ if (config.data && config.data.pageParams.todayReadSeconds / 60 >= 1) {
+ $.get(toqqreadssr1url, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 金币奖励1: ${data}`);
+ ssr1 = JSON.parse(data);
+ if (ssr1.data.amount > 0)
+ tz += `【阅读金币1】获得${ssr1.data.amount}金币\n`;
+
+ resolve();
+ });
+ }
+ });
+}
+
+// 阅读金币2
+function qqreadssr2() {
+ return new Promise((resolve, reject) => {
+ const toqqreadssr2url = {
+ url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=300`,
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ if (config.data && config.data.pageParams.todayReadSeconds / 60 >= 5) {
+ $.get(toqqreadssr2url, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 金币奖励2: ${data}`);
+ ssr2 = JSON.parse(data);
+ if (ssr2.data.amount > 0)
+ tz += `【阅读金币2】获得${ssr2.data.amount}金币\n`;
+
+ resolve();
+ });
+ }
+ });
+}
+
+// 阅读金币3
+function qqreadssr3() {
+ return new Promise((resolve, reject) => {
+ const toqqreadssr3url = {
+ url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=1800`,
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ if (config.data && config.data.pageParams.todayReadSeconds / 60 >= 30) {
+ $.get(toqqreadssr3url, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 金币奖励3: ${data}`);
+ ssr3 = JSON.parse(data);
+ if (ssr3.data.amount > 0)
+ tz += `【阅读金币3】获得${ssr3.data.amount}金币\n`;
+
+ resolve();
+ });
+ }
+ });
+}
+
+// 金币签到
+function qqreadsign() {
+ return new Promise((resolve, reject) => {
+ const toqqreadsignurl = {
+ url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/clock_in/page",
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreadsignurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 金币签到: ${data}`);
+ sign = JSON.parse(data);
+ if (sign.data.videoDoneFlag) {
+ tz += `【金币签到】:获得${sign.data.todayAmount}金币\n`;
+ }
+ resolve();
+ });
+ });
+}
+
+// 金币签到翻倍
+function qqreadsign2() {
+ return new Promise((resolve, reject) => {
+ const toqqreadsign2url = {
+ url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/clock_in_video",
+
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreadsign2url, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 金币签到翻倍: ${data}`);
+ sign2 = JSON.parse(data);
+ if (sign2.code == 0) {
+ tz += `【签到翻倍】:获得${sign2.data.amount}金币\n`;
+ }
+
+ resolve();
+ });
+ });
+}
+
+// 每日阅读
+function qqreaddayread() {
+ return new Promise((resolve, reject) => {
+ const toqqreaddayreadurl = {
+ url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/read_book",
+
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreaddayreadurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 每日阅读: ${data}`);
+ dayread = JSON.parse(data);
+ if (dayread.code == 0) {
+ tz += `【每日阅读】:获得${dayread.data.amount}金币\n`;
+ }
+
+ resolve();
+ });
+ });
+}
+
+// 视频奖励
+function qqreadvideo() {
+ return new Promise((resolve, reject) => {
+ const toqqreadvideourl = {
+ url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/watch_video",
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreadvideourl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 视频奖励: ${data}`);
+ video = JSON.parse(data);
+ if (video.code == 0) {
+ tz += `【视频奖励】:获得${video.data.amount}金币\n`;
+ }
+
+ resolve();
+ });
+ });
+}
+
+// 宝箱奖励
+function qqreadbox() {
+ return new Promise((resolve, reject) => {
+ const toqqreadboxurl = {
+ url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/treasure_box",
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreadboxurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 宝箱奖励: ${data}`);
+ box = JSON.parse(data);
+ if (box.data.count >= 0) {
+ tz += `【宝箱奖励${box.data.count}】:获得${box.data.amount}金币\n`;
+ }
+
+ resolve();
+ });
+ });
+}
+
+// 宝箱奖励翻倍
+function qqreadbox2() {
+ return new Promise((resolve, reject) => {
+ const toqqreadbox2url = {
+ url:
+ "https://mqqapi.reader.qq.com/mqq/red_packet/user/treasure_box_video",
+
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreadbox2url, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 宝箱奖励翻倍: ${data}`);
+ box2 = JSON.parse(data);
+ if (box2.code == 0) {
+ tz += `【宝箱翻倍】:获得${box2.data.amount}金币\n`;
+ }
+
+ resolve();
+ });
+ });
+}
+
+// 本周阅读时长
+function qqreadwktime() {
+ return new Promise((resolve, reject) => {
+ const toqqreadwktimeurl = {
+ url: `https://mqqapi.reader.qq.com/mqq/v1/bookShelfInit`,
+ headers: JSON.parse(qqreadtimeheaderVal),
+ };
+ $.get(toqqreadwktimeurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 阅读时长: ${data}`);
+ wktime = JSON.parse(data);
+ if (wktime.code == 0)
+ tz += `【本周阅读时长】:${wktime.data.readTime}分钟\n`;
+
+ resolve();
+ });
+ });
+}
+
+// 本周阅读时长奖励任务
+function qqreadpick() {
+ return new Promise((resolve, reject) => {
+ const toqqreadpickurl = {
+ url: `https://mqqapi.reader.qq.com/mqq/pickPackageInit`,
+ headers: JSON.parse(qqreadtimeheaderVal),
+ };
+ if (wktime.data.readTime >= wktimess && wktime.data.readTime <= 1250) {
+ $.get(toqqreadpickurl, (error, response, data) => {
+ if (logs) $.log(`${jsname},周阅读时长奖励任务: ${data}`);
+ pick = JSON.parse(data);
+ if (pick.data[7].isPick == true) tz += "【周时长奖励】:已全部领取\n";
+
+ for (let i = 0; i < pick.data.length; i++) {
+ setTimeout(() => {
+ const pickid = pick.data[i].readTime;
+ const Packageid = [
+ "10",
+ "10",
+ "20",
+ "30",
+ "50",
+ "80",
+ "100",
+ "120",
+ ];
+ const toqqreadPackageurl = {
+ url: `https://mqqapi.reader.qq.com/mqq/pickPackage?readTime=${pickid}`,
+ headers: JSON.parse(qqreadtimeheaderVal),
+ timeout: 60000,
+ };
+ $.get(toqqreadPackageurl, (error, response, data) => {
+ if (logs) $.log(`${jsname}, 领周阅读时长: ${data}`);
+ Package = JSON.parse(data);
+ if (Package.code == 0)
+ tz += `【周时长奖励${i + 1}】:领取${Packageid[i]}阅豆\n`;
+ });
+ }, i * 100);
+ }
+ });
+ resolve();
+ }
+ });
+}
+
+function showmsg() {
+ tz += `\n\n========= 脚本执行-北京时间(UTC+8):${new Date(
+ new Date().getTime() + 8 * 60 * 60 * 1000
+ ).toLocaleString()} \n\n`;
+
+
+ if (
+ (d.getHours() == 12 && d.getMinutes() <= 20) ||
+ (d.getHours() == 23 && d.getMinutes() >= 40)
+ ) {
+ notify.sendNotify(jsname, kz);
+ }
+
+ if (notifyInterval != 1) console.log(tz); // 无通知时,打印通知
+
+ if (notifyInterval == 1) $.msg(jsname, "", tz);
+ // 显示所有通知
+ else if (
+ notifyInterval == 2 &&
+ task.data &&
+ task.data.treasureBox.doneFlag == 0
+ )
+ $.msg(jsname, "", tz);
+ // 宝箱领取成功通知
+ else if (
+ (notifyInterval == 3 && task.data && task.data.treasureBox.count == 0) ||
+ task.data.treasureBox.count == 15 ||
+ task.data.treasureBox.count == 30 ||
+ task.data.treasureBox.count == 45 ||
+ task.data.treasureBox.count == 60
+ )
+ $.msg(jsname, "", tz); // 宝箱每15次通知一次
+
+
+
+
+}
+
+
+// prettier-ignore
+function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
diff --git a/Task/sendNotify.js b/Task/sendNotify.js
new file mode 100644
index 000000000..b0874bb07
--- /dev/null
+++ b/Task/sendNotify.js
@@ -0,0 +1,255 @@
+const $ = new Env();
+// =======================================微信server酱通知设置区域===========================================
+//此处填你申请的SCKEY.
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入PUSH_KEY)
+let SCKEY = '';
+
+// =======================================Bark App通知设置区域===========================================
+//此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX)
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入BARK_PUSH)
+let BARK_PUSH = '';
+//BARK app推送铃声,铃声列表去APP查看复制填写
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入BARK_SOUND , Value输入app提供的铃声名称,例如:birdsong)
+let BARK_SOUND = '';
+
+
+// =======================================telegram机器人通知设置区域===========================================
+//此处填你telegram bot 的Token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入TG_BOT_TOKEN)
+let TG_BOT_TOKEN = '';
+//此处填你接收通知消息的telegram用户的id,例如:129xxx206
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入TG_USER_ID)
+let TG_USER_ID = '';
+
+// =======================================钉钉机器人通知设置区域===========================================
+//此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入DD_BOT_TOKEN)
+let DD_BOT_TOKEN = '';
+//密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串
+let DD_BOT_SECRET = '';
+
+if (process.env.PUSH_KEY) {
+ SCKEY = process.env.PUSH_KEY;
+}
+if (process.env.BARK_PUSH) {
+ if(process.env.BARK_PUSH.indexOf('https') > -1 || process.env.BARK_PUSH.indexOf('http') > -1) {
+ //兼容BARK自建用户
+ BARK_PUSH = process.env.BARK_PUSH
+ } else {
+ BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH}`
+ }
+ if (process.env.BARK_SOUND) {
+ BARK_SOUND = process.env.BARK_SOUND
+ }
+} else {
+ if(BARK_PUSH && BARK_PUSH.indexOf('https') === -1 && BARK_PUSH.indexOf('http') === -1) {
+ //兼容BARK本地用户只填写设备码的情况
+ BARK_PUSH = `https://api.day.app/${BARK_PUSH}`
+ }
+}
+if (process.env.TG_BOT_TOKEN) {
+ TG_BOT_TOKEN = process.env.TG_BOT_TOKEN;
+}
+if (process.env.TG_USER_ID) {
+ TG_USER_ID = process.env.TG_USER_ID;
+}
+
+if (process.env.DD_BOT_TOKEN) {
+ DD_BOT_TOKEN = process.env.DD_BOT_TOKEN;
+ if (process.env.DD_BOT_SECRET) {
+ DD_BOT_SECRET = process.env.DD_BOT_SECRET;
+ }
+}
+
+async function sendNotify(text, desp) {
+ //提供四种通知
+ await serverNotify(text, desp);
+ await BarkNotify(text, desp);
+ await tgBotNotify(text, desp);
+ await ddBotNotify(text, desp);
+}
+
+function serverNotify(text, desp) {
+ return new Promise(resolve => {
+ if (SCKEY) {
+ //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换
+ desp = desp.replace(/[\n\r]/g, '\n\n');
+ const options = {
+ url: `https://sc.ftqq.com/${SCKEY}.send`,
+ body: `text=${text}&desp=${desp}`,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ }
+ $.post(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\n发送通知调用API失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.errno === 0) {
+ console.log('\nserver酱发送通知消息成功\n')
+ } else if (data.errno === 1024) {
+ console.log('\nPUSH_KEY 错误\n')
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve(data);
+ }
+ })
+ } else {
+ console.log('\n您未提供server酱的SCKEY,取消微信推送消息通知\n');
+ resolve()
+ }
+ })
+}
+
+function BarkNotify(text, desp) {
+ return new Promise(resolve => {
+ if (BARK_PUSH) {
+ const options = {
+ url: `${BARK_PUSH}/${encodeURIComponent(text)}/${encodeURIComponent(desp)}?sound=${BARK_SOUND}`,
+ }
+ $.get(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\nBark APP发送通知调用API失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.code === 200) {
+ console.log('\nBark APP发送通知消息成功\n')
+ } else {
+ console.log(`\n${data.message}\n`);
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve();
+ }
+ })
+ } else {
+ console.log('\n您未提供Bark的APP推送BARK_PUSH,取消Bark推送消息通知\n');
+ resolve()
+ }
+ })
+}
+
+function tgBotNotify(text, desp) {
+ return new Promise(resolve => {
+ if (TG_BOT_TOKEN && TG_USER_ID) {
+ const options = {
+ url: `https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage`,
+ body: `chat_id=${TG_USER_ID}&text=${text}\n\n${desp}`,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ }
+ $.post(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\ntelegram发送通知消息失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.ok) {
+ console.log('\nTelegram发送通知消息完成。\n')
+ } else if (data.error_code === 400) {
+ console.log('\n请主动给bot发送一条消息并检查接收用户ID是否正确。\n')
+ } else if (data.error_code === 401){
+ console.log('\nTelegram bot token 填写错误。\n')
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve(data);
+ }
+ })
+ } else {
+ console.log('\n您未提供telegram机器人推送所需的TG_BOT_TOKEN和TG_USER_ID,取消telegram推送消息通知\n');
+ resolve()
+ }
+ })
+}
+function ddBotNotify(text, desp) {
+ return new Promise(resolve => {
+ const options = {
+ url: `https://oapi.dingtalk.com/robot/send?access_token=${DD_BOT_TOKEN}`,
+ json: {
+ "msgtype": "text",
+ "text": {
+ "content": ` ${text}\n\n${desp}`
+ }
+ },
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }
+ if (DD_BOT_TOKEN && DD_BOT_SECRET) {
+ const crypto = require('crypto');
+ const dateNow = Date.now();
+ const hmac = crypto.createHmac('sha256', DD_BOT_SECRET);
+ hmac.update(`${dateNow}\n${DD_BOT_SECRET}`);
+ const result = encodeURIComponent(hmac.digest('base64'));
+ options.url = `${options.url}×tamp=${dateNow}&sign=${result}`;
+ $.post(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\n钉钉发送通知消息失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.errcode === 0) {
+ console.log('\n钉钉发送通知消息完成。\n')
+ } else {
+ console.log(`\n${data.errmsg}\n`)
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve(data);
+ }
+ })
+ } else if (DD_BOT_TOKEN) {
+ $.post(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\n钉钉发送通知消息失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.errcode === 0) {
+ console.log('\n钉钉发送通知消息完成。\n')
+ } else {
+ console.log(`\n${data.errmsg}\n`)
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve(data);
+ }
+ })
+ } else {
+ console.log('\n您未提供钉钉机器人推送所需的DD_BOT_TOKEN或者DD_BOT_SECRET,取消钉钉推送消息通知\n');
+ resolve()
+ }
+ })
+}
+module.exports = {
+ sendNotify,
+ BarkNotify,
+ SCKEY,
+ BARK_PUSH,
+ TG_BOT_TOKEN,
+ TG_USER_ID,
+ DD_BOT_TOKEN,
+}//这里导出SCKEY,BARK_PUSH等通知参数是jd_bean_sign.js处需要
+// prettier-ignore
+function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;$.isMute||(this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o))),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)}
\ No newline at end of file
diff --git a/Task/ttwkziye.js b/Task/ttwkziye.js
new file mode 100644
index 000000000..4be9d0546
--- /dev/null
+++ b/Task/ttwkziye.js
@@ -0,0 +1,220 @@
+/*ZIYE 感谢 Sunert 大佬的原js 天天挖矿
+
+
+js制作时间:2020-10-20
+
+https://raw.githubusercontent.com/ziye12/JavaScript/master/ttwkziye.js
+
+本脚本仅适用支付宝小程序天天挖矿,支持Actions多账号运行
+获取Cookie方法:
+1.将下方[rewrite_local]和[MITM]地址复制的相应的区域下
+2.打开小程序,获取收益cookie,点击挖矿获取签到Cookie,获取后请注释或禁用Cookie
+3.挖矿获取Cookie,已经挖矿无法获取
+
+
+QX 1.0.6+ :
+[task_local]
+#支付宝天天挖矿
+0 9 * * * https://raw.githubusercontent.com/ziye12/JavaScript/master/ttwkziye.js
+[rewrite_local]
+https:\/\/operation-api\.jimistore\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/ttwkziye.js
+
+~~~~~~~~~~~~~~~~
+
+Loon 2.1.0+
+[Script]
+#支付宝天天挖矿
+cron "04 00 * * *" script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/ttwkziye.js, enabled=true, tag=支付宝天天挖矿
+http-request https:\/\/operation-api\.jimistore\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/ttwkziye.js
+
+
+
+
+~~~~~~~~~~~~~~~~
+Surge 4.0 :
+[Script]
+支付宝天天挖矿 = type=cron,cronexp=35 5 0 * * *,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/ttwkziye.js,script-update-interval=0
+
+支付宝天天挖矿 = type=http-request,pattern=https:\/\/operation-api\.jimistore\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/ttwkziye.js
+
+
+
+[MITM]
+hostname = operation-api.jimistore.com
+~~~~~~~~~~~~~~~~
+*/
+
+const $ = new Env('支付宝天天挖矿')//js名字 支付宝天天挖矿
+
+
+const notify = $.isNode() ? require('./sendNotify') : '';
+let bodyArr = [],headerArr = [];//定义Secret设置 合集
+
+if (isGetCookie = typeof $request !==`undefined`) {
+ GetCookie();
+ $.done() //cookie获取判定
+}
+//Secret合集循环方式判定,其中 ZFBWK_BODY ZFBWK_HEADER 为git仓库中的Secret合集等同于手机js的ck
+if ($.isNode()) {
+ if (process.env.ZFBWK_BODY && process.env.ZFBWK_BODY.indexOf('#') > -1) {
+ wkbody = process.env.ZFBWK_BODY.split('#');
+ console.log(`您选择的是用"#"隔开\n`)
+ }
+ else if (process.env.ZFBWK_BODY && process.env.ZFBWK_BODY.indexOf('\n') > -1) {
+ wkbody = process.env.ZFBWK_BODY.split('\n');
+ console.log(`您选择的是用换行隔开\n`)
+ } else {
+ wkbody = process.env.ZFBWK_BODY.split()
+ };
+ //判定读取Secret合集,赋值于bodyArr与headerArr
+ if (process.env.ZFBWK_HEADER && process.env.ZFBWK_HEADER.indexOf('#') > -1) {
+ wkheader = process.env.ZFBWK_HEADER.split('#');
+ }
+ else if (process.env.ZFBWK_HEADER && process.env.ZFBWK_HEADER.split('\n').length > 0) {
+ wkheader = process.env.ZFBWK_HEADER.split('\n');
+ } else {
+ wkheader = process.env.ZFBWK_HEADER.split()
+ };
+ Object.keys(wkbody).forEach((item) => {
+ if (wkbody[item]) {
+ bodyArr.push(wkbody[item])
+ }
+ });
+ Object.keys(wkheader).forEach((item) => {
+ if (wkheader[item]) {
+ headerArr.push(wkheader[item])
+ }
+ });
+ console.log(`============ 脚本执行-国际标准时间(UTC):${new Date().toLocaleString()} =============\n`)
+ console.log(`============ 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} =============\n`)
+ } else {
+ bodyArr.push($.getdata('sy_body_wk'))//判定读取ck
+ headerArr.push($.getdata('sy_header_wk'))//判定读取ck
+}
+ //异步运行
+!(async () => {
+ if (!bodyArr[0]) {
+ $.msg($.name, '【提示】请先获取支付宝天天挖矿一cookie')
+ return;
+ }
+ console.log(`------------- 共${bodyArr.length}个账号\n`)
+ for (let i = 0; i < bodyArr.length; i++) {
+ if (bodyArr[i]) {
+ bodyVal = bodyArr[i];
+ headerVal = headerArr[i];
+ $.index = i + 1;
+ console.log(`\n开始【天天挖矿${$.index}】`)
+ await getsign();
+ if (headerVal !== undefined){
+ await getsy();
+ } else {
+ wksy = `【天天挖矿】❌ 未获取Cooiekie`
+ };
+ $.msg($.name, wksign,wksy)//手机js通知项 wksign headerbag docard
+ if ($.isNode()) {
+ await notify.sendNotify($.name+ wksign,wksy)//git通知项 wksign headerbag docard
+ }
+ }
+ }
+})()
+ .catch((e) => $.logErr(e))
+ .finally(() => $.done())
+
+
+
+
+
+
+
+
+// Cookie获取
+function GetCookie() {
+if ($request && $request.method != 'OPTIONS' && $request.url.match(/createSign/)) {
+ const signurlVal = $request.url
+ const bodyVal = $request.body
+ const headerVal = JSON.stringify($request.headers)
+
+ //const signheaderVal = JSON.stringify($request.headers)
+ $.log(`bodyVal:${bodyVal}`)
+ if (bodyVal) $.setdata(bodyVal, 'sy_body_wk')
+ if (headerVal) $.setdata(headerVal, 'sy_header_wk')
+ $.msg($.name, `获取天天挖矿Cookie: 成功`, ``)
+
+
+
+}
+}
+
+
+
+//天天挖矿
+function getsign() {
+ return new Promise((resolve, reject) =>{
+ let signurl = {
+ url: `https://operation-api.jimistore.com/api/mining/v1/sign/createSign`,
+ headers: JSON.parse(headerVal),body: bodyVal
+ }
+ $.post(signurl, async(error, response, data) => {
+ let result = JSON.parse(data)
+ if (result.data.success == 'true'){
+ wksign = '【天天挖矿】✅ 挖矿成功, 收益:'+result.amount/100+'元💰\n'
+ }
+ else if (result.data.success == 'false'){
+ wksign = `【天天挖矿】 重复挖矿\n`
+ }
+ else if (result.code == 40101){
+ wksign = `【天天挖矿】 挖矿失败, 原因:${result.message}\n`
+ }
+ else {
+ wksign = `【天天挖矿】 挖矿失败, 原因:`+result.errmsg
+ $.msg($.name, wksign, ``)
+ if ($.isNode()) {
+ await notify.sendNotify($.name, wksign)
+ }//git通知项
+ return
+ }
+ resolve()
+ })
+ })
+}
+
+
+
+
+
+
+
+//天天挖矿收益
+function getsy() {
+ return new Promise((resolve, reject) =>{
+ let syurl = {
+ url: `https://operation-api.jimistore.com/api/mining/v1/sign/showSignInfo`,
+ headers: JSON.parse(headerVal)
+ }
+ $.post(syurl, async(error, response, data) => {
+ let result = JSON.parse(data)
+ if (result.code == 200){
+ wksy = '【挖矿收益】账户总收益:'+result.data.cumulativeMoney/100+`元💰\n【挖矿记录】连续挖矿${result.data.numberInRounds}天,总计挖矿${result.data.cumulativeSignCount}天\n`
+ }
+
+ else if (result.code == 40101){
+ wksy = `【挖矿收益】 挖矿失败, 原因:${result.message}\n`
+ }
+
+ else {
+ wksy = `【挖矿收益】 挖矿失败, 原因:`+result.errmsg
+ $.msg($.name, wksy, ``)
+ if ($.isNode()) {
+ await notify.sendNotify($.name, wksy)
+ }//git通知项
+ return
+ }
+ resolve()
+ })
+ })
+}
+
+
+
+
+function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
diff --git a/Task/ziye.boxjs.json b/Task/ziye.boxjs.json
new file mode 100644
index 000000000..6363a3884
--- /dev/null
+++ b/Task/ziye.boxjs.json
@@ -0,0 +1,31 @@
+{
+ "id": "ziye.app.sub",
+ "name": "ziye 应用订阅",
+ "author": "@ZIYE",
+ "icon": "",
+ "repo": "https://github.com/ziye12/JavaScript",
+ "apps": [{
+ "id": "qqread",
+ "name": "企鹅读书",
+ "keys": ["qqreadbd", "qqreadtimeurl", "qqreadtimehd", "qqreadbd2", "qqreadtimeurl2", "qqreadtimehd2", "qqreadbd3", "qqreadtimeurl3", "qqreadtimehd3", "qqreadbd4", "qqreadtimeurl4", "qqreadtimehd4", "qqreadbd5", "qqreadtimeurl5","qqreadtimehd5", "qqreadbd6", "qqreadtimeurl6", "qqreadtimehd6", "qqreadbd7", "qqreadtimeurl7", "qqreadtimehd7", "qqreadbd8", "qqreadtimeurl8", "qqreadtimehd8","qqreadbd9", "qqreadtimeurl9", "qqreadtimehd9","qqreadbd10", "qqreadtimeurl10", "qqreadtimehd10","qqreadbd11", "qqreadtimeurl11", "qqreadtimehd11","qqreadbd12", "qqreadtimeurl12", "qqreadtimehd12","qqreadbd13", "qqreadtimeurl13", "qqreadtimehd13","qqreadbd14", "qqreadtimeurl14", "qqreadtimehd14","qqreadbd15", "qqreadtimeurl15", "qqreadtimehd15","qqreadbd16", "qqreadtimeurl16", "qqreadtimehd16","qqreadbd17", "qqreadtimeurl17", "qqreadtimehd17","qqreadbd18", "qqreadtimeurl18", "qqreadtimehd18","qqreadbd19", "qqreadtimeurl19", "qqreadtimehd19","qqreadbd20", "qqreadtimeurl20", "qqreadtimehd20"],
+ "author": "@ziye",
+ "settings": [{
+ "id": "qeSuffix",
+ "name": "当前账号",
+ "val": "1",
+ "type": "number",
+ "desc": "当前抓取ck记录的账号序号,如:1、2、3、"
+ },
+ {
+ "id": "qeCount",
+ "name": "账号个数",
+ "val": "1",
+ "type": "number",
+ "desc": "指定任务最多跑几个账号,根据抓取的账号数据个数来设值"
+ }
+ ],
+ "repo": "https://github.com/ziye12/JavaScript/blob/master/Task/qqreads.js",
+ "icons": ["https://raw.githubusercontent.com/ziye12/JavaScript/master/qqread.jpg", "https://raw.githubusercontent.com/ziye12/JavaScript/master/qqread.jpg"],
+ "script": "https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js"
+ }]
+}
diff --git a/Task/zqdkgit.js b/Task/zqdkgit.js
new file mode 100644
index 000000000..66dc0d9b6
--- /dev/null
+++ b/Task/zqdkgit.js
@@ -0,0 +1,221 @@
+
+
+
+
+const $ = new Env("早起打卡")
+const jsname="早起打卡"
+let notifyInterval=1
+const dkurl = 'https://ph0001.hezyq.com/app/index.php?i=597&t=0&v=1.0.2&from=wxapp&c=entry&a=wxapp&do=distribute&m=bh_rising&sign=2b18eebf989b3a26a9ca677492b74724&action=today&contr=index&token=8ddce1ace72e7b6ac0e8befd789a69be&version=2.0.34
+'
+
+
+let isGetCookie = typeof $request !== 'undefined'
+if (isGetCookie) {
+ GetCookie()
+} else {
+ all()
+}
+
+
+
+
+function GetCookie() {
+if ($request && $request.url.match(/i=597&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+ {
+ const dkurl = $request.url
+ sy.log(`dkurl:${dkurl}`)
+ if (dkurl) sy.setdata(dkurl, dkurlkey)
+ sy.msg(dkurlkey, `获取cookie: 成功🎉`, ``)
+}
+
+}
+
+
+
+
+
+function all()
+
+ {
+
+ for(var i=0;i<3;i++)
+ { (function(i) {
+ setTimeout(function() {
+
+ if(i==0) dktj(i);
+else if(i==1) dkxj(i);
+else if(i==2) showmsg(i);
+}, (i + 1) * 1000);
+ })(i)
+
+
+}}
+
+
+
+
+
+//统计
+
+function dktj() {
+return new Promise((resolve, reject) => {
+
+ const Tjurl = {
+ url: dkurl
+ };
+ $.get(Tjurl,(error, response, data) =>{
+ if(logs)$.log(`${jsname}1统计 - data: ${data}`)
+ obj = JSON.parse(data)
+if(obj.status == 1 && obj.info.today.clock < cs){tz+="[账户信息]🎉"+"\n"+
+"今日已打卡"+[Number(obj.info.today.clock) ]+"/"+cs+"次"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
+ }else tz+="[打卡完成]"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
+
+
+
+
+
+cstj1(obj.info.today.clock);
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+//次数统计
+
+
+function cstj1(tjtj)
+{
+if (tjtj {
+
+ const Xjurl = {
+ url: dkurl.replace(/action=today&contr=index/g, `action=index&contr=my`)
+ };
+ $.get(Xjurl,(error, response, data) =>{
+ if(logs)$.log(`${jsname}1现金 - data: ${data}`)
+ obj = JSON.parse(data)
+if(obj.status == 1) {
+
+
+
+
+ tz +="💵现金余额"+
+obj.info.member.money+"元"+"\n"
+
+ }
+
+ else tz +=sb+"\n";
+
+
+xjtj1(obj.info.member.money);
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+//自动提现
+
+function dktx() {
+return new Promise((resolve, reject) => {
+
+ const Txurl = {
+ url: dkurl.replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${xj}&payment_code=`)
+ };
+ $.get(Txurl,(error, response, data) =>{
+ if(logs)$.log(`${jsname}1提现 - data: ${data}`)
+ obj = JSON.parse(data)
+if(obj.status == 1) {
+
+tz +='提现成功,成功提现'+xj+'元'+"\n"
+
+ }
+
+if(obj.status == 2) {
+
+tz +='提现失败,原因:'+obj.info+"\n"
+
+ }
+
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+//现金统计
+
+
+function xjtj1(tjtj)
+{
+if (tjtj>=xj)
+dktx()
+
+}
+
+
+
+//打卡
+function dkdk() {
+return new Promise((resolve, reject) => {
+
+ const Dkurl = {
+ url: dkurl.replace(/action=today&contr=index/g, `action=sign&contr=clock`)
+ };
+ $.get(Dkurl,(error, response, data) =>{
+ if(logs)$.log(`${jsname}1打卡- data: ${data}`)
+ obj = JSON.parse(data)
+
+ if (obj.status==1){
+tz+='[️打卡任务]:'+'打卡次数+1'+'\n'
+
+ }
+else tz +=obj.info+'\n'
+
+
+ resolve()
+ })
+ })
+ }
+
+
+async function showmsg() {
+
+console.log(tz)
+
+if (notifyInterval==1)
+$.msg(jsname,'',tz)
+}
+
+
+
+
+
+
+
+
+
+function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
diff --git a/asdkziye.js b/asdkziye.js
deleted file mode 100644
index a9b6a46f5..000000000
--- a/asdkziye.js
+++ /dev/null
@@ -1,338 +0,0 @@
-/*ziye爱尚打卡
-
-非常重要!!!
-
-微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/asdkziye.png 进入小程序,登录获取授权,再启动软件获取ck
-建议设置6点到23点之间打卡,时间间隔30分钟以上,否则容易封号
-
-
-
-《《《《《《《《《《制作其他打卡js的说明
-
-抓包小程序,然后替换以下内容来制作其他打卡js,
-需要替换的内容如下,按顺序替换字符,自己用电脑或者KODE软件替换,KODE下载链接https://apps.apple.com/cn/app/koder-code-editor/id1447489375
-
-ph0001.hezyq.com
-爱尚打卡
-cs = 20
-xj = 1
-asdkurl
-i=971
-asdk
-
-手动替换
-ph0001\.hezyq\.com
-
-制作其他打卡js的说明》》》》》》》》》》》
-
-
-
-
-
-
-////////////////////////////////////////正文
-
-
-使用说明:
-一,微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/asdkziye.png 进入小程序,登录获取授权
-
-二,然后将hostname复制粘贴进配置文件
-
-三,将重写复制到 rewrite_local 下,再进入程序获取ck,建议 放入新建配置片段,获取之后禁用即可
-
-功能如下:
-1.每日打卡,设置了开关,完成任务不再打卡
-2.打卡币统计,
-3.现金统计,自动提现
-
-
-
-
-
-hostname= ph0001.hezyq.com,
-
-//surge
-爱尚打卡 = type=http-request,pattern=^https:\/\/ph0001\.hezyq\.com\/*,requires-body=1,max-size=0,script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/asdkziye.js
-
-//圈x
-https:\/\/ph0001\.hezyq\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/asdkziye.js
-
-//loon
-http-request ^https:\/\/ph0001\.hezyq\.com\/* script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/asdkziye.js
-, requires-body=true, timeout=10, tag=爱尚打卡
-
-
-*/
-
-
-
-const sy = init()//声明必须
-const notifyInterval = 1; //通知开为1,常关为0
-const logs = 0; // 日志开关
-const jsname = '爱尚打卡'
-const jbid =1
-const sb='失败,请先关闭,进入程序获取授权'
-
-const cs = 20;//小程序打卡次数
-const xj = 1;//提现标准
-var tz=''
-
-const dkurlkey = 'asdkurl'+jbid
-const dkurl = sy.getdata(dkurlkey)
-
-
-let isGetCookie = typeof $request !== 'undefined'
-if (isGetCookie) {
- GetCookie()
-} else {
- all()
-}
-
-
-
-function GetCookie() {
-if ($request && $request.url.match(/i=971&/))
-if ($request && $request.url.match(/action=today&contr=index/))
- {
- const dkurl = $request.url
- sy.log(`dkurl:${dkurl}`)
- if (dkurl) sy.setdata(dkurl, dkurlkey)
- sy.msg(dkurlkey, `获取cookie: 成功🎉`, ``)
-}
-
-}
-
-
-//异步运行
-
-
-function all()
-
- {
-
- for(var i=0;i<3;i++)
- { (function(i) {
- setTimeout(function() {
-
- if(i==0) dktj(i);
-else if(i==1) dkxj(i);
-else if(i==2) showmsg(i);
-}, (i + 1) * 1000);
- })(i)
-
-
-}}
-
-
-
-
-//统计
-
-function dktj() {
-return new Promise((resolve, reject) => {
-
- const Tjurl = {
- url: dkurl
- };
- sy.get(Tjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1统计 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1 && obj.info.today.clock < cs){tz+="[账户信息]🎉"+"\n"+
-"今日已打卡"+[Number(obj.info.today.clock) ]+"/"+cs+"次"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
- }else tz+="[打卡完成]"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
-
-
-
-
-
-cstj1(obj.info.today.clock);
-
-
-
- resolve()
- })
- })
- }
-
-
-//次数统计
-
-
-function cstj1(tjtj)
-{
-if (tjtj {
-
- const Xjurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=index&contr=my`)
- };
- sy.get(Xjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1现金 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-
-
-
- tz +="💵现金余额"+
-obj.info.member.money+"元"+"\n"
-
- }
-
- else tz +=sb+"\n";
-
-
-xjtj1(obj.info.member.money);
-
-
-
- resolve()
- })
- })
- }
-
-
-
-
-//自动提现
-
-function dktx() {
-return new Promise((resolve, reject) => {
-
- const Txurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${xj}&payment_code=`)
- };
- sy.get(Txurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1提现 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-tz +='提现成功,成功提现'+xj+'元'+"\n"
-
- }
-
-if(obj.status == 2) {
-
-tz +='提现失败,原因:'+obj.info+"\n"
-
- }
-
-
-
-
- resolve()
- })
- })
- }
-
-
-
-//现金统计
-
-
-function xjtj1(tjtj)
-{
-if (tjtj>=xj)
-dktx()
-
-}
-
-
-
-//打卡
-function dkdk() {
-return new Promise((resolve, reject) => {
-
- const Dkurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=sign&contr=clock`)
- };
- sy.get(Dkurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1打卡- data: ${data}`)
- obj = JSON.parse(data)
-
- if (obj.status==1){
-tz+='[️打卡任务]:'+'打卡次数+1'+'\n'
-
- }
-else tz +=obj.info+'\n'
-
-
- resolve()
- })
- })
- }
-
-
-function showmsg() {
-
-console.log(tz)
-
-if (notifyInterval==1)
-sy.msg(jsname,'',tz)
-}
-
-
-function init() {
- isSurge = () => {
- return undefined !== this.$httpClient
- }
- isQuanX = () => {
- return undefined !== this.$task
- }
- getdata = (key) => {
- if (isSurge()) return $persistentStore.read(key)
- if (isQuanX()) return $prefs.valueForKey(key)
- }
- setdata = (key, val) => {
- if (isSurge()) return $persistentStore.write(key, val)
- if (isQuanX()) return $prefs.setValueForKey(key, val)
- }
- msg = (title, subtitle = '', body = '') => {
- if (isSurge()) $notification.post(title, subtitle, body)
- if (isQuanX()) $notify(title, subtitle, body)
- }
- log = (msg) => {
- console.log(`${msg}\n`)
- }
- get = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'GET'
- return $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) return $httpClient.get(options, callback)
- }
- post = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'POST'
- $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) $httpClient.post(options, callback)
- }
- done = (value = {}) => {
- $done(value)
- }
- return { isSurge, isQuanX, msg, log, getdata, setdata, get, post, done }
-}
diff --git a/asdkziye.png b/asdkziye.png
deleted file mode 100644
index 804647d8e..000000000
Binary files a/asdkziye.png and /dev/null differ
diff --git a/diqudaima.txt b/diqudaima.txt
new file mode 100644
index 000000000..69701d7d5
--- /dev/null
+++ b/diqudaima.txt
@@ -0,0 +1,3522 @@
+ 全国地区代码,自己用浏览器搜索文字
+
+
+ 110000 北京市
+ 110100 市辖区
+ 110101 东城区
+ 110102 西城区
+ 110103 崇文区
+ 110104 宣武区
+ 110105 朝阳区
+ 110106 丰台区
+ 110107 石景山区
+ 110108 海淀区
+ 110109 门头沟区
+ 110111 房山区
+ 110112 通州区
+ 110113 顺义区
+ 110114 昌平区
+ 110115 大兴区
+ 110116 怀柔区
+ 110117 平谷区
+ 110200 县
+ 110228 密云县
+ 110229 延庆县
+ 120000 天津市
+ 120100 市辖区
+ 120101 和平区
+ 120102 河东区
+ 120103 河西区
+ 120104 南开区
+ 120105 河北区
+ 120106 红桥区
+ 120107 塘沽区
+ 120108 汉沽区
+ 120109 大港区
+ 120110 东丽区
+ 120111 西青区
+ 120112 津南区
+ 120113 北辰区
+ 120114 武清区
+ 120115 宝坻区
+ 120200 县
+ 120221 宁河县
+ 120223 静海县
+ 120225 蓟县
+ 130000 河北省
+ 130100 石家庄市
+ 130101 市辖区
+ 130102 长安区
+ 130103 桥东区
+ 130104 桥西区
+ 130105 新华区
+ 130107 井陉矿区
+ 130108 裕华区
+ 130121 井陉县
+ 130123 正定县
+ 130124 栾城县
+ 130125 行唐县
+ 130126 灵寿县
+ 130127 高邑县
+ 130128 深泽县
+ 130129 赞皇县
+ 130130 无极县
+ 130131 平山县
+ 130132 元氏县
+ 130133 赵县
+ 130181 辛集市
+ 130182 藁城市
+ 130183 晋州市
+ 130184 新乐市
+ 130185 鹿泉市
+ 130200 唐山市
+ 130201 市辖区
+ 130202 路南区
+ 130203 路北区
+ 130204 古冶区
+ 130205 开平区
+ 130207 丰南区
+ 130208 丰润区
+ 130223 滦县
+ 130224 滦南县
+ 130225 乐亭县
+ 130227 迁西县
+ 130229 玉田县
+ 130230 唐海县
+ 130281 遵化市
+ 130283 迁安市
+ 130300 秦皇岛市
+ 130301 市辖区
+ 130302 海港区
+ 130303 山海关区
+ 130304 北戴河区
+ 130321 青龙满族自治县
+ 130322 昌黎县
+ 130323 抚宁县
+ 130324 卢龙县
+ 130400 邯郸市
+ 130401 市辖区
+ 130402 邯山区
+ 130403 丛台区
+ 130404 复兴区
+ 130406 峰峰矿区
+ 130421 邯郸县
+ 130423 临漳县
+ 130424 成安县
+ 130425 大名县
+ 130426 涉县
+ 130427 磁县
+ 130428 肥乡县
+ 130429 永年县
+ 130430 邱县
+ 130431 鸡泽县
+ 130432 广平县
+ 130433 馆陶县
+ 130434 魏县
+ 130435 曲周县
+ 130481 武安市
+ 130500 邢台市
+ 130501 市辖区
+ 130502 桥东区
+ 130503 桥西区
+ 130521 邢台县
+ 130522 临城县
+ 130523 内丘县
+ 130524 柏乡县
+ 130525 隆尧县
+ 130526 任县
+ 130527 南和县
+ 130528 宁晋县
+ 130529 巨鹿县
+ 130530 新河县
+ 130531 广宗县
+ 130532 平乡县
+ 130533 威县
+ 130534 清河县
+ 130535 临西县
+ 130581 南宫市
+ 130582 沙河市
+ 130600 保定市
+ 130601 市辖区
+ 130602 新市区
+ 130603 北市区
+ 130604 南市区
+ 130621 满城县
+ 130622 清苑县
+ 130623 涞水县
+ 130624 阜平县
+ 130625 徐水县
+ 130626 定兴县
+ 130627 唐县
+ 130628 高阳县
+ 130629 容城县
+ 130630 涞源县
+ 130631 望都县
+ 130632 安新县
+ 130634 曲阳县
+ 130635 蠡县
+ 130636 顺平县
+ 130637 博野县
+ 130638 雄县
+ 130681 涿州市
+ 130682 定州市
+ 130683 安国市
+ 130684 高碑店市
+ 130700 张家口市
+ 130701 市辖区
+ 130702 桥东区
+ 130703 桥西区
+ 130705 宣化区
+ 130706 下花园区
+ 130721 宣化县
+ 130722 张北县
+ 130723 康保县
+ 130724 沽源县
+ 130725 尚义县
+ 130726 蔚县
+ 130727 阳原县
+ 130728 怀安县
+ 130729 万全县
+ 130730 怀来县
+ 130731 涿鹿县
+ 130732 赤城县
+ 130733 崇礼县
+ 130800 承德市
+ 130801 市辖区
+ 130802 双桥区
+ 130803 双滦区
+ 130804 鹰手营子矿区
+ 130821 承德县
+ 130822 兴隆县
+ 130823 平泉县
+ 130824 滦平县
+ 130825 隆化县
+ 130826 丰宁满族自治县
+ 130827 宽城满族自治县
+ 130828 围场满族蒙古族自治县
+ 130900 沧州市
+ 130901 市辖区
+ 130902 新华区
+ 130903 运河区
+ 130921 沧县
+ 130922 青县
+ 130923 东光县
+ 130924 海兴县
+ 130925 盐山县
+ 130926 肃宁县
+ 130927 南皮县
+ 130928 吴桥县
+ 130929 献县
+ 130930 孟村回族自治县
+ 130981 泊头市
+ 130982 任丘市
+ 130983 黄骅市
+ 130984 河间市
+ 131000 廊坊市
+ 131001 市辖区
+ 131002 安次区
+ 131003 广阳区
+ 131022 固安县
+ 131023 永清县
+ 131024 香河县
+ 131025 大城县
+ 131026 文安县
+ 131028 大厂回族自治县
+ 131081 霸州市
+ 131082 三河市
+ 131100 衡水市
+ 131101 市辖区
+ 131102 桃城区
+ 131121 枣强县
+ 131122 武邑县
+ 131123 武强县
+ 131124 饶阳县
+ 131125 安平县
+ 131126 故城县
+ 131127 景县
+ 131128 阜城县
+ 131181 冀州市
+ 131182 深州市
+ 140000 山西省
+ 140100 太原市
+ 140101 市辖区
+ 140105 小店区
+ 140106 迎泽区
+ 140107 杏花岭区
+ 140108 尖草坪区
+ 140109 万柏林区
+ 140110 晋源区
+ 140121 清徐县
+ 140122 阳曲县
+ 140123 娄烦县
+ 140181 古交市
+ 140200 大同市
+ 140201 市辖区
+ 140202 城区
+ 140203 矿区
+ 140211 南郊区
+ 140212 新荣区
+ 140221 阳高县
+ 140222 天镇县
+ 140223 广灵县
+ 140224 灵丘县
+ 140225 浑源县
+ 140226 左云县
+ 140227 大同县
+ 140300 阳泉市
+ 140301 市辖区
+ 140302 城区
+ 140303 矿区
+ 140311 郊区
+ 140321 平定县
+ 140322 盂县
+ 140400 长治市
+ 140401 市辖区
+ 140402 城区
+ 140411 郊区
+ 140421 长治县
+ 140423 襄垣县
+ 140424 屯留县
+ 140425 平顺县
+ 140426 黎城县
+ 140427 壶关县
+ 140428 长子县
+ 140429 武乡县
+ 140430 沁县
+ 140431 沁源县
+ 140481 潞城市
+ 140500 晋城市
+ 140501 市辖区
+ 140502 城区
+ 140521 沁水县
+ 140522 阳城县
+ 140524 陵川县
+ 140525 泽州县
+ 140581 高平市
+ 140600 朔州市
+ 140601 市辖区
+ 140602 朔城区
+ 140603 平鲁区
+ 140621 山阴县
+ 140622 应县
+ 140623 右玉县
+ 140624 怀仁县
+ 140700 晋中市
+ 140701 市辖区
+ 140702 榆次区
+ 140721 榆社县
+ 140722 左权县
+ 140723 和顺县
+ 140724 昔阳县
+ 140725 寿阳县
+ 140726 太谷县
+ 140727 祁县
+ 140728 平遥县
+ 140729 灵石县
+ 140781 介休市
+ 140800 运城市
+ 140801 市辖区
+ 140802 盐湖区
+ 140821 临猗县
+ 140822 万荣县
+ 140823 闻喜县
+ 140824 稷山县
+ 140825 新绛县
+ 140826 绛县
+ 140827 垣曲县
+ 140828 夏县
+ 140829 平陆县
+ 140830 芮城县
+ 140881 永济市
+ 140882 河津市
+ 140900 忻州市
+ 140901 市辖区
+ 140902 忻府区
+ 140921 定襄县
+ 140922 五台县
+ 140923 代县
+ 140924 繁峙县
+ 140925 宁武县
+ 140926 静乐县
+ 140927 神池县
+ 140928 五寨县
+ 140929 岢岚县
+ 140930 河曲县
+ 140931 保德县
+ 140932 偏关县
+ 140981 原平市
+ 141000 临汾市
+ 141001 市辖区
+ 141002 尧都区
+ 141021 曲沃县
+ 141022 翼城县
+ 141023 襄汾县
+ 141024 洪洞县
+ 141025 古县
+ 141026 安泽县
+ 141027 浮山县
+ 141028 吉县
+ 141029 乡宁县
+ 141030 大宁县
+ 141031 隰县
+ 141032 永和县
+ 141033 蒲县
+ 141034 汾西县
+ 141081 侯马市
+ 141082 霍州市
+ 141100 吕梁市
+ 141101 市辖区
+ 141102 离石区
+ 141121 文水县
+ 141122 交城县
+ 141123 兴县
+ 141124 临县
+ 141125 柳林县
+ 141126 石楼县
+ 141127 岚县
+ 141128 方山县
+ 141129 中阳县
+ 141130 交口县
+ 141181 孝义市
+ 141182 汾阳市
+ 150000 内蒙古自治区
+ 150100 呼和浩特市
+ 150101 市辖区
+ 150102 新城区
+ 150103 回民区
+ 150104 玉泉区
+ 150105 赛罕区
+ 150121 土默特左旗
+ 150122 托克托县
+ 150123 和林格尔县
+ 150124 清水河县
+ 150125 武川县
+ 150200 包头市
+ 150201 市辖区
+ 150202 东河区
+ 150203 昆都仑区
+ 150204 青山区
+ 150205 石拐区
+ 150206 白云矿区
+ 150207 九原区
+ 150221 土默特右旗合旗
+ 150222 固阳县
+ 150223 达尔罕茂明安联
+ 150300 乌海市
+ 150301 市辖区
+ 150302 海勃湾区
+ 150303 海南区
+ 150304 乌达区
+ 150400 赤峰市
+ 150401 市辖区
+ 150402 红山区
+ 150403 元宝山区
+ 150404 松山区
+ 150421 阿鲁科尔沁旗
+ 150422 巴林左旗
+ 150423 巴林右旗
+ 150424 林西县
+ 150425 克什克腾旗
+ 150426 翁牛特旗
+ 150428 喀喇沁旗
+ 150429 宁城县
+ 150430 敖汉旗
+ 150500 通辽市
+ 150501 市辖区
+ 150502 科尔沁区
+ 150521 科尔沁左翼中旗
+ 150522 科尔沁左翼后旗
+ 150523 开鲁县
+ 150524 库伦旗
+ 150525 奈曼旗
+ 150526 扎鲁特旗
+ 150581 霍林郭勒市
+ 150600 鄂尔多斯市
+ 150602 东胜区
+ 150621 达拉特旗
+ 150622 准格尔旗
+ 150623 鄂托克前旗
+ 150624 鄂托克旗
+ 150625 杭锦旗
+ 150626 乌审旗
+ 150627 伊金霍洛旗
+ 150700 呼伦贝尔市
+ 150701 市辖区
+ 150702 海拉尔区族自治旗
+ 150721 阿荣旗
+ 150722 莫力达瓦达斡尔
+ 150723 鄂伦春自治旗
+ 150724 鄂温克族自治旗
+ 150725 陈巴尔虎旗
+ 150726 新巴尔虎左旗
+ 150727 新巴尔虎右旗
+ 150781 满洲里市
+ 150782 牙克石市
+ 150783 扎兰屯市
+ 150784 额尔古纳市
+ 150785 根河市
+ 150800 巴彦淖尔市
+ 150801 市辖区
+ 150802 临河区
+ 150821 五原县
+ 150822 磴口县
+ 150823 乌拉特前旗
+ 150824 乌拉特中旗
+ 150825 乌拉特后旗
+ 150826 杭锦后旗
+ 150900 乌兰察布市
+ 150901 市辖区
+ 150902 集宁区
+ 150921 卓资县
+ 150922 化德县
+ 150923 商都县
+ 150924 兴和县
+ 150925 凉城县
+ 150926 察哈尔右翼前
+ 150927 察哈尔右翼中旗
+ 150928 察哈尔右翼后
+ 150929 四子王旗
+ 150981 丰镇市
+ 152200 兴安盟
+ 152201 乌兰浩特市
+ 152202 阿尔山市
+ 152221 科尔沁右翼前旗
+ 152222 科尔沁右翼中旗
+ 152223 扎赉特旗
+ 152224 突泉县
+ 152500 锡林郭勒盟
+ 152501 二连浩特市
+ 152502 锡林浩特市
+ 152522 阿巴嘎旗
+ 152523 苏尼特左旗
+ 152524 苏尼特右旗
+ 152525 东乌珠穆沁旗
+ 152526 西乌珠穆沁旗
+ 152527 太仆寺旗
+ 152528 镶黄旗
+ 152529 正镶白旗
+ 152530 正蓝旗
+ 152531 多伦县
+ 152600 乌兰察布盟
+ 152900 阿拉善盟
+ 152921 阿拉善左旗
+ 152922 阿拉善右旗
+ 152923 额济纳旗
+ 210000 辽宁省
+ 210100 沈阳市
+ 210101 市辖区
+ 210102 和平区
+ 210103 沈河区
+ 210104 大东区
+ 210105 皇姑区
+ 210106 铁西区
+ 210111 苏家屯区
+ 210112 东陵区
+ 210113 新城子区
+ 210114 于洪区
+ 210122 辽中县
+ 210123 康平县
+ 210124 法库县
+ 210181 新民市
+ 210200 大连市
+ 210201 市辖区
+ 210202 中山区
+ 210203 西岗区
+ 210204 沙河口区
+ 210211 甘井子区
+ 210212 旅顺口区
+ 210213 金州区
+ 210224 长海县
+ 210281 瓦房店市
+ 210282 普兰店市
+ 210283 庄河市
+ 210300 鞍山市
+ 210301 市辖区
+ 210302 铁东区
+ 210303 铁西区
+ 210304 立山区
+ 210311 千山区
+ 210321 台安县
+ 210323 岫岩满族自治县
+ 210381 海城市
+ 210400 抚顺市
+ 210401 市辖区
+ 210402 新抚区
+ 210403 东洲区
+ 210404 望花区
+ 210411 顺城区
+ 210421 抚顺县
+ 210422 新宾满族自治县
+ 210423 清原满族自治县
+ 210500 本溪市
+ 210501 市辖区
+ 210502 平山区
+ 210503 溪湖区
+ 210504 明山区
+ 210505 南芬区
+ 210521 本溪满族自治县
+ 210522 桓仁满族自治县
+ 210600 丹东市
+ 210601 市辖区
+ 210602 元宝区
+ 210603 振兴区
+ 210604 振安区
+ 210624 宽甸满族自治县
+ 210681 东港市
+ 210682 凤城市
+ 210700 锦州市
+ 210701 市辖区
+ 210702 古塔区
+ 210703 凌河区
+ 210711 太和区
+ 210726 黑山县
+ 210727 义县
+ 210781 凌海市
+ 210782 北宁市
+ 210800 营口市
+ 210801 市辖区
+ 210802 站前区
+ 210803 西市区
+ 210804 鲅鱼圈区
+ 210811 老边区
+ 210881 盖州市
+ 210882 大石桥市
+ 210900 阜新市
+ 210901 市辖区
+ 210902 海州区
+ 210903 新邱区
+ 210904 太平区
+ 210905 清河门区
+ 210911 细河区
+ 210921 阜新蒙古族自治县
+ 210922 彰武县
+ 211000 辽阳市
+ 211001 市辖区
+ 211002 白塔区
+ 211003 文圣区
+ 211004 宏伟区
+ 211005 弓长岭区
+ 211011 太子河区
+ 211021 辽阳县
+ 211081 灯塔市
+ 211100 盘锦市
+ 211101 市辖区
+ 211102 双台子区
+ 211103 兴隆台区
+ 211121 大洼县
+ 211122 盘山县
+ 211200 铁岭市
+ 211201 市辖区
+ 211202 银州区
+ 211204 清河区
+ 211221 铁岭县
+ 211223 西丰县
+ 211224 昌图县
+ 211281 调兵山市
+ 211282 开原市
+ 211300 朝阳市
+ 211301 市辖区
+ 211302 双塔区
+ 211303 龙城区
+ 211321 朝阳县
+ 211322 建平县
+ 211324 喀喇沁左翼蒙古族自治县
+ 211381 北票市
+ 211382 凌源市
+ 211400 葫芦岛市
+ 211401 市辖区
+ 211402 连山区
+ 211403 龙港区
+ 211404 南票区
+ 211421 绥中县
+ 211422 建昌县
+ 211481 兴城市
+ 220000 吉林省
+ 220100 长春市
+ 220101 市辖区
+ 220102 南关区
+ 220103 宽城区
+ 220104 朝阳区
+ 220105 二道区
+ 220106 绿园区
+ 220112 双阳区
+ 220122 农安县
+ 220181 九台市
+ 220182 榆树市
+ 220183 德惠市
+ 220200 吉林市
+ 220201 市辖区
+ 220202 昌邑区
+ 220203 龙潭区
+ 220204 船营区
+ 220211 丰满区
+ 220221 永吉县
+ 220281 蛟河市
+ 220282 桦甸市
+ 220283 舒兰市
+ 220284 磐石市
+ 220300 四平市
+ 220301 市辖区
+ 220302 铁西区
+ 220303 铁东区
+ 220322 梨树县
+ 220323 伊通满族自治县
+ 220381 公主岭市
+ 220382 双辽市
+ 220400 辽源市
+ 220401 市辖区
+ 220402 龙山区
+ 220403 西安区
+ 220421 东丰县
+ 220422 东辽县
+ 220500 通化市
+ 220501 市辖区
+ 220502 东昌区
+ 220503 二道江区
+ 220521 通化县
+ 220523 辉南县
+ 220524 柳河县
+ 220581 梅河口市
+ 220582 集安市
+ 220600 白山市
+ 220601 市辖区
+ 220602 八道江区
+ 220621 抚松县
+ 220622 靖宇县
+ 220623 长白朝鲜族自治县
+ 220625 江源县
+ 220681 临江市
+ 220700 松原市
+ 220701 市辖区
+ 220702 宁江区
+ 220721 前郭尔罗斯蒙古族自治县
+ 220722 长岭县
+ 220723 乾安县
+ 220724 扶余县
+ 220800 白城市
+ 220801 市辖区
+ 220802 洮北区
+ 220821 镇赉县
+ 220822 通榆县
+ 220881 洮南市
+ 220882 大安市
+ 222400 延边朝鲜族自治州
+ 222401 延吉市
+ 222402 图们市
+ 222403 敦化市
+ 222404 珲春市
+ 222405 龙井市
+ 222406 和龙市
+ 222424 汪清县
+ 222426 安图县
+ 230000 黑龙江省
+ 230100 哈尔滨市
+ 230101 市辖区
+ 230102 道里区
+ 230103 南岗区
+ 230104 道外区
+ 230105 太平区
+ 230106 香坊区
+ 230107 动力区
+ 230108 平房区
+ 230121 呼兰县
+ 230123 依兰县
+ 230124 方正县
+ 230125 宾县
+ 230126 巴彦县
+ 230127 木兰县
+ 230128 通河县
+ 230129 延寿县
+ 230181 阿城市
+ 230182 双城市
+ 230183 尚志市
+ 230184 五常市
+ 230200 齐齐哈尔市
+ 230201 市辖区
+ 230202 龙沙区
+ 230203 建华区
+ 230204 铁锋区
+ 230205 昂昂溪区
+ 230206 富拉尔基区
+ 230207 碾子山区
+ 230208 梅里斯达斡尔族区
+ 230221 龙江县
+ 230223 依安县
+ 230224 泰来县
+ 230225 甘南县
+ 230227 富裕县
+ 230229 克山县
+ 230230 克东县
+ 230231 拜泉县
+ 230281 讷河市
+ 230300 鸡西市
+ 230301 市辖区
+ 230302 鸡冠区
+ 230303 恒山区
+ 230304 滴道区
+ 230305 梨树区
+ 230306 城子河区
+ 230307 麻山区
+ 230321 鸡东县
+ 230381 虎林市
+ 230382 密山市
+ 230400 鹤岗市
+ 230401 市辖区
+ 230402 向阳区
+ 230403 工农区
+ 230404 南山区
+ 230405 兴安区
+ 230406 东山区
+ 230407 兴山区
+ 230421 萝北县
+ 230422 绥滨县
+ 230500 双鸭山市
+ 230501 市辖区
+ 230502 尖山区
+ 230503 岭东区
+ 230505 四方台区
+ 230506 宝山区
+ 230521 集贤县
+ 230522 友谊县
+ 230523 宝清县
+ 230524 饶河县
+ 230600 大庆市
+ 230601 市辖区
+ 230602 萨尔图区
+ 230603 龙凤区
+ 230604 让胡路区
+ 230605 红岗区
+ 230606 大同区
+ 230621 肇州县
+ 230622 肇源县
+ 230623 林甸县
+ 230624 杜尔伯特蒙古族自治县
+ 230700 伊春市
+ 230701 市辖区
+ 230702 伊春区
+ 230703 南岔区
+ 230704 友好区
+ 230705 西林区
+ 230706 翠峦区
+ 230707 新青区
+ 230708 美溪区
+ 230709 金山屯区
+ 230710 五营区
+ 230711 乌马河区
+ 230712 汤旺河区
+ 230713 带岭区
+ 230714 乌伊岭区
+ 230715 红星区
+ 230716 上甘岭区
+ 230722 嘉荫县
+ 230781 铁力市
+ 230800 佳木斯市
+ 230801 市辖区
+ 230802 永红区
+ 230803 向阳区
+ 230804 前进区
+ 230805 东风区
+ 230811 郊区
+ 230822 桦南县
+ 230826 桦川县
+ 230828 汤原县
+ 230833 抚远县
+ 230881 同江市
+ 230882 富锦市
+ 230900 七台河市
+ 230901 市辖区
+ 230902 新兴区
+ 230903 桃山区
+ 230904 茄子河区
+ 230921 勃利县
+ 231000 牡丹江市
+ 231001 市辖区
+ 231002 东安区
+ 231003 阳明区
+ 231004 爱民区
+ 231005 西安区
+ 231024 东宁县
+ 231025 林口县
+ 231081 绥芬河市
+ 231083 海林市
+ 231084 宁安市
+ 231085 穆棱市
+ 231100 黑河市
+ 231101 市辖区
+ 231102 爱辉区
+ 231121 嫩江县
+ 231123 逊克县
+ 231124 孙吴县
+ 231181 北安市
+ 231182 五大连池市
+ 231200 绥化市
+ 231201 市辖区
+ 231202 北林区
+ 231221 望奎县
+ 231222 兰西县
+ 231223 青冈县
+ 231224 庆安县
+ 231225 明水县
+ 231226 绥棱县
+ 231281 安达市
+ 231282 肇东市
+ 231283 海伦市
+ 232700 大兴安岭地区
+ 232721 呼玛县
+ 232722 塔河县
+ 232723 漠河县
+ 310000 上海市
+ 310100 市辖区
+ 310101 黄浦区
+ 310103 卢湾区
+ 310104 徐汇区
+ 310105 长宁区
+ 310106 静安区
+ 310107 普陀区
+ 310108 闸北区
+ 310109 虹口区
+ 310110 杨浦区
+ 310112 闵行区
+ 310113 宝山区
+ 310114 嘉定区
+ 310115 浦东新区
+ 310116 金山区
+ 310117 松江区
+ 310118 青浦区
+ 310119 南汇区
+ 310120 奉贤区
+ 310200 县
+ 310230 崇明县
+ 320000 江苏省
+ 320100 南京市
+ 320101 市辖区
+ 320102 玄武区
+ 320103 白下区
+ 320104 秦淮区
+ 320105 建邺区
+ 320106 鼓楼区
+ 320107 下关区
+ 320111 浦口区
+ 320113 栖霞区
+ 320114 雨花台区
+ 320115 江宁区
+ 320116 六合区
+ 320124 溧水县
+ 320125 高淳县
+ 320200 无锡市
+ 320201 市辖区
+ 320202 崇安区
+ 320203 南长区
+ 320204 北塘区
+ 320205 锡山区
+ 320206 惠山区
+ 320211 滨湖区
+ 320281 江阴市
+ 320282 宜兴市
+ 320300 徐州市
+ 320301 市辖区
+ 320302 鼓楼区
+ 320303 云龙区
+ 320304 九里区
+ 320305 贾汪区
+ 320311 泉山区
+ 320321 丰县
+ 320322 沛县
+ 320323 铜山县
+ 320324 睢宁县
+ 320381 新沂市
+ 320382 邳州市
+ 320400 常州市
+ 320401 市辖区
+ 320402 天宁区
+ 320404 钟楼区
+ 320405 戚墅堰区
+ 320411 新北区
+ 320412 武进区
+ 320481 溧阳市
+ 320482 金坛市
+ 320500 苏州市
+ 320501 市辖区
+ 320502 沧浪区
+ 320503 平江区
+ 320504 金阊区
+ 320505 虎丘区
+ 320506 吴中区
+ 320507 相城区
+ 320581 常熟市
+ 320582 张家港市
+ 320583 昆山市
+ 320584 吴江市
+ 320585 太仓市
+ 320600 南通市
+ 320601 市辖区
+ 320602 崇川区
+ 320611 港闸区
+ 320621 海安县
+ 320623 如东县
+ 320681 启东市
+ 320682 如皋市
+ 320683 通州市
+ 320684 海门市
+ 320700 连云港市
+ 320701 市辖区
+ 320703 连云区
+ 320705 新浦区
+ 320706 海州区
+ 320721 赣榆县
+ 320722 东海县
+ 320723 灌云县
+ 320724 灌南县
+ 320800 淮安市
+ 320801 市辖区
+ 320802 清河区
+ 320803 楚州区
+ 320804 淮阴区
+ 320811 清浦区
+ 320826 涟水县
+ 320829 洪泽县
+ 320830 盱眙县
+ 320831 金湖县
+ 320900 盐城市
+ 320901 市辖区
+ 320902 亭湖区
+ 320903 盐都区
+ 320921 响水县
+ 320922 滨海县
+ 320923 阜宁县
+ 320924 射阳县
+ 320925 建湖县
+ 320981 东台市
+ 320982 大丰市
+ 321000 扬州市
+ 321001 市辖区
+ 321002 广陵区
+ 321003 邗江区
+ 321011 郊区
+ 321023 宝应县
+ 321081 仪征市
+ 321084 高邮市
+ 321088 江都市
+ 321100 镇江市
+ 321101 市辖区
+ 321102 京口区
+ 321111 润州区
+ 321112 丹徒区
+ 321181 丹阳市
+ 321182 扬中市
+ 321183 句容市
+ 321200 泰州市
+ 321201 市辖区
+ 321202 海陵区
+ 321203 高港区
+ 321281 兴化市
+ 321282 靖江市
+ 321283 泰兴市
+ 321284 姜堰市
+ 321300 宿迁市
+ 321301 市辖区
+ 321302 宿城区
+ 321321 宿豫县
+ 321322 沭阳县
+ 321323 泗阳县
+ 321324 泗洪县
+ 330000 浙江省
+ 330100 杭州市
+ 330101 市辖区
+ 330102 上城区
+ 330103 下城区
+ 330104 江干区
+ 330105 拱墅区
+ 330106 西湖区
+ 330108 滨江区
+ 330109 萧山区
+ 330110 余杭区
+ 330122 桐庐县
+ 330127 淳安县
+ 330182 建德市
+ 330183 富阳市
+ 330185 临安市
+ 330200 宁波市
+ 330201 市辖区
+ 330203 海曙区
+ 330204 江东区
+ 330205 江北区
+ 330206 北仑区
+ 330211 镇海区
+ 330212 鄞州区
+ 330225 象山县
+ 330226 宁海县
+ 330281 余姚市
+ 330282 慈溪市
+ 330283 奉化市
+ 330300 温州市
+ 330301 市辖区
+ 330302 鹿城区
+ 330303 龙湾区
+ 330304 瓯海区
+ 330322 洞头县
+ 330324 永嘉县
+ 330326 平阳县
+ 330327 苍南县
+ 330328 文成县
+ 330329 泰顺县
+ 330381 瑞安市
+ 330382 乐清市
+ 330400 嘉兴市
+ 330401 市辖区
+ 330402 秀城区
+ 330411 秀洲区
+ 330421 嘉善县
+ 330424 海盐县
+ 330481 海宁市
+ 330482 平湖市
+ 330483 桐乡市
+ 330500 湖州市
+ 330501 市辖区
+ 330502 吴兴区
+ 330503 南浔区
+ 330521 德清县
+ 330522 长兴县
+ 330523 安吉县
+ 330600 绍兴市
+ 330601 市辖区
+ 330602 越城区
+ 330621 绍兴县
+ 330624 新昌县
+ 330681 诸暨市
+ 330682 上虞市
+ 330683 嵊州市
+ 330700 金华市
+ 330701 市辖区
+ 330702 婺城区
+ 330703 金东区
+ 330723 武义县
+ 330726 浦江县
+ 330727 磐安县
+ 330781 兰溪市
+ 330782 义乌市
+ 330783 东阳市
+ 330784 永康市
+ 330800 衢州市
+ 330801 市辖区
+ 330802 柯城区
+ 330803 衢江区
+ 330822 常山县
+ 330824 开化县
+ 330825 龙游县
+ 330881 江山市
+ 330900 舟山市
+ 330901 市辖区
+ 330902 定海区
+ 330903 普陀区
+ 330921 岱山县
+ 330922 嵊泗县
+ 331000 台州市
+ 331001 市辖区
+ 331002 椒江区
+ 331003 黄岩区
+ 331004 路桥区
+ 331021 玉环县
+ 331022 三门县
+ 331023 天台县
+ 331024 仙居县
+ 331081 温岭市
+ 331082 临海市
+ 331100 丽水市
+ 331101 市辖区
+ 331102 莲都区
+ 331121 青田县
+ 331122 缙云县
+ 331123 遂昌县
+ 331124 松阳县
+ 331125 云和县
+ 331126 庆元县
+ 331127 景宁畲族自治县
+ 331181 龙泉市
+ 340000 安徽省
+ 340100 合肥市
+ 340101 市辖区
+ 340102 瑶海区
+ 340103 庐阳区
+ 340104 蜀山区
+ 340111 包河区
+ 340121 长丰县
+ 340122 肥东县
+ 340123 肥西县
+ 340200 芜湖市
+ 340201 市辖区
+ 340202 镜湖区
+ 340203 马塘区
+ 340204 新芜区
+ 340207 鸠江区
+ 340221 芜湖县
+ 340222 繁昌县
+ 340223 南陵县
+ 340300 蚌埠市
+ 340301 市辖区
+ 340302 东市区
+ 340303 中市区
+ 340304 西市区
+ 340311 郊区
+ 340321 怀远县
+ 340322 五河县
+ 340323 固镇县
+ 340400 淮南市
+ 340401 市辖区
+ 340402 大通区
+ 340403 田家庵区
+ 340404 谢家集区
+ 340405 八公山区
+ 340406 潘集区
+ 340421 凤台县
+ 340500 马鞍山市
+ 340501 市辖区
+ 340502 金家庄区
+ 340503 花山区
+ 340504 雨山区
+ 340521 当涂县
+ 340600 淮北市
+ 340601 市辖区
+ 340602 杜集区
+ 340603 相山区
+ 340604 烈山区
+ 340621 濉溪县
+ 340700 铜陵市
+ 340701 市辖区
+ 340702 铜官山区
+ 340703 狮子山区
+ 340711 郊区
+ 340721 铜陵县
+ 340800 安庆市
+ 340801 市辖区
+ 340802 迎江区
+ 340803 大观区
+ 340811 郊区
+ 340822 怀宁县
+ 340823 枞阳县
+ 340824 潜山县
+ 340825 太湖县
+ 340826 宿松县
+ 340827 望江县
+ 340828 岳西县
+ 340881 桐城市
+ 341000 黄山市
+ 341001 市辖区
+ 341002 屯溪区
+ 341003 黄山区
+ 341004 徽州区
+ 341021 歙县
+ 341022 休宁县
+ 341023 黟县
+ 341024 祁门县
+ 341100 滁州市
+ 341101 市辖区
+ 341102 琅琊区
+ 341103 南谯区
+ 341122 来安县
+ 341124 全椒县
+ 341125 定远县
+ 341126 凤阳县
+ 341181 天长市
+ 341182 明光市
+ 341200 阜阳市
+ 341201 市辖区
+ 341202 颍州区
+ 341203 颍东区
+ 341204 颍泉区
+ 341221 临泉县
+ 341222 太和县
+ 341225 阜南县
+ 341226 颍上县
+ 341282 界首市
+ 341300 宿州市
+ 341301 市辖区
+ 341302 墉桥区
+ 341321 砀山县
+ 341322 萧县
+ 341323 灵璧县
+ 341324 泗县
+ 341400 巢湖市
+ 341401 市辖区
+ 341402 居巢区
+ 341421 庐江县
+ 341422 无为县
+ 341423 含山县
+ 341424 和县
+ 341500 六安市
+ 341501 市辖区
+ 341502 金安区
+ 341503 裕安区
+ 341521 寿县
+ 341522 霍邱县
+ 341523 舒城县
+ 341524 金寨县
+ 341525 霍山县
+ 341600 亳州市
+ 341601 市辖区
+ 341602 谯城区
+ 341621 涡阳县
+ 341622 蒙城县
+ 341623 利辛县
+ 341700 池州市
+ 341701 市辖区
+ 341702 贵池区
+ 341721 东至县
+ 341722 石台县
+ 341723 青阳县
+ 341800 宣城市
+ 341801 市辖区
+ 341802 宣州区
+ 341821 郎溪县
+ 341822 广德县
+ 341823 泾县
+ 341824 绩溪县
+ 341825 旌德县
+ 341881 宁国市
+ 350000 福建省
+ 350100 福州市
+ 350101 市辖区
+ 350102 鼓楼区
+ 350103 台江区
+ 350104 仓山区
+ 350105 马尾区
+ 350111 晋安区
+ 350121 闽侯县
+ 350122 连江县
+ 350123 罗源县
+ 350124 闽清县
+ 350125 永泰县
+ 350128 平潭县
+ 350181 福清市
+ 350182 长乐市
+ 350200 厦门市
+ 350201 市辖区
+ 350203 思明区
+ 350205 海沧区
+ 350206 湖里区
+ 350211 集美区
+ 350212 同安区
+ 350213 翔安区
+ 350300 莆田市
+ 350301 市辖区
+ 350302 城厢区
+ 350303 涵江区
+ 350304 荔城区
+ 350305 秀屿区
+ 350322 仙游县
+ 350400 三明市
+ 350401 市辖区
+ 350402 梅列区
+ 350403 三元区
+ 350421 明溪县
+ 350423 清流县
+ 350424 宁化县
+ 350425 大田县
+ 350426 尤溪县
+ 350427 沙县
+ 350428 将乐县
+ 350429 泰宁县
+ 350430 建宁县
+ 350481 永安市
+ 350500 泉州市
+ 350501 市辖区
+ 350502 鲤城区
+ 350503 丰泽区
+ 350504 洛江区
+ 350505 泉港区
+ 350521 惠安县
+ 350524 安溪县
+ 350525 永春县
+ 350526 德化县
+ 350527 金门县
+ 350581 石狮市
+ 350582 晋江市
+ 350583 南安市
+ 350600 漳州市
+ 350601 市辖区
+ 350602 芗城区
+ 350603 龙文区
+ 350622 云霄县
+ 350623 漳浦县
+ 350624 诏安县
+ 350625 长泰县
+ 350626 东山县
+ 350627 南靖县
+ 350628 平和县
+ 350629 华安县
+ 350681 龙海市
+ 350700 南平市
+ 350701 市辖区
+ 350702 延平区
+ 350721 顺昌县
+ 350722 浦城县
+ 350723 光泽县
+ 350724 松溪县
+ 350725 政和县
+ 350781 邵武市
+ 350782 武夷山市
+ 350783 建瓯市
+ 350784 建阳市
+ 350800 龙岩市
+ 350801 市辖区
+ 350802 新罗区
+ 350821 长汀县
+ 350822 永定县
+ 350823 上杭县
+ 350824 武平县
+ 350825 连城县
+ 350881 漳平市
+ 350900 宁德市
+ 350901 市辖区
+ 350902 蕉城区
+ 350921 霞浦县
+ 350922 古田县
+ 350923 屏南县
+ 350924 寿宁县
+ 350925 周宁县
+ 350926 柘荣县
+ 350981 福安市
+ 350982 福鼎市
+ 360000 江西省
+ 360100 南昌市
+ 360101 市辖区
+ 360102 东湖区
+ 360103 西湖区
+ 360104 青云谱区
+ 360105 湾里区
+ 360111 青山湖区
+ 360121 南昌县
+ 360122 新建县
+ 360123 安义县
+ 360124 进贤县
+ 360200 景德镇市
+ 360201 市辖区
+ 360202 昌江区
+ 360203 珠山区
+ 360222 浮梁县
+ 360281 乐平市
+ 360300 萍乡市
+ 360301 市辖区
+ 360302 安源区
+ 360313 湘东区
+ 360321 莲花县
+ 360322 上栗县
+ 360323 芦溪县
+ 360400 九江市
+ 360401 市辖区
+ 360402 庐山区
+ 360403 浔阳区
+ 360421 九江县
+ 360423 武宁县
+ 360424 修水县
+ 360425 永修县
+ 360426 德安县
+ 360427 星子县
+ 360428 都昌县
+ 360429 湖口县
+ 360430 彭泽县
+ 360481 瑞昌市
+ 360500 新余市
+ 360501 市辖区
+ 360502 渝水区
+ 360521 分宜县
+ 360600 鹰潭市
+ 360601 市辖区
+ 360602 月湖区
+ 360622 余江县
+ 360681 贵溪市
+ 360700 赣州市
+ 360701 市辖区
+ 360702 章贡区
+ 360721 赣县
+ 360722 信丰县
+ 360723 大余县
+ 360724 上犹县
+ 360725 崇义县
+ 360726 安远县
+ 360727 龙南县
+ 360728 定南县
+ 360729 全南县
+ 360730 宁都县
+ 360731 于都县
+ 360732 兴国县
+ 360733 会昌县
+ 360734 寻乌县
+ 360735 石城县
+ 360781 瑞金市
+ 360782 南康市
+ 360800 吉安市
+ 360801 市辖区
+ 360802 吉州区
+ 360803 青原区
+ 360821 吉安县
+ 360822 吉水县
+ 360823 峡江县
+ 360824 新干县
+ 360825 永丰县
+ 360826 泰和县
+ 360827 遂川县
+ 360828 万安县
+ 360829 安福县
+ 360830 永新县
+ 360881 井冈山市
+ 360900 宜春市
+ 360901 市辖区
+ 360902 袁州区
+ 360921 奉新县
+ 360922 万载县
+ 360923 上高县
+ 360924 宜丰县
+ 360925 靖安县
+ 360926 铜鼓县
+ 360981 丰城市
+ 360982 樟树市
+ 360983 高安市
+ 361000 抚州市
+ 361001 市辖区
+ 361002 临川区
+ 361021 南城县
+ 361022 黎川县
+ 361023 南丰县
+ 361024 崇仁县
+ 361025 乐安县
+ 361026 宜黄县
+ 361027 金溪县
+ 361028 资溪县
+ 361029 东乡县
+ 361030 广昌县
+ 361100 上饶市
+ 361101 市辖区
+ 361102 信州区
+ 361121 上饶县
+ 361122 广丰县
+ 361123 玉山县
+ 361124 铅山县
+ 361125 横峰县
+ 361126 弋阳县
+ 361127 余干县
+ 361128 鄱阳县
+ 361129 万年县
+ 361130 婺源县
+ 361181 德兴市
+ 370000 山东省
+ 370100 济南市
+ 370101 市辖区
+ 370102 历下区
+ 370103 市中区
+ 370104 槐荫区
+ 370105 天桥区
+ 370112 历城区
+ 370113 长清区
+ 370124 平阴县
+ 370125 济阳县
+ 370126 商河县
+ 370181 章丘市
+ 370200 青岛市
+ 370201 市辖区
+ 370202 市南区
+ 370203 市北区
+ 370205 四方区
+ 370211 黄岛区
+ 370212 崂山区
+ 370213 李沧区
+ 370214 城阳区
+ 370281 胶州市
+ 370282 即墨市
+ 370283 平度市
+ 370284 胶南市
+ 370285 莱西市
+ 370300 淄博市
+ 370301 市辖区
+ 370302 淄川区
+ 370303 张店区
+ 370304 博山区
+ 370305 临淄区
+ 370306 周村区
+ 370321 桓台县
+ 370322 高青县
+ 370323 沂源县
+ 370400 枣庄市
+ 370401 市辖区
+ 370402 市中区
+ 370403 薛城区
+ 370404 峄城区
+ 370405 台儿庄区
+ 370406 山亭区
+ 370481 滕州市
+ 370500 东营市
+ 370501 市辖区
+ 370502 东营区
+ 370503 河口区
+ 370521 垦利县
+ 370522 利津县
+ 370523 广饶县
+ 370600 烟台市
+ 370601 市辖区
+ 370602 芝罘区
+ 370611 福山区
+ 370612 牟平区
+ 370613 莱山区
+ 370634 长岛县
+ 370681 龙口市
+ 370682 莱阳市
+ 370683 莱州市
+ 370684 蓬莱市
+ 370685 招远市
+ 370686 栖霞市
+ 370687 海阳市
+ 370700 潍坊市
+ 370701 市辖区
+ 370702 潍城区
+ 370703 寒亭区
+ 370704 坊子区
+ 370705 奎文区
+ 370724 临朐县
+ 370725 昌乐县
+ 370781 青州市
+ 370782 诸城市
+ 370783 寿光市
+ 370784 安丘市
+ 370785 高密市
+ 370786 昌邑市
+ 370800 济宁市
+ 370801 市辖区
+ 370802 市中区
+ 370811 任城区
+ 370826 微山县
+ 370827 鱼台县
+ 370828 金乡县
+ 370829 嘉祥县
+ 370830 汶上县
+ 370831 泗水县
+ 370832 梁山县
+ 370881 曲阜市
+ 370882 兖州市
+ 370883 邹城市
+ 370900 泰安市
+ 370901 市辖区
+ 370902 泰山区
+ 370903 岱岳区
+ 370921 宁阳县
+ 370923 东平县
+ 370982 新泰市
+ 370983 肥城市
+ 371000 威海市
+ 371001 市辖区
+ 371002 环翠区
+ 371081 文登市
+ 371082 荣成市
+ 371083 乳山市
+ 371100 日照市
+ 371101 市辖区
+ 371102 东港区
+ 371121 五莲县
+ 371122 莒县
+ 371200 莱芜市
+ 371201 市辖区
+ 371202 莱城区
+ 371203 钢城区
+ 371300 临沂市
+ 371301 市辖区
+ 371302 兰山区
+ 371311 罗庄区
+ 371312 河东区
+ 371321 沂南县
+ 371322 郯城县
+ 371323 沂水县
+ 371324 苍山县
+ 371325 费县
+ 371326 平邑县
+ 371327 莒南县
+ 371328 蒙阴县
+ 371329 临沭县
+ 371400 德州市
+ 371401 市辖区
+ 371402 德城区
+ 371421 陵县
+ 371422 宁津县
+ 371423 庆云县
+ 371424 临邑县
+ 371425 齐河县
+ 371426 平原县
+ 371427 夏津县
+ 371428 武城县
+ 371481 乐陵市
+ 371482 禹城市
+ 371500 聊城市
+ 371501 市辖区
+ 371502 东昌府区
+ 371521 阳谷县
+ 371522 莘县
+ 371523 茌平县
+ 371524 东阿县
+ 371525 冠县
+ 371526 高唐县
+ 371581 临清市
+ 371600 滨州市
+ 371601 市辖区
+ 371602 滨城区
+ 371621 惠民县
+ 371622 阳信县
+ 371623 无棣县
+ 371624 沾化县
+ 371625 博兴县
+ 371626 邹平县
+ 371700 荷泽市
+ 371701 市辖区
+ 371702 牡丹区
+ 371721 曹县
+ 371722 单县
+ 371723 成武县
+ 371724 巨野县
+ 371725 郓城县
+ 371726 鄄城县
+ 371727 定陶县
+ 371728 东明县
+ 410000 河南省
+ 410100 郑州市
+ 410101 市辖区
+ 410102 中原区
+ 410103 二七区
+ 410104 管城回族区
+ 410105 金水区
+ 410106 上街区
+ 410108 邙山区
+ 410122 中牟县
+ 410181 巩义市
+ 410182 荥阳市
+ 410183 新密市
+ 410184 新郑市
+ 410185 登封市
+ 410200 开封市
+ 410201 市辖区
+ 410202 龙亭区
+ 410203 顺河回族区
+ 410204 鼓楼区
+ 410205 南关区
+ 410211 郊区
+ 410221 杞县
+ 410222 通许县
+ 410223 尉氏县
+ 410224 开封县
+ 410225 兰考县
+ 410300 洛阳市
+ 410301 市辖区
+ 410302 老城区
+ 410303 西工区
+ 410304 廛河回族区
+ 410305 涧西区
+ 410306 吉利区
+ 410307 洛龙区
+ 410322 孟津县
+ 410323 新安县
+ 410324 栾川县
+ 410325 嵩县
+ 410326 汝阳县
+ 410327 宜阳县
+ 410328 洛宁县
+ 410329 伊川县
+ 410381 偃师市
+ 410400 平顶山市
+ 410401 市辖区
+ 410402 新华区
+ 410403 卫东区
+ 410404 石龙区
+ 410411 湛河区
+ 410421 宝丰县
+ 410422 叶县
+ 410423 鲁山县
+ 410425 郏县
+ 410481 舞钢市
+ 410482 汝州市
+ 410500 安阳市
+ 410501 市辖区
+ 410502 文峰区
+ 410503 北关区
+ 410505 殷都区
+ 410506 龙安区
+ 410522 安阳县
+ 410523 汤阴县
+ 410526 滑县
+ 410527 内黄县
+ 410581 林州市
+ 410600 鹤壁市
+ 410601 市辖区
+ 410602 鹤山区
+ 410603 山城区
+ 410611 淇滨区
+ 410621 浚县
+ 410622 淇县
+ 410700 新乡市
+ 410701 市辖区
+ 410702 红旗区
+ 410703 卫滨区
+ 410704 凤泉区
+ 410711 牧野区
+ 410721 新乡县
+ 410724 获嘉县
+ 410725 原阳县
+ 410726 延津县
+ 410727 封丘县
+ 410728 长垣县
+ 410781 卫辉市
+ 410782 辉县市
+ 410800 焦作市
+ 410801 市辖区
+ 410802 解放区
+ 410803 中站区
+ 410804 马村区
+ 410811 山阳区
+ 410821 修武县
+ 410822 博爱县
+ 410823 武陟县
+ 410825 温县
+ 410881 济源市
+ 410882 沁阳市
+ 410883 孟州市
+ 410900 濮阳市
+ 410901 市辖区
+ 410902 华龙区
+ 410922 清丰县
+ 410923 南乐县
+ 410926 范县
+ 410927 台前县
+ 410928 濮阳县
+ 411000 许昌市
+ 411001 市辖区
+ 411002 魏都区
+ 411023 许昌县
+ 411024 鄢陵县
+ 411025 襄城县
+ 411081 禹州市
+ 411082 长葛市
+ 411100 漯河市
+ 411101 市辖区
+ 411102 源汇区
+ 411121 舞阳县
+ 411122 临颍县
+ 411123 郾城县
+ 411200 三门峡市
+ 411201 市辖区
+ 411202 湖滨区
+ 411221 渑池县
+ 411222 陕县
+ 411224 卢氏县
+ 411281 义马市
+ 411282 灵宝市
+ 411300 南阳市
+ 411301 市辖区
+ 411302 宛城区
+ 411303 卧龙区
+ 411321 南召县
+ 411322 方城县
+ 411323 西峡县
+ 411324 镇平县
+ 411325 内乡县
+ 411326 淅川县
+ 411327 社旗县
+ 411328 唐河县
+ 411329 新野县
+ 411330 桐柏县
+ 411381 邓州市
+ 411400 商丘市
+ 411401 市辖区
+ 411402 梁园区
+ 411403 睢阳区
+ 411421 民权县
+ 411422 睢县
+ 411423 宁陵县
+ 411424 柘城县
+ 411425 虞城县
+ 411426 夏邑县
+ 411481 永城市
+ 411500 信阳市
+ 411501 市辖区
+ 411502 师河区
+ 411503 平桥区
+ 411521 罗山县
+ 411522 光山县
+ 411523 新县
+ 411524 商城县
+ 411525 固始县
+ 411526 潢川县
+ 411527 淮滨县
+ 411528 息县
+ 411600 周口市
+ 411601 市辖区
+ 411602 川汇区
+ 411621 扶沟县
+ 411622 西华县
+ 411623 商水县
+ 411624 沈丘县
+ 411625 郸城县
+ 411626 淮阳县
+ 411627 太康县
+ 411628 鹿邑县
+ 411681 项城市
+ 411700 驻马店市
+ 411701 市辖区
+ 411702 驿城区
+ 411721 西平县
+ 411722 上蔡县
+ 411723 平舆县
+ 411724 正阳县
+ 411725 确山县
+ 411726 泌阳县
+ 411727 汝南县
+ 411728 遂平县
+ 411729 新蔡县
+ 420000 湖北省
+ 420100 武汉市
+ 420101 市辖区
+ 420102 江岸区
+ 420103 江汉区
+ 420104 乔口区
+ 420105 汉阳区
+ 420106 武昌区
+ 420107 青山区
+ 420111 洪山区
+ 420112 东西湖区
+ 420113 汉南区
+ 420114 蔡甸区
+ 420115 江夏区
+ 420116 黄陂区
+ 420117 新洲区
+ 420200 黄石市
+ 420201 市辖区
+ 420202 黄石港区
+ 420203 西塞山区
+ 420204 下陆区
+ 420205 铁山区
+ 420222 阳新县
+ 420281 大冶市
+ 420300 十堰市
+ 420301 市辖区
+ 420302 茅箭区
+ 420303 张湾区
+ 420321 郧县
+ 420322 郧西县
+ 420323 竹山县
+ 420324 竹溪县
+ 420325 房县
+ 420381 丹江口市
+ 420500 宜昌市
+ 420501 市辖区
+ 420502 西陵区
+ 420503 伍家岗区
+ 420504 点军区
+ 420505 虎亭区
+ 420506 夷陵区
+ 420525 远安县
+ 420526 兴山县
+ 420527 秭归县
+ 420528 长阳土家族自治县
+ 420529 五峰土家族自治县
+ 420581 宜都市
+ 420582 当阳市
+ 420583 枝江市
+ 420600 襄樊市
+ 420601 市辖区
+ 420602 襄城区
+ 420606 樊城区
+ 420607 襄阳区
+ 420624 南漳县
+ 420625 谷城县
+ 420626 保康县
+ 420682 老河口市
+ 420683 枣阳市
+ 420684 宜城市
+ 420700 鄂州市
+ 420701 市辖区
+ 420702 梁子湖区
+ 420703 华容区
+ 420704 鄂城区
+ 420800 荆门市
+ 420801 市辖区
+ 420802 东宝区
+ 420804 掇刀区
+ 420821 京山县
+ 420822 沙洋县
+ 420881 钟祥市
+ 420900 孝感市
+ 420901 市辖区
+ 420902 孝南区
+ 420921 孝昌县
+ 420922 大悟县
+ 420923 云梦县
+ 420981 应城市
+ 420982 安陆市
+ 420984 汉川市
+ 421000 荆州市
+ 421001 市辖区
+ 421002 沙市区
+ 421003 荆州区
+ 421022 公安县
+ 421023 监利县
+ 421024 江陵县
+ 421081 石首市
+ 421083 洪湖市
+ 421087 松滋市
+ 421100 黄冈市
+ 421101 市辖区
+ 421102 黄州区
+ 421121 团风县
+ 421122 红安县
+ 421123 罗田县
+ 421124 英山县
+ 421125 浠水县
+ 421126 蕲春县
+ 421127 黄梅县
+ 421181 麻城市
+ 421182 武穴市
+ 421200 咸宁市
+ 421201 市辖区
+ 421202 咸安区
+ 421221 嘉鱼县
+ 421222 通城县
+ 421223 崇阳县
+ 421224 通山县
+ 421281 赤壁市
+ 421300 随州市
+ 421301 市辖区
+ 421302 曾都区
+ 421381 广水市
+ 422800 恩施土家族苗族自治州
+ 422801 恩施市
+ 422802 利川市
+ 422822 建始县
+ 422823 巴东县
+ 422825 宣恩县
+ 422826 咸丰县
+ 422827 来凤县
+ 422828 鹤峰县
+ 429000 省直辖行政单位
+ 429004 仙桃市
+ 429005 潜江市
+ 429006 天门市
+ 429021 神农架林区
+ 430000 湖南省
+ 430100 长沙市
+ 430101 市辖区
+ 430102 芙蓉区
+ 430103 天心区
+ 430104 岳麓区
+ 430105 开福区
+ 430111 雨花区
+ 430121 长沙县
+ 430122 望城县
+ 430124 宁乡县
+ 430181 浏阳市
+ 430200 株洲市
+ 430201 市辖区
+ 430202 荷塘区
+ 430203 芦淞区
+ 430204 石峰区
+ 430211 天元区
+ 430221 株洲县
+ 430223 攸县
+ 430224 茶陵县
+ 430225 炎陵县
+ 430281 醴陵市
+ 430300 湘潭市
+ 430301 市辖区
+ 430302 雨湖区
+ 430304 岳塘区
+ 430321 湘潭县
+ 430381 湘乡市
+ 430382 韶山市
+ 430400 衡阳市
+ 430401 市辖区
+ 430405 珠晖区
+ 430406 雁峰区
+ 430407 石鼓区
+ 430408 蒸湘区
+ 430412 南岳区
+ 430421 衡阳县
+ 430422 衡南县
+ 430423 衡山县
+ 430424 衡东县
+ 430426 祁东县
+ 430481 耒阳市
+ 430482 常宁市
+ 430500 邵阳市
+ 430501 市辖区
+ 430502 双清区
+ 430503 大祥区
+ 430511 北塔区
+ 430521 邵东县
+ 430522 新邵县
+ 430523 邵阳县
+ 430524 隆回县
+ 430525 洞口县
+ 430527 绥宁县
+ 430528 新宁县
+ 430529 城步苗族自治县
+ 430581 武冈市
+ 430600 岳阳市
+ 430601 市辖区
+ 430602 岳阳楼区
+ 430603 云溪区
+ 430611 君山区
+ 430621 岳阳县
+ 430623 华容县
+ 430624 湘阴县
+ 430626 平江县
+ 430681 汨罗市
+ 430682 临湘市
+ 430700 常德市
+ 430701 市辖区
+ 430702 武陵区
+ 430703 鼎城区
+ 430721 安乡县
+ 430722 汉寿县
+ 430723 澧县
+ 430724 临澧县
+ 430725 桃源县
+ 430726 石门县
+ 430781 津市市
+ 430800 张家界市
+ 430801 市辖区
+ 430802 永定区
+ 430811 武陵源区
+ 430821 慈利县
+ 430822 桑植县
+ 430900 益阳市
+ 430901 市辖区
+ 430902 资阳区
+ 430903 赫山区
+ 430921 南县
+ 430922 桃江县
+ 430923 安化县
+ 430981 沅江市
+ 431000 郴州市
+ 431001 市辖区
+ 431002 北湖区
+ 431003 苏仙区
+ 431021 桂阳县
+ 431022 宜章县
+ 431023 永兴县
+ 431024 嘉禾县
+ 431025 临武县
+ 431026 汝城县
+ 431027 桂东县
+ 431028 安仁县
+ 431081 资兴市
+ 431100 永州市
+ 431101 市辖区
+ 431102 芝山区
+ 431103 冷水滩区
+ 431121 祁阳县
+ 431122 东安县
+ 431123 双牌县
+ 431124 道县
+ 431125 江永县
+ 431126 宁远县
+ 431127 蓝山县
+ 431128 新田县
+ 431129 江华瑶族自治县
+ 431200 怀化市
+ 431201 市辖区
+ 431202 鹤城区
+ 431221 中方县
+ 431222 沅陵县
+ 431223 辰溪县
+ 431224 溆浦县
+ 431225 会同县
+ 431226 麻阳苗族自治县
+ 431227 新晃侗族自治县
+ 431228 芷江侗族自治县
+ 431229 靖州苗族侗族自治县
+ 431230 通道侗族自治县
+ 431281 洪江市
+ 431300 娄底市
+ 431301 市辖区
+ 431302 娄星区
+ 431321 双峰县
+ 431322 新化县
+ 431381 冷水江市
+ 431382 涟源市
+ 433100 湘西土家族苗族自治州
+ 433101 吉首市
+ 433122 泸溪县
+ 433123 凤凰县
+ 433124 花垣县
+ 433125 保靖县
+ 433126 古丈县
+ 433127 永顺县
+ 433130 龙山县
+ 440000 广东省
+ 440100 广州市
+ 440101 市辖区
+ 440102 东山区
+ 440103 荔湾区
+ 440104 越秀区
+ 440105 海珠区
+ 440106 天河区
+ 440107 芳村区
+ 440111 白云区
+ 440112 黄埔区
+ 440113 番禺区
+ 440114 花都区
+ 440183 增城市
+ 440184 从化市
+ 440200 韶关市
+ 440201 市辖区
+ 440202 北江区
+ 440203 武江区
+ 440204 浈江区
+ 440221 曲江县
+ 440222 始兴县
+ 440224 仁化县
+ 440229 翁源县
+ 440232 乳源瑶族自治县
+ 440233 新丰县
+ 440281 乐昌市
+ 440282 南雄市
+ 440300 深圳市
+ 440301 市辖区
+ 440303 罗湖区
+ 440304 福田区
+ 440305 南山区
+ 440306 宝安区
+ 440307 龙岗区
+ 440308 盐田区
+ 440400 珠海市
+ 440401 市辖区
+ 440402 香洲区
+ 440403 斗门区
+ 440404 金湾区
+ 440500 汕头市
+ 440501 市辖区
+ 440507 龙湖区
+ 440511 金平区
+ 440512 濠江区
+ 440513 潮阳区
+ 440514 潮南区
+ 440515 澄海区
+ 440523 南澳县
+ 440600 佛山市
+ 440601 市辖区
+ 440604 禅城区
+ 440605 南海区
+ 440606 顺德区
+ 440607 三水区
+ 440608 高明区
+ 440700 江门市
+ 440701 市辖区
+ 440703 蓬江区
+ 440704 江海区
+ 440705 新会区
+ 440781 台山市
+ 440783 开平市
+ 440784 鹤山市
+ 440785 恩平市
+ 440800 湛江市
+ 440801 市辖区
+ 440802 赤坎区
+ 440803 霞山区
+ 440804 坡头区
+ 440811 麻章区
+ 440823 遂溪县
+ 440825 徐闻县
+ 440881 廉江市
+ 440882 雷州市
+ 440883 吴川市
+ 440900 茂名市
+ 440901 市辖区
+ 440902 茂南区
+ 440903 茂港区
+ 440923 电白县
+ 440981 高州市
+ 440982 化州市
+ 440983 信宜市
+ 441200 肇庆市
+ 441201 市辖区
+ 441202 端州区
+ 441203 鼎湖区
+ 441223 广宁县
+ 441224 怀集县
+ 441225 封开县
+ 441226 德庆县
+ 441283 高要市
+ 441284 四会市
+ 441300 惠州市
+ 441301 市辖区
+ 441302 惠城区
+ 441303 惠阳区
+ 441322 博罗县
+ 441323 惠东县
+ 441324 龙门县
+ 441400 梅州市
+ 441401 市辖区
+ 441402 梅江区
+ 441421 梅县
+ 441422 大埔县
+ 441423 丰顺县
+ 441424 五华县
+ 441426 平远县
+ 441427 蕉岭县
+ 441481 兴宁市
+ 441500 汕尾市
+ 441501 市辖区
+ 441502 城区
+ 441521 海丰县
+ 441523 陆河县
+ 441581 陆丰市
+ 441600 河源市
+ 441601 市辖区
+ 441602 源城区
+ 441621 紫金县
+ 441622 龙川县
+ 441623 连平县
+ 441624 和平县
+ 441625 东源县
+ 441700 阳江市
+ 441701 市辖区
+ 441702 江城区
+ 441721 阳西县
+ 441723 阳东县
+ 441781 阳春市
+ 441800 清远市
+ 441801 市辖区
+ 441802 清城区
+ 441821 佛冈县
+ 441823 阳山县
+ 441825 连山壮族瑶族自治县
+ 441826 连南瑶族自治县
+ 441827 清新县
+ 441881 英德市
+ 441882 连州市
+ 441900 东莞市
+ 442000 中山市
+ 445100 潮州市
+ 445101 市辖区
+ 445102 湘桥区
+ 445121 潮安县
+ 445122 饶平县
+ 445200 揭阳市
+ 445201 市辖区
+ 445202 榕城区
+ 445221 揭东县
+ 445222 揭西县
+ 445224 惠来县
+ 445281 普宁市
+ 445300 云浮市
+ 445301 市辖区
+ 445302 云城区
+ 445321 新兴县
+ 445322 郁南县
+ 445323 云安县
+ 445381 罗定市
+ 450000 广西壮族自治区
+ 450100 南宁市
+ 450101 市辖区
+ 450102 兴宁区
+ 450103 新城区
+ 450104 城北区
+ 450105 江南区
+ 450106 永新区
+ 450121 邕宁县
+ 450122 武鸣县
+ 450123 隆安县
+ 450124 马山县
+ 450125 上林县
+ 450126 宾阳县
+ 450127 横县
+ 450200 柳州市
+ 450201 市辖区
+ 450202 城中区
+ 450203 鱼峰区
+ 450204 柳南区
+ 450205 柳北区
+ 450221 柳江县
+ 450222 柳城县
+ 450223 鹿寨县
+ 450224 融安县
+ 450225 融水苗族自治县
+ 450226 三江侗族自治县
+ 450300 桂林市
+ 450301 市辖区
+ 450302 秀峰区
+ 450303 叠彩区
+ 450304 象山区
+ 450305 七星区
+ 450311 雁山区
+ 450321 阳朔县
+ 450322 临桂县
+ 450323 灵川县
+ 450324 全州县
+ 450325 兴安县
+ 450326 永福县
+ 450327 灌阳县
+ 450328 龙胜各族自治县
+ 450329 资源县
+ 450330 平乐县
+ 450331 荔蒲县
+ 450332 恭城瑶族自治县
+ 450400 梧州市
+ 450401 市辖区
+ 450403 万秀区
+ 450404 蝶山区
+ 450405 长洲区
+ 450421 苍梧县
+ 450422 藤县
+ 450423 蒙山县
+ 450481 岑溪市
+ 450500 北海市
+ 450501 市辖区
+ 450502 海城区
+ 450503 银海区
+ 450512 铁山港区
+ 450521 合浦县
+ 450600 防城港市
+ 450601 市辖区
+ 450602 港口区
+ 450603 防城区
+ 450621 上思县
+ 450681 东兴市
+ 450700 钦州市
+ 450701 市辖区
+ 450702 钦南区
+ 450703 钦北区
+ 450721 灵山县
+ 450722 浦北县
+ 450800 贵港市
+ 450801 市辖区
+ 450802 港北区
+ 450803 港南区
+ 450804 覃塘区
+ 450821 平南县
+ 450881 桂平市
+ 450900 玉林市
+ 450901 市辖区
+ 450902 玉州区
+ 450921 容县
+ 450922 陆川县
+ 450923 博白县
+ 450924 兴业县
+ 450981 北流市
+ 451000 百色市
+ 451001 市辖区
+ 451002 右江区
+ 451021 田阳县
+ 451022 田东县
+ 451023 平果县
+ 451024 德保县
+ 451025 靖西县
+ 451026 那坡县
+ 451027 凌云县
+ 451028 乐业县
+ 451029 田林县
+ 451030 西林县
+ 451031 隆林各族自治县
+ 451100 贺州市
+ 451101 市辖区
+ 451102 八步区
+ 451121 昭平县
+ 451122 钟山县
+ 451123 富川瑶族自治县
+ 451200 河池市
+ 451201 市辖区
+ 451202 金城江区
+ 451221 南丹县
+ 451222 天峨县
+ 451223 凤山县
+ 451224 东兰县
+ 451225 罗城仫佬族自治县
+ 451226 环江毛南族自治县
+ 451227 巴马瑶族自治县
+ 451228 都安瑶族自治县
+ 451229 大化瑶族自治县
+ 451281 宜州市
+ 451300 来宾市
+ 451301 市辖区
+ 451302 兴宾区
+ 451321 忻城县
+ 451322 象州县
+ 451323 武宣县
+ 451324 金秀瑶族自治县
+ 451381 合山市
+ 451400 崇左市
+ 451401 市辖区
+ 451402 江洲区
+ 451421 扶绥县
+ 451422 宁明县
+ 451423 龙州县
+ 451424 大新县
+ 451425 天等县
+ 451481 凭祥市
+ 460000 海南省
+ 460100 海口市
+ 460101 市辖区
+ 460105 秀英区
+ 460106 龙华区
+ 460107 琼山区
+ 460108 美兰区
+ 460200 三亚市
+ 460201 市辖区
+ 469000 省直辖县级行政单位
+ 469001 五指山市
+ 469002 琼海市
+ 469003 儋州市
+ 469005 文昌市
+ 469006 万宁市
+ 469007 东方市
+ 469025 定安县
+ 469026 屯昌县
+ 469027 澄迈县
+ 469028 临高县
+ 469030 白沙黎族自治县
+ 469031 昌江黎族自治县
+ 469033 乐东黎族自治县
+ 469034 陵水黎族自治县
+ 469035 保亭黎族苗族自治县
+ 469036 琼中黎族苗族自治县
+ 469037 西沙群岛
+ 469038 南沙群岛
+ 469039 中沙群岛的岛礁及其海域
+ 500000 重庆市
+ 500100 市辖区
+ 500101 万州区
+ 500102 涪陵区
+ 500103 渝中区
+ 500104 大渡口区
+ 500105 江北区
+ 500106 沙坪坝区
+ 500107 九龙坡区
+ 500108 南岸区
+ 500109 北碚区
+ 500110 万盛区
+ 500111 双桥区
+ 500112 渝北区
+ 500113 巴南区
+ 500114 黔江区
+ 500115 长寿区
+ 500200 县
+ 500222 綦江县
+ 500223 潼南县
+ 500224 铜梁县
+ 500225 大足县
+ 500226 荣昌县
+ 500227 璧山县
+ 500228 梁平县
+ 500229 城口县
+ 500230 丰都县
+ 500231 垫江县
+ 500232 武隆县
+ 500233 忠县
+ 500234 开县
+ 500235 云阳县
+ 500236 奉节县
+ 500237 巫山县
+ 500238 巫溪县
+ 500240 石柱土家族自治县
+ 500241 秀山土家族苗族自治县
+ 500242 酉阳土家族苗族自治县
+ 500243 彭水苗族土家族自治县
+ 500300 市
+ 500381 江津市
+ 500382 合川市
+ 500383 永川市
+ 500384 南川市
+ 510000 四川省
+ 510100 成都市
+ 510101 市辖区
+ 510104 锦江区
+ 510105 青羊区
+ 510106 金牛区
+ 510107 武侯区
+ 510108 成华区
+ 510112 龙泉驿区
+ 510113 青白江区
+ 510114 新都区
+ 510115 温江区
+ 510121 金堂县
+ 510122 双流县
+ 510124 郫县
+ 510129 大邑县
+ 510131 蒲江县
+ 510132 新津县
+ 510181 都江堰市
+ 510182 彭州市
+ 510183 邛崃市
+ 510184 崇州市
+ 510300 自贡市
+ 510301 市辖区
+ 510302 自流井区
+ 510303 贡井区
+ 510304 大安区
+ 510311 沿滩区
+ 510321 荣县
+ 510322 富顺县
+ 510400 攀枝花市
+ 510401 市辖区
+ 510402 东区
+ 510403 西区
+ 510411 仁和区
+ 510421 米易县
+ 510422 盐边县
+ 510500 泸州市
+ 510501 市辖区
+ 510502 江阳区
+ 510503 纳溪区
+ 510504 龙马潭区
+ 510521 泸县
+ 510522 合江县
+ 510524 叙永县
+ 510525 古蔺县
+ 510600 德阳市
+ 510601 市辖区
+ 510603 旌阳区
+ 510623 中江县
+ 510626 罗江县
+ 510681 广汉市
+ 510682 什邡市
+ 510683 绵竹市
+ 510700 绵阳市
+ 510701 市辖区
+ 510703 涪城区
+ 510704 游仙区
+ 510722 三台县
+ 510723 盐亭县
+ 510724 安县
+ 510725 梓潼县
+ 510726 北川羌族自治县
+ 510727 平武县
+ 510781 江油市
+ 510800 广元市
+ 510801 市辖区
+ 510802 市中区
+ 510811 元坝区
+ 510812 朝天区
+ 510821 旺苍县
+ 510822 青川县
+ 510823 剑阁县
+ 510824 苍溪县
+ 510900 遂宁市
+ 510901 市辖区
+ 510903 船山区
+ 510904 安居区
+ 510921 蓬溪县
+ 510922 射洪县
+ 510923 大英县
+ 511000 内江市
+ 511001 市辖区
+ 511002 市中区
+ 511011 东兴区
+ 511024 威远县
+ 511025 资中县
+ 511028 隆昌县
+ 511100 乐山市
+ 511101 市辖区
+ 511102 市中区
+ 511111 沙湾区
+ 511112 五通桥区
+ 511113 金口河区
+ 511123 犍为县
+ 511124 井研县
+ 511126 夹江县
+ 511129 沐川县
+ 511132 峨边彝族自治县
+ 511133 马边彝族自治县
+ 511181 峨眉山市
+ 511300 南充市
+ 511301 市辖区
+ 511302 顺庆区
+ 511303 高坪区
+ 511304 嘉陵区
+ 511321 南部县
+ 511322 营山县
+ 511323 蓬安县
+ 511324 仪陇县
+ 511325 西充县
+ 511381 阆中市
+ 511400 眉山市
+ 511401 市辖区
+ 511402 东坡区
+ 511421 仁寿县
+ 511422 彭山县
+ 511423 洪雅县
+ 511424 丹棱县
+ 511425 青神县
+ 511500 宜宾市
+ 511501 市辖区
+ 511502 翠屏区
+ 511521 宜宾县
+ 511522 南溪县
+ 511523 江安县
+ 511524 长宁县
+ 511525 高县
+ 511526 珙县
+ 511527 筠连县
+ 511528 兴文县
+ 511529 屏山县
+ 511600 广安市
+ 511601 市辖区
+ 511602 广安区
+ 511621 岳池县
+ 511622 武胜县
+ 511623 邻水县
+ 511681 华莹市
+ 511700 达州市
+ 511701 市辖区
+ 511702 通川区
+ 511721 达县
+ 511722 宣汉县
+ 511723 开江县
+ 511724 大竹县
+ 511725 渠县
+ 511781 万源市
+ 511800 雅安市
+ 511801 市辖区
+ 511802 雨城区
+ 511821 名山县
+ 511822 荥经县
+ 511823 汉源县
+ 511824 石棉县
+ 511825 天全县
+ 511826 芦山县
+ 511827 宝兴县
+ 511900 巴中市
+ 511901 市辖区
+ 511902 巴州区
+ 511921 通江县
+ 511922 南江县
+ 511923 平昌县
+ 512000 资阳市
+ 512001 市辖区
+ 512002 雁江区
+ 512021 安岳县
+ 512022 乐至县
+ 512081 简阳市
+ 513200 阿坝藏族羌族自治州
+ 513221 汶川县
+ 513222 理县
+ 513223 茂县
+ 513224 松潘县
+ 513225 九寨沟县
+ 513226 金川县
+ 513227 小金县
+ 513228 黑水县
+ 513229 马尔康县
+ 513230 壤塘县
+ 513231 阿坝县
+ 513232 若尔盖县
+ 513233 红原县
+ 513300 甘孜藏族自治州
+ 513321 康定县
+ 513322 泸定县
+ 513323 丹巴县
+ 513324 九龙县
+ 513325 雅江县
+ 513326 道孚县
+ 513327 炉霍县
+ 513328 甘孜县
+ 513329 新龙县
+ 513330 德格县
+ 513331 白玉县
+ 513332 石渠县
+ 513333 色达县
+ 513334 理塘县
+ 513335 巴塘县
+ 513336 乡城县
+ 513337 稻城县
+ 513338 得荣县
+ 513400 凉山彝族自治州
+ 513401 西昌市
+ 513422 木里藏族自治县
+ 513423 盐源县
+ 513424 德昌县
+ 513425 会理县
+ 513426 会东县
+ 513427 宁南县
+ 513428 普格县
+ 513429 布拖县
+ 513430 金阳县
+ 513431 昭觉县
+ 513432 喜德县
+ 513433 冕宁县
+ 513434 越西县
+ 513435 甘洛县
+ 513436 美姑县
+ 513437 雷波县
+ 520000 贵州省
+ 520100 贵阳市
+ 520101 市辖区
+ 520102 南明区
+ 520103 云岩区
+ 520111 花溪区
+ 520112 乌当区
+ 520113 白云区
+ 520114 小河区
+ 520121 开阳县
+ 520122 息烽县
+ 520123 修文县
+ 520181 清镇市
+ 520200 六盘水市
+ 520201 钟山区
+ 520203 六枝特区
+ 520221 水城县
+ 520222 盘县
+ 520300 遵义市
+ 520301 市辖区
+ 520302 红花岗区
+ 520303 汇川区
+ 520321 遵义县
+ 520322 桐梓县
+ 520323 绥阳县
+ 520324 正安县
+ 520325 道真仡佬族苗族自治县
+ 520326 务川仡佬族苗族自治县
+ 520327 凤冈县
+ 520328 湄潭县
+ 520329 余庆县
+ 520330 习水县
+ 520381 赤水市
+ 520382 仁怀市
+ 520400 安顺市
+ 520401 市辖区
+ 520402 西秀区
+ 520421 平坝县
+ 520422 普定县
+ 520423 镇宁布依族苗族自治县
+ 520424 关岭布依族苗族自治县
+ 520425 紫云苗族布依族自治县
+ 522200 铜仁地区
+ 522201 铜仁市
+ 522222 江口县
+ 522223 玉屏侗族自治县
+ 522224 石阡县
+ 522225 思南县
+ 522226 印江土家族苗族自治县
+ 522227 德江县
+ 522228 沿河土家族自治县
+ 522229 松桃苗族自治县
+ 522230 万山特区
+ 522300 黔西南布依族苗族自治州
+ 522301 兴义市
+ 522322 兴仁县
+ 522323 普安县
+ 522324 晴隆县
+ 522325 贞丰县
+ 522326 望谟县
+ 522327 册亨县
+ 522328 安龙县
+ 522400 毕节地区
+ 522401 毕节市
+ 522422 大方县
+ 522423 黔西县
+ 522424 金沙县
+ 522425 织金县
+ 522426 纳雍县
+ 522427 威宁彝族回族苗族自治县
+ 522428 赫章县
+ 522600 黔东南苗族侗族自治州
+ 522601 凯里市
+ 522622 黄平县
+ 522623 施秉县
+ 522624 三穗县
+ 522625 镇远县
+ 522626 岑巩县
+ 522627 天柱县
+ 522628 锦屏县
+ 522629 剑河县
+ 522630 台江县
+ 522631 黎平县
+ 522632 榕江县
+ 522633 从江县
+ 522634 雷山县
+ 522635 麻江县
+ 522636 丹寨县
+ 522700 黔南布依族苗族自治州
+ 522701 都匀市
+ 522702 福泉市
+ 522722 荔波县
+ 522723 贵定县
+ 522725 瓮安县
+ 522726 独山县
+ 522727 平塘县
+ 522728 罗甸县
+ 522729 长顺县
+ 522730 龙里县
+ 522731 惠水县
+ 522732 三都水族自治县
+ 530000 云南省
+ 530100 昆明市
+ 530101 市辖区
+ 530102 五华区
+ 530103 盘龙区
+ 530111 官渡区
+ 530112 西山区
+ 530113 东川区
+ 530121 呈贡县
+ 530122 晋宁县
+ 530124 富民县
+ 530125 宜良县
+ 530126 石林彝族自治县
+ 530127 嵩明县
+ 530128 禄劝彝族苗族自治县
+ 530129 寻甸回族彝族自治县
+ 530181 安宁市
+ 530300 曲靖市
+ 530301 市辖区
+ 530302 麒麟区
+ 530321 马龙县
+ 530322 陆良县
+ 530323 师宗县
+ 530324 罗平县
+ 530325 富源县
+ 530326 会泽县
+ 530328 沾益县
+ 530381 宣威市
+ 530400 玉溪市
+ 530401 市辖区
+ 530402 红塔区
+ 530421 江川县
+ 530422 澄江县
+ 530423 通海县
+ 530424 华宁县
+ 530425 易门县
+ 530426 峨山彝族自治县
+ 530427 新平彝族傣族自治县
+ 530428 元江哈尼族彝族傣族自治县
+ 530500 保山市
+ 530501 市辖区
+ 530502 隆阳区
+ 530521 施甸县
+ 530522 腾冲县
+ 530523 龙陵县
+ 530524 昌宁县
+ 530600 昭通市
+ 530601 市辖区
+ 530602 昭阳区
+ 530621 鲁甸县
+ 530622 巧家县
+ 530623 盐津县
+ 530624 大关县
+ 530625 永善县
+ 530626 绥江县
+ 530627 镇雄县
+ 530628 彝良县
+ 530629 威信县
+ 530630 水富县
+ 530700 丽江市
+ 530701 市辖区
+ 530702 古城区
+ 530721 玉龙纳西族自治县
+ 530722 永胜县
+ 530723 华坪县
+ 530724 宁蒗彝族自治县
+ 530800 思茅市
+ 530801 市辖区
+ 530802 翠云区
+ 530821 普洱哈尼族彝族自治县
+ 530822 墨江哈尼族自治县
+ 530823 景东彝族自治县
+ 530824 景谷傣族彝族自治县
+ 530825 镇沅彝族哈尼族拉祜族自治县
+ 530826 江城哈尼族彝族自治县
+ 530827 孟连傣族拉祜族佤族自治县
+ 530828 澜沧拉祜族自治县
+ 530829 西盟佤族自治县
+ 530900 临沧市
+ 530901 市辖区
+ 530902 临翔区
+ 530921 凤庆县
+ 530922 云县
+ 530923 永德县
+ 530924 镇康县
+ 530925 双江拉祜族佤族布朗族傣族自治县
+ 530926 耿马傣族佤族自治县
+ 530927 沧源佤族自治县
+ 532300 楚雄彝族自治州
+ 532301 楚雄市
+ 532322 双柏县
+ 532323 牟定县
+ 532324 南华县
+ 532325 姚安县
+ 532326 大姚县
+ 532327 永仁县
+ 532328 元谋县
+ 532329 武定县
+ 532331 禄丰县
+ 532500 红河哈尼族彝族自治州
+ 532501 个旧市
+ 532502 开远市
+ 532522 蒙自县
+ 532523 屏边苗族自治县
+ 532524 建水县
+ 532525 石屏县
+ 532526 弥勒县
+ 532527 泸西县
+ 532528 元阳县
+ 532529 红河县
+ 532530 金平苗族瑶族傣族自治县
+ 532531 绿春县
+ 532532 河口瑶族自治县
+ 532600 文山壮族苗族自治州
+ 532621 文山县
+ 532622 砚山县
+ 532623 西畴县
+ 532624 麻栗坡县
+ 532625 马关县
+ 532626 丘北县
+ 532627 广南县
+ 532628 富宁县
+ 532800 西双版纳傣族自治州
+ 532801 景洪市
+ 532822 勐海县
+ 532823 勐腊县
+ 532900 大理白族自治州
+ 532901 大理市
+ 532922 漾濞彝族自治县
+ 532923 祥云县
+ 532924 宾川县
+ 532925 弥渡县
+ 532926 南涧彝族自治县
+ 532927 巍山彝族回族自治县
+ 532928 永平县
+ 532929 云龙县
+ 532930 洱源县
+ 532931 剑川县
+ 532932 鹤庆县
+ 533100 德宏傣族景颇族自治州
+ 533102 瑞丽市
+ 533103 潞西市
+ 533122 梁河县
+ 533123 盈江县
+ 533124 陇川县
+ 533300 怒江傈僳族自治州
+ 533321 泸水县
+ 533323 福贡县
+ 533324 贡山独龙族怒族自治县
+ 533325 兰坪白族普米族自治县
+ 533400 迪庆藏族自治州
+ 533421 香格里拉县
+ 533422 德钦县
+ 533423 维西傈僳族自治县
+ 540000 西藏自治区
+ 540100 拉萨市
+ 540101 市辖区
+ 540102 城关区
+ 540121 林周县
+ 540122 当雄县
+ 540123 尼木县
+ 540124 曲水县
+ 540125 堆龙德庆县
+ 540126 达孜县
+ 540127 墨竹工卡县
+ 542100 昌都地区
+ 542121 昌都县
+ 542122 江达县
+ 542123 贡觉县
+ 542124 类乌齐县
+ 542125 丁青县
+ 542126 察雅县
+ 542127 八宿县
+ 542128 左贡县
+ 542129 芒康县
+ 542132 洛隆县
+ 542133 边坝县
+ 542200 山南地区
+ 542221 乃东县
+ 542222 扎囊县
+ 542223 贡嘎县
+ 542224 桑日县
+ 542225 琼结县
+ 542226 曲松县
+ 542227 措美县
+ 542228 洛扎县
+ 542229 加查县
+ 542231 隆子县
+ 542232 错那县
+ 542233 浪卡子县
+ 542300 日喀则地区
+ 542301 日喀则市
+ 542322 南木林县
+ 542323 江孜县
+ 542324 定日县
+ 542325 萨迦县
+ 542326 拉孜县
+ 542327 昂仁县
+ 542328 谢通门县
+ 542329 白朗县
+ 542330 仁布县
+ 542331 康马县
+ 542332 定结县
+ 542333 仲巴县
+ 542334 亚东县
+ 542335 吉隆县
+ 542336 聂拉木县
+ 542337 萨嘎县
+ 542338 岗巴县
+ 542400 那曲地区
+ 542421 那曲县
+ 542422 嘉黎县
+ 542423 比如县
+ 542424 聂荣县
+ 542425 安多县
+ 542426 申扎县
+ 542427 索县
+ 542428 班戈县
+ 542429 巴青县
+ 542430 尼玛县
+ 542500 阿里地区
+ 542521 普兰县
+ 542522 札达县
+ 542523 噶尔县
+ 542524 日土县
+ 542525 革吉县
+ 542526 改则县
+ 542527 措勤县
+ 542600 林芝地区
+ 542621 林芝县
+ 542622 工布江达县
+ 542623 米林县
+ 542624 墨脱县
+ 542625 波密县
+ 542626 察隅县
+ 542627 朗县
+ 610000 陕西省
+ 610100 西安市
+ 610101 市辖区
+ 610102 新城区
+ 610103 碑林区
+ 610104 莲湖区
+ 610111 灞桥区
+ 610112 未央区
+ 610113 雁塔区
+ 610114 阎良区
+ 610115 临潼区
+ 610116 长安区
+ 610122 蓝田县
+ 610124 周至县
+ 610125 户县
+ 610126 高陵县
+ 610200 铜川市
+ 610201 市辖区
+ 610202 王益区
+ 610203 印台区
+ 610204 耀州区
+ 610222 宜君县
+ 610300 宝鸡市
+ 610301 市辖区
+ 610302 渭滨区
+ 610303 金台区
+ 610304 陈仓区
+ 610322 凤翔县
+ 610323 岐山县
+ 610324 扶风县
+ 610326 眉县
+ 610327 陇县
+ 610328 千阳县
+ 610329 麟游县
+ 610330 凤县
+ 610331 太白县
+ 610400 咸阳市
+ 610401 市辖区
+ 610402 秦都区
+ 610403 杨凌区
+ 610404 渭城区
+ 610422 三原县
+ 610423 泾阳县
+ 610424 乾县
+ 610425 礼泉县
+ 610426 永寿县
+ 610427 彬县
+ 610428 长武县
+ 610429 旬邑县
+ 610430 淳化县
+ 610431 武功县
+ 610481 兴平市
+ 610500 渭南市
+ 610501 市辖区
+ 610502 临渭区
+ 610521 华县
+ 610522 潼关县
+ 610523 大荔县
+ 610524 合阳县
+ 610525 澄城县
+ 610526 蒲城县
+ 610527 白水县
+ 610528 富平县
+ 610581 韩城市
+ 610582 华阴市
+ 610600 延安市
+ 610601 市辖区
+ 610602 宝塔区
+ 610621 延长县
+ 610622 延川县
+ 610623 子长县
+ 610625 志丹县
+ 610626 吴旗县
+ 610627 甘泉县
+ 610628 富县
+ 610629 洛川县
+ 610630 宜川县
+ 610631 黄龙县
+ 610632 黄陵县
+ 610700 汉中市
+ 610701 市辖区
+ 610702 汉台区
+ 610721 南郑县
+ 610722 城固县
+ 610723 洋县
+ 610724 西乡县
+ 610725 勉县
+ 610726 宁强县
+ 610727 略阳县
+ 610728 镇巴县
+ 610729 留坝县
+ 610730 佛坪县
+ 610800 榆林市
+ 610801 市辖区
+ 610802 榆阳区
+ 610821 神木县
+ 610822 府谷县
+ 610823 横山县
+ 610824 靖边县
+ 610825 定边县
+ 610826 绥德县
+ 610827 米脂县
+ 610828 佳县
+ 610829 吴堡县
+ 610830 清涧县
+ 610831 子洲县
+ 610900 安康市
+ 610901 市辖区
+ 610902 汉滨区
+ 610921 汉阴县
+ 610922 石泉县
+ 610923 宁陕县
+ 610924 紫阳县
+ 610925 岚皋县
+ 610926 平利县
+ 610927 镇坪县
+ 610928 旬阳县
+ 610929 白河县
+ 611000 商洛市
+ 611001 市辖区
+ 611002 商州区
+ 611021 洛南县
+ 611022 丹凤县
+ 611023 商南县
+ 611024 山阳县
+ 611025 镇安县
+ 611026 柞水县
+ 620000 甘肃省
+ 620100 兰州市
+ 620101 市辖区
+ 620102 城关区
+ 620103 七里河区
+ 620104 西固区
+ 620105 安宁区
+ 620111 红古区
+ 620121 永登县
+ 620122 皋兰县
+ 620123 榆中县
+ 620200 嘉峪关市
+ 620201 市辖区
+ 620300 金昌市
+ 620301 市辖区
+ 620302 金川区
+ 620321 永昌县
+ 620400 白银市
+ 620401 市辖区
+ 620402 白银区
+ 620403 平川区
+ 620421 靖远县
+ 620422 会宁县
+ 620423 景泰县
+ 620500 天水市
+ 620501 市辖区
+ 620502 秦城区
+ 620503 北道区
+ 620521 清水县
+ 620522 秦安县
+ 620523 甘谷县
+ 620524 武山县
+ 620525 张家川回族自治县
+ 620600 武威市
+ 620601 市辖区
+ 620602 凉州区
+ 620621 民勤县
+ 620622 古浪县
+ 620623 天祝藏族自治县
+ 620700 张掖市
+ 620701 市辖区
+ 620702 甘州区
+ 620721 肃南裕固族自治县
+ 620722 民乐县
+ 620723 临泽县
+ 620724 高台县
+ 620725 山丹县
+ 620800 平凉市
+ 620801 市辖区
+ 620802 崆峒区
+ 620821 泾川县
+ 620822 灵台县
+ 620823 崇信县
+ 620824 华亭县
+ 620825 庄浪县
+ 620826 静宁县
+ 620900 酒泉市
+ 620901 市辖区
+ 620902 肃州区
+ 620921 金塔县
+ 620922 安西县
+ 620923 肃北蒙古族自治县
+ 620924 阿克塞哈萨克族自治县
+ 620981 玉门市
+ 620982 敦煌市
+ 621000 庆阳市
+ 621001 市辖区
+ 621002 西峰区
+ 621021 庆城县
+ 621022 环县
+ 621023 华池县
+ 621024 合水县
+ 621025 正宁县
+ 621026 宁县
+ 621027 镇原县
+ 621100 定西市
+ 621101 市辖区
+ 621102 安定区
+ 621121 通渭县
+ 621122 陇西县
+ 621123 渭源县
+ 621124 临洮县
+ 621125 漳县
+ 621126 岷县
+ 622600 陇南地区
+ 622621 武都县
+ 622623 宕昌县
+ 622624 成县
+ 622625 康县
+ 622626 文县
+ 622627 西和县
+ 622628 礼县
+ 622629 两当县
+ 622630 徽县
+ 622900 临夏回族自治州
+ 622901 临夏市
+ 622921 临夏县
+ 622922 康乐县
+ 622923 永靖县
+ 622924 广河县
+ 622925 和政县
+ 622926 东乡族自治县
+ 622927 积石山保安族东乡族撒拉族自治县
+ 623000 甘南藏族自治州
+ 623001 合作市
+ 623021 临潭县
+ 623022 卓尼县
+ 623023 舟曲县
+ 623024 迭部县
+ 623025 玛曲县
+ 623026 碌曲县
+ 623027 夏河县
+ 630000 青海省
+ 630100 西宁市
+ 630101 市辖区
+ 630102 城东区
+ 630103 城中区
+ 630104 城西区
+ 630105 城北区
+ 630121 大通回族土族自治县
+ 630122 湟中县
+ 630123 湟源县
+ 632100 海东地区
+ 632121 平安县
+ 632122 民和回族土族自治县
+ 632123 乐都县
+ 632126 互助土族自治县
+ 632127 化隆回族自治县
+ 632128 循化撒拉族自治县
+ 632200 海北藏族自治州
+ 632221 门源回族自治县
+ 632222 祁连县
+ 632223 海晏县
+ 632224 刚察县
+ 632300 黄南藏族自治州
+ 632321 同仁县
+ 632322 尖扎县
+ 632323 泽库县
+ 632324 河南蒙古族自治县
+ 632500 海南藏族自治州
+ 632521 共和县
+ 632522 同德县
+ 632523 贵德县
+ 632524 兴海县
+ 632525 贵南县
+ 632600 果洛藏族自治州
+ 632621 玛沁县
+ 632622 班玛县
+ 632623 甘德县
+ 632624 达日县
+ 632625 久治县
+ 632626 玛多县
+ 632700 玉树藏族自治州
+ 632721 玉树县
+ 632722 杂多县
+ 632723 称多县
+ 632724 治多县
+ 632725 囊谦县
+ 632726 曲麻莱县
+ 632800 海西蒙古族藏族自治州
+ 632801 格尔木市
+ 632802 德令哈市
+ 632821 乌兰县
+ 632822 都兰县
+ 632823 天峻县
+ 640000 宁夏回族自治区
+ 640100 银川市
+ 640101 市辖区
+ 640104 兴庆区
+ 640105 西夏区
+ 640106 金凤区
+ 640122 贺兰县
+ 640181 灵武市
+ 640200 石嘴山市
+ 640201 市辖区
+ 640202 大武口区
+ 640205 惠农区
+ 640221 平罗县
+ 640300 吴忠市
+ 640301 市辖区
+ 640302 利通区
+ 640323 盐池县
+ 640324 同心县
+ 640381 青铜峡市
+ 640400 固原市
+ 640401 市辖区
+ 640402 原州区
+ 640422 西吉县
+ 640423 隆德县
+ 640424 泾源县
+ 640425 彭阳县
+ 640500 中卫市
+ 640501 市辖区
+ 640502 沙坡头区
+ 640521 中宁县
+ 640522 海原县
+ 650000 新疆维吾尔自治区
+ 650100 乌鲁木齐市
+ 650101 市辖区
+ 650102 天山区
+ 650103 沙依巴克区
+ 650104 新市区
+ 650105 水磨沟区
+ 650106 头屯河区
+ 650107 达坂城区
+ 650108 东山区
+ 650121 乌鲁木齐县
+ 650200 克拉玛依市
+ 650201 市辖区
+ 650202 独山子区
+ 650203 克拉玛依区
+ 650204 白碱滩区
+ 650205 乌尔禾区
+ 652100 吐鲁番地区
+ 652101 吐鲁番市
+ 652122 鄯善县
+ 652123 托克逊县
+ 652200 哈密地区
+ 652201 哈密市
+ 652222 巴里坤哈萨克自治县
+ 652223 伊吾县
+ 652300 昌吉回族自治州
+ 652301 昌吉市
+ 652302 阜康市
+ 652303 米泉市
+ 652323 呼图壁县
+ 652324 玛纳斯县
+ 652325 奇台县
+ 652327 吉木萨尔县
+ 652328 木垒哈萨克自治县
+ 652700 博尔塔拉蒙古自治州
+ 652701 博乐市
+ 652722 精河县
+ 652723 温泉县
+ 652800 巴音郭楞蒙古自治州
+ 652801 库尔勒市
+ 652822 轮台县
+ 652823 尉犁县
+ 652824 若羌县
+ 652825 且末县
+ 652826 焉耆回族自治县
+ 652827 和静县
+ 652828 和硕县
+ 652829 博湖县
+ 652900 阿克苏地区
+ 652901 阿克苏市
+ 652922 温宿县
+ 652923 库车县
+ 652924 沙雅县
+ 652925 新和县
+ 652926 拜城县
+ 652927 乌什县
+ 652928 阿瓦提县
+ 652929 柯坪县
+ 653000 克孜勒苏柯尔克孜自治州
+ 653001 阿图什市
+ 653022 阿克陶县
+ 653023 阿合奇县
+ 653024 乌恰县
+ 653100 喀什地区
+ 653101 喀什市
+ 653121 疏附县
+ 653122 疏勒县
+ 653123 英吉沙县
+ 653124 泽普县
+ 653125 莎车县
+ 653126 叶城县
+ 653127 麦盖提县
+ 653128 岳普湖县
+ 653129 伽师县
+ 653130 巴楚县
+ 653131 塔什库尔干塔吉克自治县
+ 653200 和田地区
+ 653201 和田市
+ 653221 和田县
+ 653222 墨玉县
+ 653223 皮山县
+ 653224 洛浦县
+ 653225 策勒县
+ 653226 于田县
+ 653227 民丰县
+ 654000 伊犁哈萨克自治州
+ 654002 伊宁市
+ 654003 奎屯市
+ 654021 伊宁县
+ 654022 察布查尔锡伯自治县
+ 654023 霍城县
+ 654024 巩留县
+ 654025 新源县
+ 654026 昭苏县
+ 654027 特克斯县
+ 654028 尼勒克县
+ 654200 塔城地区
+ 654201 塔城市
+ 654202 乌苏市
+ 654221 额敏县
+ 654223 沙湾县
+ 654224 托里县
+ 654225 裕民县
+ 654226 和布克赛尔蒙古自治县
+ 654300 阿勒泰地区
+ 654301 阿勒泰市
+ 654321 布尔津县
+ 654322 富蕴县
+ 654323 福海县
+ 654324 哈巴河县
+ 654325 青河县
+ 654326 吉木乃县
+ 659000 省直辖行政单位
+ 659001 石河子市
+ 659002 阿拉尔市
+ 659003 图木舒克市
+ 659004 五家渠市
+ 710000 台湾省
+ 810000 香港特别行政区
+ 820000 澳门特别行政区
diff --git a/dkhjziye333.js b/dkhjziye333.js
new file mode 100644
index 000000000..2f3a3a227
--- /dev/null
+++ b/dkhjziye333.js
@@ -0,0 +1,681 @@
+/*ziye
+
+说明:微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.png 获取授权
+
+10.8 一共20个,自行删减替换(不一定都能提现,可自行关闭)
+10.14 因为大部分打卡失效,现删减整理,剩余5个
+10.28 增加京优打卡和云端打卡
+注意 久诺打卡用本地js 改ck=2 进行获取
+11.14 剔除无用打卡 剩余4个
+11.19 恢复微打卡 剩余5个 必须用本地文件获取微打卡的ck
+
+功能如下:
+1.读秒限速打卡,
+2.打卡币统计,次数统计
+3.现金统计,自动兑换,自动提现 (默认关闭兑换和提现,自行打开)
+
+
+一,第一次进一定先授权,第一次进一定先授权,第一次进一定先授权,
+
+二,将hostname复制粘贴进配置文件
+
+三,将重写复制到 rewrite_local 下,开启软件,进对应程序获取ck(会卡住,但是可以获取ck),目前一共9个打卡小程序,
+
+建议新建配置片段,获取ck后禁用,
+换号则复制js文件,修改jbid的值就可以了
+
+
+
+ck=1
+
+音乐打卡
+早起打卡
+云端打卡
+久诺打卡
+
+
+ck=2
+微打卡
+
+
+
+时间设置
+
+!!!删除第一个*后面的空格!!! 自行模拟人性化修改选择
+
+
+5位 第一位为分 填 10-59 如
+
+* /12 6-23 * * * dkhjziye925.js
+6点到23点 0 12 24 36 48 运行1次
+
+
+6位 第一位为秒 填 0-59 第二位为分 填 10-59 如
+
+23 * /13 6-23 * * * dkhjziye925.js
+6点到23点 0 13 26 39 52 的23秒运行1次
+
+
+
+打卡限速默认设置10分钟一次,可根据情况修改,
+
+
+
+
+hostname=www.baimaa.com,ph0001.hezyq.com,cps.0day.fun,am.kuqi5.cn,zm.shujumagician.com,
+
+############## 圈x
+
+//音乐打卡
+https:\/\/www\.baimaa\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js
+
+
+// 早起打卡
+https:\/\/ph0001\.hezyq\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js
+
+
+
+//云端打卡
+https:\/\/cps\.0day\.fun\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js
+
+
+
+//久诺打卡
+https:\/\/am\.kuqi5\.cn\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js
+
+
+
+//微打卡
+https:\/\/zm\.shujumagician\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js
+
+
+
+
+############## loon
+
+
+//音乐打卡
+http-request https:\/\/www\.baimaa\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+// 早起打卡
+http-request https:\/\/ph0001\.hezyq\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+//云端打卡
+http-request https:\/\/cps\.0day\.fun\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+//久诺打卡
+http-request https:\/\/am\.kuqi5\.cn\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+
+
+
+//微打卡
+http-request https:\/\/zm\.shujumagician\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+############## surge
+
+//音乐打卡
+音乐打卡 = type=http-request,pattern=https:\/\/www\.baimaa\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+// 早起打卡
+早起打卡 = type=http-request,pattern=https:\/\/ph0001\.hezyq\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+
+//云端打卡
+云端打卡 = type=http-request,pattern=https:\/\/cps\.0day\.fun\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+
+//久诺打卡
+久诺打卡 = type=http-request,pattern=https:\/\/am\.kuqi5\.cn\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+
+//微打卡
+微打卡= type=http-request,pattern=https:\/\/zm\.shujumagician\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.js, requires-body=true
+
+
+*/
+
+//////////////////////////////////////////正文
+
+const CK=1// 修改ck 获取对应程序cookie
+
+const jsname = '打卡合集'
+const $ = new Env(jsname)//模版引用
+const jbid =1// 换号则复制js,修改jbid的值就可以了
+const notify = 1; //通知开为1,关为0
+const logs = 0; // 日志开为1,关为0
+
+const dk=1//打卡开关
+const tj=1//统计开关
+const xj=1//现金开关
+const dm=1//读秒开关
+const tx=0//提现开关
+const dh=0//兑换开关
+const dd=2//运行时间,单位为秒
+
+var tz=''//通知循环
+
+
+
+
+const yydkname = "音乐打卡";//程序名
+const yydkid = 11;//ck id
+const yydkcs = 10;//打卡次数
+const yydktx = 10;//提现标准
+const yydkxs = 10;//限速标准.单位为分钟
+const yydkdh = 10;//兑换标准
+const yydkdhid = 22;//兑换id
+const yydkdhsp = "1元";//兑换商品
+const yydkkey = "yydkkey"+jbid //保存ck
+const yydkurl =$.getdata(yydkkey)//读取ck
+
+
+
+
+
+
+
+
+
+
+const zqdkname = "早起打卡";//程序名
+const zqdkid = 597;//ck id
+const zqdkcs = 20;//打卡次数
+const zqdktx = 10;//提现标准
+const zqdkxs = 10;//限速标准.单位为分钟
+const zqdkdh = 5000;//兑换标准
+const zqdkdhid = 6;//兑换id
+const zqdkdhsp = "1元";//兑换商品
+const zqdkkey = "zqdkkey"+jbid //保存ck
+const zqdkurl =$.getdata(zqdkkey)//读取ck
+
+
+
+
+
+
+
+
+
+
+const yddkname = "云端打卡";//程序名
+const yddkid = 2;//ck id
+const yddkcs = 10;//打卡次数
+const yddktx = 10;//提现标准
+const yddkxs = 10;//限速标准.单位为分钟
+const yddkdh = 3500;//兑换标准
+const yddkdhid = 4;//兑换id
+const yddkdhsp = "50元话费";//兑换商品
+const yddkkey = "yddkkey"+jbid //保存ck
+const yddkurl =$.getdata(yddkkey)//读取ck
+
+
+
+
+
+
+const jndkname = "久诺打卡";//程序名
+const jndkid = 8;//ck id
+const jndkcs = 10;//打卡次数
+const jndktx = 10;//提现标准
+const jndkxs = 10;//限速标准.单位为分钟
+const jndkdh = 3500;//兑换标准
+const jndkdhid = 4;//兑换id
+const jndkdhsp = "50元话费";//兑换商品
+const jndkkey = "jndkkey"+jbid //保存ck
+const jndkurl =$.getdata(jndkkey)//读取ck
+
+
+
+
+
+
+const wdkname = "微打卡";//程序名
+const wdkid = 2;//ck id
+const wdkcs = 20;//打卡次数
+const wdktx = 10;//提现标准
+const wdkxs = 10;//限速标准.单位为分钟
+const wdkdh = 13000;//兑换标准
+const wdkdhid = 9;//兑换id
+const wdkdhsp = "腾讯月卡";//兑换商品
+const wdkkey = "wdkkey"+jbid //保存ck
+const wdkurl =$.getdata(wdkkey)//读取ck
+
+
+
+
+
+
+
+
+
+//CK运行
+
+let isGetCookie = typeof $request !== 'undefined'
+if (isGetCookie) {
+ GetCookie()
+} else {
+ all()
+}
+
+
+
+
+
+//1异步运行
+
+
+ function all()
+
+ {
+
+ for(var i=0;i<6;i++)
+ { (function(i) {
+ setTimeout(function() {
+
+
+
+
+if(i==0) jndk(i);
+
+else if(i==1) yddk(i);
+
+else if(i==2) yydk(i);
+
+else if(i==3) zqdk(i);
+
+else if(i==4) wdk(i);
+
+else if(i==5) showmsg(i);
+
+
+
+}, (i + 1) * dd*1000);
+ })(i)
+
+
+
+
+}}
+
+
+
+
+
+
+
+
+//CK获取模块
+function GetCookie() {
+
+/////////////////////CK=1
+
+if (CK==1)
+{
+
+
+
+
+if ($request && $request.url.match(/i=2&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const yddkurl = $request.url
+ $.log(`yddkurl:${yddkurl}`)
+ if (yddkurl) $.setdata(yddkurl, yddkkey)
+ $.msg(yddkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+if ($request && $request.url.match(/i=8&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const jndkurl = $request.url
+ $.log(`jndkurl:${jndkurl}`)
+ if (jndkurl) $.setdata(jndkurl, jndkkey)
+ $.msg(jndkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+
+if ($request && $request.url.match(/i=11&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const yydkurl = $request.url
+ $.log(`yydkurl:${yydkurl}`)
+ if (yydkurl) $.setdata(yydkurl, yydkkey)
+ $.msg(yydkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+if ($request && $request.url.match(/i=597&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const zqdkurl = $request.url
+ $.log(`zqdkurl:${zqdkurl}`)
+ if (zqdkurl) $.setdata(zqdkurl, zqdkkey)
+ $.msg(zqdkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+}
+
+
+
+ if (CK==2)
+{
+
+
+if ($request && $request.url.match(/i=2&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const wdkurl = $request.url
+ $.log(`wdkurl:${wdkurl}`)
+ if (wdkurl) $.setdata(wdkurl, wdkkey)
+ $.msg(wdkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+ }
+
+
+
+}
+
+
+
+
+///////////////////////////////////////运行
+
+
+
+
+function yydk() {
+var A={Y:[yydkurl,yydkname,yydkcs,yydktx,yydkxs,yydkdh,yydkdhid,yydkdhsp]}
+B(A)
+}
+
+
+
+
+
+function zqdk() {
+var A={Y:[zqdkurl,zqdkname,zqdkcs,zqdktx,zqdkxs,zqdkdh,zqdkdhid,zqdkdhsp]}
+B(A)
+}
+
+
+
+
+
+function yddk() {
+var A={Y:[yddkurl,yddkname,yddkcs,yddktx,yddkxs,yddkdh,yddkdhid,yddkdhsp]}
+B(A)
+}
+
+
+
+
+
+function jndk() {
+var A={Y:[jndkurl,jndkname,jndkcs,jndktx,jndkxs,jndkdh,jndkdhid,jndkdhsp]}
+B(A)
+}
+
+
+
+
+
+function wdk() {
+var A={Y:[wdkurl,wdkname,wdkcs,wdktx,wdkxs,wdkdh,wdkdhid,wdkdhsp]}
+B(A)
+}
+
+
+
+
+
+
+
+
+
+
+function B(C) {
+
+return new Promise((resolve, reject) => {
+
+
+const Tjurl = {url: C.Y[0]};
+const Xjurl = {url: C.Y[0].replace(/action=today&contr=index/g, `action=index&contr=my`)};
+const Logurl = {url: C.Y[0].replace(/action=today&contr=index/g, `action=log&contr=clock&level=1&p=1&today=1`)};
+
+const Dhurl = {url: C.Y[0].replace(/action=today&contr=index/g, `action=index&contr=shop`)};
+
+const Dhspurl = {url: C.Y[0].replace(/do=distribute/g, `do=exchange&id=${C.Y[6]}`)};
+
+
+
+
+const Txurl = {url: C.Y[0].replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${C.Y[3]}&payment_code=`)};
+
+const Dkurl = {url: C.Y[0].replace(/action=today&contr=index/g, `action=sign&contr=clock`)
+ };
+
+
+
+//统计打卡
+
+if (tj==1)
+$.get(Tjurl,(error, response, data) =>{
+ if(logs)$.log(`${C.Y[1]}统计 - data: ${data}`)
+ tbj = JSON.parse(data)
+if(tbj.status == 1 && tbj.info.today.clock < C.Y[2]){tz+=C.Y[1]+'[账户信息]👤'+
+'已打卡'+[Number(tbj.info.today.clock) ]+'/'+C.Y[2]+'次'+',得'+[Number(tbj.info.today.currency)]+'币'+'\n'
+ }
+else {tz+=C.Y[1]+'[打卡完成]✅'+'得'+[Number(tbj.info.today.currency)]+'币'+'\n'}
+
+
+if (dk==1&&tbj.info.today.clock==0){
+ $.get(Dkurl,(error, response, data) =>{
+ if(logs)$.log(`${C.Y[1]}打卡- data: ${data}`)
+ dbj = JSON.parse(data)
+if (dbj.status==1){
+tz+=C.Y[1]+'[打卡成功]🎉'+'打卡次数+1'+'\n'
+
+ }
+
+
+resolve()
+
+ })
+
+
+}
+
+
+
+
+
+
+
+
+
+
+//读秒打卡
+
+
+if (dm==1)
+ $.get(Logurl,(error, response, data) =>{
+ if(logs)$.log(`${C.Y[1]}限速- data: ${data}`)
+ ybj = JSON.parse(data)
+
+var f=ybj.info.log.length-1
+var time = ybj.info.log[f].created
+var newtime=time.replace(time[10],'T')
+var c = new Date(newtime)/1000
+var now = new Date()/1000
+var cz=[Number((now+28800-c)/60).toFixed(0)]
+
+if (czC.Y[4]&&tbj.info.today.clock{
+ if(logs)$.log(`${C.Y[1]}打卡- data: ${data}`)
+ dbj = JSON.parse(data)
+if (dbj.status==1){
+tz+=C.Y[1]+'[打卡成功]🎉'+'打卡次数+1'+'\n'
+
+ }
+
+
+resolve()
+
+ })
+
+
+}
+
+
+
+resolve()
+ })
+
+
+
+
+
+
+resolve()
+ })
+
+
+
+//兑换
+if (dh==1)
+ $.get(Dhurl,(error, response, data) =>{
+ if(logs)$.log(`${C.Y[1]}兑换 - data: ${data}`)
+ Mbj= JSON.parse(data)
+if(Mbj.status == 1)
+{tz+=C.Y[1]+"[总打卡币]💰"+'余'+
+Mbj.info.member.currency+"币"+"\n"
+
+ }
+
+
+
+
+
+if (dh==1&&Mbj.info.member.currency>=C.Y[5]){
+ $.get(Dhspurl,(error, response, data) =>{
+ if(logs)$.log(`${C.Y[1]}兑换商品 - data: ${data}`)
+ nbj = JSON.parse(data)
+if(nbj.status == 1) {
+
+tz+=C.Y[1]+'[兑换成功]🧧,成功兑换'+C.Y[7]
++'\n'
+
+ }
+
+else {
+
+tz+=C.Y[1]+'[兑换失败]❓:'+nbj.info+'\n'
+
+ }
+
+resolve()
+
+ })
+
+
+}
+
+
+
+resolve()
+ })
+
+
+
+
+
+//现金提现
+if (xj==1)
+ $.get(Xjurl,(error, response, data) =>{
+ if(logs)$.log(`${C.Y[1]}现金 - data: ${data}`)
+ xbj = JSON.parse(data)
+if(xbj.status == 1)
+{tz+=C.Y[1]+'[现金余额]💵'+xbj.info.member.money+'元'+'\n'
+
+ }
+
+
+
+
+
+if (tx==1&&xbj.info.member.money>=C.Y[3]){
+ $.get(Txurl,(error, response, data) =>{
+ if(logs)$.log(`${C.Y[1]}提现 - data: ${data}`)
+ obj = JSON.parse(data)
+if(obj.status == 1) {
+
+tz+=C.Y[1]+'[提现成功]🧧,提现'+C.Y[3]+'元'+'\n'
+
+ }
+
+else {
+
+tz+=C.Y[1]+'[提现失败]❓:'+obj.info+'\n'
+
+ }
+
+resolve()
+ })
+
+
+}
+
+
+
+
+resolve()
+ })
+
+
+
+ })
+ }
+
+
+
+
+
+
+function showmsg() {
+
+
+
+if (notify ==1)
+$.msg(jsname,'',tz)
+
+
+}
+
+// prettier-ignore
+function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
+
diff --git a/dkhjziye333.png b/dkhjziye333.png
new file mode 100644
index 000000000..f8adbb954
Binary files /dev/null and b/dkhjziye333.png differ
diff --git a/dkhjziyeck.js b/dkhjziyeck.js
new file mode 100644
index 000000000..e96481522
--- /dev/null
+++ b/dkhjziyeck.js
@@ -0,0 +1,563 @@
+/*ziye
+
+说明:微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziye333.png 获取授权
+
+
+
+
+一,第一次进一定先授权,第一次进一定先授权,第一次进一定先授权,
+
+二,将hostname复制粘贴进配置文件
+
+三,将重写复制到 rewrite_local 下,开启软件,进对应程序获取ck(会卡住,但是可以获取ck),目前一共7个打卡小程序,
+
+建议新建配置片段,获取ck后禁用,
+换号则复制js文件,修改jbid的值就可以了
+
+
+
+ck=1
+
+微打卡
+微早起打卡
+音乐打卡
+早起打卡
+圈子打卡
+京优打卡
+每天打卡
+
+
+
+ck=2
+
+云端打卡
+久诺打卡
+
+用本地js 改ck=2 获取ck
+
+
+
+
+
+时间设置
+
+!!!删除第一个*后面的空格!!! 自行模拟人性化修改选择
+
+
+5位 第一位为分 填 10-59 如
+
+* /12 6-23 * * * dkhjziye925.js
+6点到23点 0 12 24 36 48 运行1次
+
+
+6位 第一位为秒 填 0-59 第二位为分 填 10-59 如
+
+23 * /13 6-23 * * * dkhjziye925.js
+6点到23点 0 13 26 39 52 的23秒运行1次
+
+
+
+打卡限速默认设置10分钟一次,可根据情况修改,
+
+
+
+hostname=zm.shujumagician.com,www.baimaa.com,ph0001.hezyq.com,daka.isfx.cn,wq.inqan.com,www.zq221727.com,cps.0day.fun,am.kuqi5.cn,w.1688sywh.com,
+
+############## 圈x
+
+//微打卡 微早起打卡
+https:\/\/zm\.shujumagician\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js
+
+//音乐打卡
+https:\/\/www\.baimaa\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js
+
+
+// 早起打卡
+https:\/\/ph0001\.hezyq\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js
+
+
+
+//圈子打卡
+https:\/\/wq\.inqan\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js
+
+
+
+
+//京优打卡
+https:\/\/www\.zq221727\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js
+
+
+
+
+//云端打卡
+https:\/\/cps\.0day\.fun\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js
+
+
+
+
+
+
+//久诺打卡
+https:\/\/am\.kuqi5\.cn\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js
+
+
+
+
+//每天打卡
+https:\/\/w\.1688sywh\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js
+
+
+
+
+
+
+
+
+
+
+
+
+############## loon
+
+//微打卡 微早起打卡
+http-request https:\/\/zm\.shujumagician\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+//音乐打卡
+http-request https:\/\/www\.baimaa\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+// 早起打卡
+http-request https:\/\/ph0001\.hezyq\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+//圈子打卡
+http-request https:\/\/wq\.inqan\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+//京优打卡
+http-request https:\/\/www\.zq221727\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+//云端打卡
+http-request https:\/\/cps\.0day\.fun\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+
+
+
+//久诺打卡
+http-request https:\/\/am\.kuqi5\.cn\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+//每天打卡
+http-request https:\/\/w\.1688sywh\.com\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+
+
+
+
+
+
+############## surge
+
+//微打卡 微早起打卡
+微打卡 微早起打卡 = type=http-request,pattern=https:\/\/zm\.shujumagician\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+//音乐打卡
+音乐打卡 = type=http-request,pattern=https:\/\/www\.baimaa\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+// 早起打卡
+早起打卡 = type=http-request,pattern=https:\/\/ph0001\.hezyq\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+//圈子打卡
+圈子打卡 = type=http-request,pattern=https:\/\/wq\.inqan\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+
+//京优打卡
+京优打卡 = type=http-request,pattern=https:\/\/www\.zq221727\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+
+//云端打卡
+云端打卡 = type=http-request,pattern=https:\/\/cps\.0day\.fun\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+
+//久诺打卡
+久诺打卡 = type=http-request,pattern=https:\/\/am\.kuqi5\.cn\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+
+//每天打卡
+每天打卡 = type=http-request,pattern=https:\/\/w\.1688sywh\.com\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/dkhjziyeck.js, requires-body=true
+
+
+
+
+
+
+
+
+
+
+
+
+
+*/
+
+//////////////////////////////////////////正文
+
+const CK=2// 修改ck 获取对应程序cookie
+
+const jsname = '打卡合集'
+const $ = new Env(jsname)//模版引用
+const jbid =1// 换号则复制js,修改jbid的值就可以了
+const notify = 1; //通知开为1,关为0
+const logs = 0; // 日志开为1,关为0
+
+
+
+
+const wdkname = "微打卡";//程序名
+const wdkid = 2;//ck id
+const wdkcs = 20;//打卡次数
+const wdktx = 10;//提现标准
+const wdkxs = 10;//限速标准.单位为分钟
+const wdkdh = 13000;//兑换标准
+const wdkdhid = 9;//兑换id
+const wdkdhsp = "腾讯月卡";//兑换商品
+const wdkkey = "wdkkey"+jbid //保存ck
+const wdkurl =$.getdata(wdkkey)//读取ck
+
+
+
+
+
+
+
+const wzqdkname = "微早起打卡";//程序名
+const wzqdkid = 8;//ck id
+const wzqdkcs = 20;//打卡次数
+const wzqdktx = 10;//提现标准
+const wzqdkxs = 10;//限速标准.单位为分钟
+const wzqdkdh = 13000;//兑换标准
+const wzqdkdhid = 10;//兑换id
+const wzqdkdhsp = "腾讯月卡";//兑换商品
+const wzqdkkey = "wzqdkkey"+jbid //保存ck
+const wzqdkurl =$.getdata(wzqdkkey)//读取ck
+
+
+
+
+const yydkname = "音乐打卡";//程序名
+const yydkid = 11;//ck id
+const yydkcs = 10;//打卡次数
+const yydktx = 10;//提现标准
+const yydkxs = 10;//限速标准.单位为分钟
+const yydkdh = 10;//兑换标准
+const yydkdhid = 22;//兑换id
+const yydkdhsp = "1元";//兑换商品
+const yydkkey = "yydkkey"+jbid //保存ck
+const yydkurl =$.getdata(yydkkey)//读取ck
+
+
+
+
+
+
+
+
+
+
+const zqdkname = "早起打卡";//程序名
+const zqdkid = 597;//ck id
+const zqdkcs = 20;//打卡次数
+const zqdktx = 10;//提现标准
+const zqdkxs = 10;//限速标准.单位为分钟
+const zqdkdh = 5000;//兑换标准
+const zqdkdhid = 6;//兑换id
+const zqdkdhsp = "1元";//兑换商品
+const zqdkkey = "zqdkkey"+jbid //保存ck
+const zqdkurl =$.getdata(zqdkkey)//读取ck
+
+
+
+
+const qzdkname = "圈子打卡";//程序名
+const qzdkid = 9;//ck id
+const qzdkcs = 20;//打卡次数
+const qzdktx = 10;//提现标准
+const qzdkxs = 10;//限速标准.单位为分钟
+const qzdkdh = 3500;//兑换标准
+const qzdkdhid = 4;//兑换id
+const qzdkdhsp = "50元话费";//兑换商品
+const qzdkkey = "qzdkkey"+jbid //保存ck
+const qzdkurl =$.getdata(qzdkkey)//读取ck
+
+
+
+
+
+const jydkname = "京优打卡";//程序名
+const jydkid = 39;//ck id
+const jydkcs = 5;//打卡次数
+const jydktx = 10;//提现标准
+const jydkxs = 10;//限速标准.单位为分钟
+const jydkdh = 3500;//兑换标准
+const jydkdhid = 4;//兑换id
+const jydkdhsp = "50元话费";//兑换商品
+const jydkkey = "jydkkey"+jbid //保存ck
+const jydkurl =$.getdata(jydkkey)//读取ck
+
+
+
+
+const yddkname = "云端打卡";//程序名
+const yddkid = 2;//ck id
+const yddkcs = 10;//打卡次数
+const yddktx = 10;//提现标准
+const yddkxs = 10;//限速标准.单位为分钟
+const yddkdh = 3500;//兑换标准
+const yddkdhid = 4;//兑换id
+const yddkdhsp = "50元话费";//兑换商品
+const yddkkey = "yddkkey"+jbid //保存ck
+const yddkurl =$.getdata(yddkkey)//读取ck
+
+
+
+
+
+
+const jndkname = "久诺打卡";//程序名
+const jndkid = 8;//ck id
+const jndkcs = 10;//打卡次数
+const jndktx = 10;//提现标准
+const jndkxs = 10;//限速标准.单位为分钟
+const jndkdh = 3500;//兑换标准
+const jndkdhid = 4;//兑换id
+const jndkdhsp = "50元话费";//兑换商品
+const jndkkey = "jndkkey"+jbid //保存ck
+const jndkurl =$.getdata(jndkkey)//读取ck
+
+
+
+
+const mtdkname = "每天打卡";//程序名
+const mtdkid = 57;//ck id
+const mtdkcs = 10;//打卡次数
+const mtdktx = 10;//提现标准
+const mtdkxs = 10;//限速标准.单位为分钟
+const mtdkdh = 3500;//兑换标准
+const mtdkdhid = 4;//兑换id
+const mtdkdhsp = "50元话费";//兑换商品
+const mtdkkey = "mtdkkey"+jbid //保存ck
+const mtdkurl =$.getdata(mtdkkey)//读取ck
+
+
+
+
+
+
+
+
+
+
+
+//CK运行
+
+let isGetCookie = typeof $request !== 'undefined'
+if (isGetCookie) {
+ GetCookie()
+}
+
+
+
+
+
+
+
+
+
+
+//CK获取模块
+function GetCookie() {
+
+/////////////////////CK=1
+
+if (CK==1)
+{
+
+if ($request && $request.url.match(/i=2&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const wdkurl = $request.url
+ $.log(`wdkurl:${wdkurl}`)
+ if (wdkurl) $.setdata(wdkurl, wdkkey)
+ $.msg(wdkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+
+
+if ($request && $request.url.match(/i=8&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const wzqdkurl = $request.url
+ $.log(`wzqdkurl:${wzqdkurl}`)
+ if (wzqdkurl) $.setdata(wzqdkurl, wzqdkkey)
+ $.msg(wzqdkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+if ($request && $request.url.match(/i=11&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const yydkurl = $request.url
+ $.log(`yydkurl:${yydkurl}`)
+ if (yydkurl) $.setdata(yydkurl, yydkkey)
+ $.msg(yydkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+if ($request && $request.url.match(/i=597&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const zqdkurl = $request.url
+ $.log(`zqdkurl:${zqdkurl}`)
+ if (zqdkurl) $.setdata(zqdkurl, zqdkkey)
+ $.msg(zqdkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+if ($request && $request.url.match(/i=9&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const qzdkurl = $request.url
+ $.log(`qzdkurl:${qzdkurl}`)
+ if (qzdkurl) $.setdata(qzdkurl, qzdkkey)
+ $.msg(qzdkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+if ($request && $request.url.match(/i=39&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const jydkurl = $request.url
+ $.log(`jydkurl:${jydkurl}`)
+ if (jydkurl) $.setdata(jydkurl, jydkkey)
+ $.msg(jydkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+
+if ($request && $request.url.match(/i=39&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const mtdkurl = $request.url
+ $.log(`mtdkurl:${mtdkurl}`)
+ if (mtdkurl) $.setdata(mtdkurl, mtdkkey)
+ $.msg(mtdkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+if (CK==2)
+{
+
+
+
+
+
+if ($request && $request.url.match(/i=2&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const yddkurl = $request.url
+ $.log(`yddkurl:${yddkurl}`)
+ if (yddkurl) $.setdata(yddkurl, yddkkey)
+ $.msg(yddkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+if ($request && $request.url.match(/i=8&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+{const jndkurl = $request.url
+ $.log(`jndkurl:${jndkurl}`)
+ if (jndkurl) $.setdata(jndkurl, jndkkey)
+ $.msg(jndkkey, `获取cookie: 成功🎉`, ``)
+}
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// prettier-ignore
+function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
+
diff --git a/flwhbziye.js b/flwhbziye.js
new file mode 100644
index 000000000..88ea8c4ae
--- /dev/null
+++ b/flwhbziye.js
@@ -0,0 +1,287 @@
+
+/*ziye
+
+//返利网1212天天领现金,活动时间 12月 5号 9号到12号
+每天1.95
+
+下载地址 http://m.a8fdj.cn/Invite/promotion?id=775&spm=page_name.h5.pty-wxzcpv~std-65354&go=http%3A%2F%2Fhuodong.a8fdj.cn%2Fh5%2FInvitefriendsreward%2FregisterCallback%3Fuserid%3D373511081%26id%3D775%26sn%3D47ecab06aba43e015082e531d8214eb5
+
+下载后登录
+
+进入 我的 点击 天天领现金 获取cookie
+
+⚠️会卡住,但是能获取到cookie,然后注释重写就行了!
+提现请先微信关注返利网公众号
+
+hostname=huodong.fanli.com,
+
+时间👇
+
+0 1-16 10 5,9,10,11,12 * *
+
+
+
+#返利网红包
+############## 圈x
+https:\/\/huodong\.fanli\.com\/h5\/Fanlishare20201212\/ajaxInit url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/flwhbziye.js
+
+
+
+#返利网红包
+############## loon
+
+
+http-request https:\/\/huodong\.fanli\.com\/h5\/Fanlishare20201212\/ajaxDoTask76728 script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/flwhbziye.js,requires-header=true, tag=返利网红包获取cookie
+
+
+#返利网红包
+############## surge
+
+返利网红包 = type=http-request,pattern=https:\/\/huodong\.fanli\.com\/h5\/Fanlishare20201212\/ajaxDoTask76728,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/flwhbziye.js,
+
+
+
+
+
+
+*/
+
+
+
+
+
+const jsname='返利网红包'
+const $ = Env(jsname)
+
+
+const logs = 0; //0为关闭日志,1为开启
+const notifyInterval=1//0为关闭通知,1为开启
+const jbid=1;
+const txbz=1.45//设置余额大于等于多少提现,必须大于0.3
+
+
+
+
+
+const flwhburlKey = 'flwhburl'+jbid
+
+const flwhbheaderKey = 'flwhbhd'+jbid
+
+
+
+const flwhburlVal = $.getdata(flwhburlKey)
+
+const flwhbheaderVal = $.getdata(flwhbheaderKey)
+
+const flwhbbodyVal = ''
+
+
+
+
+
+
+
+
+
+var tz=''
+
+
+let isGetCookie = typeof $request !== 'undefined'
+if (isGetCookie) {
+ GetCookie();
+ $.done();
+} else {
+ all()
+}
+
+
+
+
+
+function GetCookie() {
+
+
+
+ if($request &&$request.url.indexOf("ajaxInit")>=0) {
+
+ const flwhburlVal = $request.url
+if (flwhburlVal) $.setdata(flwhburlVal,flwhburlKey)
+ $.log(`[${jsname}] 获取url请求: 成功,flwhburlVal: ${flwhburlVal}`)
+const flwhbheaderVal = JSON.stringify($request.headers)
+ if (flwhbheaderVal) $.setdata(flwhbheaderVal,flwhbheaderKey)
+ $.log(`[${jsname}] 获取Cookie: 成功,flwhbheaderVal: ${flwhbheaderVal}`)
+ $.msg(flwhbheaderKey, `获取Cookie: 成功🎉`, ``)
+
+
+ }
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+ function all()
+
+ {
+
+ for(var i=0;i<3;i++)
+ { (function(i) {
+ setTimeout(function() {
+
+ if(i==0) flwhbtask();
+ if(i==1) flwhblh();
+
+else if(i==2) {
+showmsg()
+$.done()}
+}, (i + 1) *500);
+ })(i)
+
+
+}}
+
+
+
+//账户信息
+function flwhbtask() {
+return new Promise((resolve, reject) => {
+
+ const toflwhburl = {
+
+ url: flwhburlVal,
+
+ headers: JSON.parse(flwhbheaderVal),
+ body: flwhbbodyVal
+ };
+ $.get(toflwhburl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 账户信息: ${data}`)
+ signinfo =JSON.parse(data)
+ if (signinfo.status==1)
+ {
+tz+='【收益总计】🎉:'+signinfo.data.user_total_money+'元'+'\n'+
+'【账户余额】🎉:'+signinfo.data.user_current_money+'\n'+
+'【今日奖励】🎉:'+signinfo.data.get_money_76728+'元'+'\n'
+
+}
+
+else
+tz+='【出现问题】✖️:'+signinfo.data+'\n'
+
+zhtx(signinfo.data.user_current_money)
+
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+//惊喜礼盒
+function flwhblh() {
+return new Promise((resolve, reject) => {
+
+ const toflwhblhurl = {
+
+ url: flwhburlVal.replace(/ajaxInit/g, `ajaxDoTask76728`),
+
+ headers: JSON.parse(flwhbheaderVal),
+ body: flwhbbodyVal
+ };
+ $.get(toflwhblhurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 惊喜礼盒: ${data}`)
+ jxlh =JSON.parse(data)
+ if (jxlh.data.remain_num_76728>0)
+ {
+tz+='【开启礼盒】🎉:'+jxlh.data.amount+'元'+'\n'+
+'【剩余礼盒】🎉:'+jxlh.data.remain_num_76728+'个'+'\n'
+
+}
+
+else
+tz+='【开启完毕】✖️:'+'礼盒已全部开启'+'\n'
+
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+function zhtx(y)
+{
+if(y>=txbz)
+flwhbtx()
+
+}
+
+
+
+
+
+
+//提现
+function flwhbtx() {
+return new Promise((resolve, reject) => {
+
+ const toflwhbtxurl = {
+
+ url: flwhburlVal.replace(/ajaxInit/g, `ajaxExchangeCash`),
+
+ headers: JSON.parse(flwhbheaderVal),
+
+ };
+ $.get(toflwhbtxurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 余额提现: ${data}`)
+ txtx =JSON.parse(data)
+ if (txtx.status==1)
+ {
+tz+='【余额提现】🎉:提现成功,请到公众号领取'+'\n'
+
+}
+
+else
+tz+='【余额提现】✖️:'+txtx.info+'\n'
+
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+
+
+
+
+
+function showmsg() {
+
+
+
+if (notifyInterval==1)
+$.msg(jsname,'',tz)
+}
+
+
+// prettier-ignore
+function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
diff --git a/isdkziye.js b/isdkziye.js
deleted file mode 100644
index fd97f7de9..000000000
--- a/isdkziye.js
+++ /dev/null
@@ -1,344 +0,0 @@
-/*ziye is分享打卡
-
-非常重要!!!
-
-微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/isdkziye.png 进入小程序,登录获取授权,再启动软件获取ck
-建议设置6点到23点之间打卡,时间间隔30分钟以上,否则容易封号
-
-
-
-
-2020.9.9
-
-《《《《《《《《《《制作其他打卡js的说明
-
-抓包小程序,然后替换以下内容来制作其他打卡js,
-需要替换的内容如下,按顺序替换字符,自己用电脑或者KODE软件替换,KODE下载链接https://apps.apple.com/cn/app/koder-code-editor/id1447489375
-
-daka.isfx.cn
-is分享打卡
-cs = 10
-xj = 1
-isdkurl
-i=2
-isdk
-
-手动替换
-daka\.isfx\.cn
-
-制作其他打卡js的说明》》》》》》》》》》》
-
-
-
-
-
-
-////////////////////////////////////////正文
-
-使用说明:
-
-一,微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/isdkziye.png 进入小程序,登录获取授权
-
-二,然后将hostname复制粘贴进配置文件
-
-三,将重写复制到 rewrite_local 下,再进入程序获取ck,建议 放入新建配置片段,获取之后禁用即可
-
-功能如下:
-1.每日打卡,设置了开关,完成任务不再打卡
-2.打卡币统计,
-3.现金统计,自动提现
-
-
-
-
-
-
-
-hostname= daka.isfx.cn,
-
-//surge
-is分享打卡 = type=http-request,pattern=^https:\/\/daka\.isfx\.cn\/*,requires-body=1,max-size=0,script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/isdkziye.js
-
-
-//圈x
-https:\/\/daka\.isfx\.cn\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/isdkziye.js
-
-//loon
-http-request ^https:\/\/daka\.isfx\.cn\/* script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/isdkziye.js
-, requires-body=true, timeout=10, tag=is分享打卡
-
-
-*/
-
-
-
-const sy = init()//声明必须
-const notifyInterval = 1; //通知开为1,常关为0
-const logs = 0; // 日志开关
-const jsname = 'is分享打卡'
-const jbid =1
-const sb='失败,请先关闭,进入程序获取授权'
-
-const cs = 10;//小程序打卡次数
-const xj = 1;//提现标准
-var tz=''
-
-const dkurlkey = 'isdkurl'+jbid
-const dkurl = sy.getdata(dkurlkey)
-
-
-let isGetCookie = typeof $request !== 'undefined'
-if (isGetCookie) {
- GetCookie()
-} else {
- all()
-}
-
-
-
-function GetCookie() {
-if ($request && $request.url.match(/i=2&/))
-if ($request && $request.url.match(/action=today&contr=index/))
- {
- const dkurl = $request.url
- sy.log(`dkurl:${dkurl}`)
- if (dkurl) sy.setdata(dkurl, dkurlkey)
- sy.msg(dkurlkey, `获取cookie: 成功🎉`, ``)
-}
-
-}
-
-
-//异步运行
-
-
-function all()
-
- {
-
- for(var i=0;i<3;i++)
- { (function(i) {
- setTimeout(function() {
-
- if(i==0) dktj(i);
-else if(i==1) dkxj(i);
-else if(i==2) showmsg(i);
-}, (i + 1) * 1000);
- })(i)
-
-
-}}
-
-
-
-
-//统计
-
-function dktj() {
-return new Promise((resolve, reject) => {
-
- const Tjurl = {
- url: dkurl
- };
- sy.get(Tjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1统计 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1 && obj.info.today.clock < cs){tz+="[账户信息]🎉"+"\n"+
-"今日已打卡"+[Number(obj.info.today.clock) ]+"/"+cs+"次"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
- }else tz+="[打卡完成]"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
-
-
-
-
-
-cstj1(obj.info.today.clock);
-
-
-
- resolve()
- })
- })
- }
-
-
-//次数统计
-
-
-function cstj1(tjtj)
-{
-if (tjtj {
-
- const Xjurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=index&contr=my`)
- };
- sy.get(Xjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1现金 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-
-
-
- tz +="💵现金余额"+
-obj.info.member.money+"元"+"\n"
-
- }
-
- else tz +=sb+"\n";
-
-
-xjtj1(obj.info.member.money);
-
-
-
- resolve()
- })
- })
- }
-
-
-
-
-//自动提现
-
-function dktx() {
-return new Promise((resolve, reject) => {
-
- const Txurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${xj}&payment_code=`)
- };
- sy.get(Txurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1提现 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-tz +='提现成功,成功提现'+xj+'元'+"\n"
-
- }
-
-if(obj.status == 2) {
-
-tz +='提现失败,原因:'+obj.info+"\n"
-
- }
-
-
-
-
- resolve()
- })
- })
- }
-
-
-
-//现金统计
-
-
-function xjtj1(tjtj)
-{
-if (tjtj>=xj)
-dktx()
-
-}
-
-
-
-//打卡
-function dkdk() {
-return new Promise((resolve, reject) => {
-
- const Dkurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=sign&contr=clock`)
- };
- sy.get(Dkurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1打卡- data: ${data}`)
- obj = JSON.parse(data)
-
- if (obj.status==1){
-tz+='[️打卡任务]:'+'打卡次数+1'+'\n'
-
- }
-else tz +=obj.info+'\n'
-
-
- resolve()
- })
- })
- }
-
-
-function showmsg() {
-
-console.log(tz)
-
-if (notifyInterval==1)
-sy.msg(jsname,'',tz)
-}
-
-
-function init() {
- isSurge = () => {
- return undefined !== this.$httpClient
- }
- isQuanX = () => {
- return undefined !== this.$task
- }
- getdata = (key) => {
- if (isSurge()) return $persistentStore.read(key)
- if (isQuanX()) return $prefs.valueForKey(key)
- }
- setdata = (key, val) => {
- if (isSurge()) return $persistentStore.write(key, val)
- if (isQuanX()) return $prefs.setValueForKey(key, val)
- }
- msg = (title, subtitle = '', body = '') => {
- if (isSurge()) $notification.post(title, subtitle, body)
- if (isQuanX()) $notify(title, subtitle, body)
- }
- log = (msg) => {
- console.log(`${msg}\n`)
- }
- get = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'GET'
- return $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) return $httpClient.get(options, callback)
- }
- post = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'POST'
- $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) $httpClient.post(options, callback)
- }
- done = (value = {}) => {
- $done(value)
- }
- return { isSurge, isQuanX, msg, log, getdata, setdata, get, post, done }
-}
diff --git a/isdkziye.png b/isdkziye.png
deleted file mode 100644
index a116c72ad..000000000
Binary files a/isdkziye.png and /dev/null differ
diff --git a/ksdkziye.js b/ksdkziye.js
deleted file mode 100644
index ae4be1c44..000000000
--- a/ksdkziye.js
+++ /dev/null
@@ -1,338 +0,0 @@
-/*ziye卡神打卡
-
-非常重要!!!
-
-微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/ksdkziye.png 进入小程序,登录获取授权,再启动软件获取ck
-建议设置6点到23点之间打卡,时间间隔30分钟以上,否则容易封号
-
-
-
-《《《《《《《《《《制作其他打卡js的说明
-
-抓包小程序,然后替换以下内容来制作其他打卡js,
-需要替换的内容如下,按顺序替换字符,自己用电脑或者KODE软件替换,KODE下载链接https://apps.apple.com/cn/app/koder-code-editor/id1447489375
-
-dkdk.vvrtf.cn
-卡神打卡
-cs = 10
-xj = 1
-ksdkurl
-i=3
-ksdk
-
-手动替换
-dkdk\.vvrtf\.cn
-
-制作其他打卡js的说明》》》》》》》》》》》
-
-
-
-
-
-
-////////////////////////////////////////正文
-
-
-使用说明:
-一,微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/ksdkziye.png 进入小程序,登录获取授权
-
-二,然后将hostname复制粘贴进配置文件
-
-三,将重写复制到 rewrite_local 下,再进入程序获取ck,建议 放入新建配置片段,获取之后禁用即可
-
-功能如下:
-1.每日打卡,设置了开关,完成任务不再打卡
-2.打卡币统计,
-3.现金统计,自动提现
-
-
-
-
-
-hostname= dkdk.vvrtf.cn,
-
-//surge
-卡神打卡 = type=http-request,pattern=^https:\/\/dkdk\.vvrtf\.cn\/*,requires-body=1,max-size=0,script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/ksdkziye.js
-
-//圈x
-https:\/\/dkdk\.vvrtf\.cn\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/ksdkziye.js
-
-//loon
-http-request ^https:\/\/dkdk\.vvrtf\.cn\/* script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/ksdkziye.js
-, requires-body=true, timeout=10, tag=卡神打卡
-
-
-*/
-
-
-
-const sy = init()//声明必须
-const notifyInterval = 1; //通知开为1,常关为0
-const logs = 0; // 日志开关
-const jsname = '卡神打卡'
-const jbid =1
-const sb='失败,请先关闭,进入程序获取授权'
-
-const cs = 10;//小程序打卡次数
-const xj = 1;//提现标准
-var tz=''
-
-const dkurlkey = 'ksdkurl'+jbid
-const dkurl = sy.getdata(dkurlkey)
-
-
-let isGetCookie = typeof $request !== 'undefined'
-if (isGetCookie) {
- GetCookie()
-} else {
- all()
-}
-
-
-
-function GetCookie() {
-if ($request && $request.url.match(/i=3&/))
-if ($request && $request.url.match(/action=today&contr=index/))
- {
- const dkurl = $request.url
- sy.log(`dkurl:${dkurl}`)
- if (dkurl) sy.setdata(dkurl, dkurlkey)
- sy.msg(dkurlkey, `获取cookie: 成功🎉`, ``)
-}
-
-}
-
-
-//异步运行
-
-
-function all()
-
- {
-
- for(var i=0;i<3;i++)
- { (function(i) {
- setTimeout(function() {
-
- if(i==0) dktj(i);
-else if(i==1) dkxj(i);
-else if(i==2) showmsg(i);
-}, (i + 1) * 1000);
- })(i)
-
-
-}}
-
-
-
-
-//统计
-
-function dktj() {
-return new Promise((resolve, reject) => {
-
- const Tjurl = {
- url: dkurl
- };
- sy.get(Tjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1统计 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1 && obj.info.today.clock < cs){tz+="[账户信息]🎉"+"\n"+
-"今日已打卡"+[Number(obj.info.today.clock) ]+"/"+cs+"次"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
- }else tz+="[打卡完成]"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
-
-
-
-
-
-cstj1(obj.info.today.clock);
-
-
-
- resolve()
- })
- })
- }
-
-
-//次数统计
-
-
-function cstj1(tjtj)
-{
-if (tjtj {
-
- const Xjurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=index&contr=my`)
- };
- sy.get(Xjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1现金 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-
-
-
- tz +="💵现金余额"+
-obj.info.member.money+"元"+"\n"
-
- }
-
- else tz +=sb+"\n";
-
-
-xjtj1(obj.info.member.money);
-
-
-
- resolve()
- })
- })
- }
-
-
-
-
-//自动提现
-
-function dktx() {
-return new Promise((resolve, reject) => {
-
- const Txurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${xj}&payment_code=`)
- };
- sy.get(Txurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1提现 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-tz +='提现成功,成功提现'+xj+'元'+"\n"
-
- }
-
-if(obj.status == 2) {
-
-tz +='提现失败,原因:'+obj.info+"\n"
-
- }
-
-
-
-
- resolve()
- })
- })
- }
-
-
-
-//现金统计
-
-
-function xjtj1(tjtj)
-{
-if (tjtj>=xj)
-dktx()
-
-}
-
-
-
-//打卡
-function dkdk() {
-return new Promise((resolve, reject) => {
-
- const Dkurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=sign&contr=clock`)
- };
- sy.get(Dkurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1打卡- data: ${data}`)
- obj = JSON.parse(data)
-
- if (obj.status==1){
-tz+='[️打卡任务]:'+'打卡次数+1'+'\n'
-
- }
-else tz +=obj.info+'\n'
-
-
- resolve()
- })
- })
- }
-
-
-function showmsg() {
-
-console.log(tz)
-
-if (notifyInterval==1)
-sy.msg(jsname,'',tz)
-}
-
-
-function init() {
- isSurge = () => {
- return undefined !== this.$httpClient
- }
- isQuanX = () => {
- return undefined !== this.$task
- }
- getdata = (key) => {
- if (isSurge()) return $persistentStore.read(key)
- if (isQuanX()) return $prefs.valueForKey(key)
- }
- setdata = (key, val) => {
- if (isSurge()) return $persistentStore.write(key, val)
- if (isQuanX()) return $prefs.setValueForKey(key, val)
- }
- msg = (title, subtitle = '', body = '') => {
- if (isSurge()) $notification.post(title, subtitle, body)
- if (isQuanX()) $notify(title, subtitle, body)
- }
- log = (msg) => {
- console.log(`${msg}\n`)
- }
- get = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'GET'
- return $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) return $httpClient.get(options, callback)
- }
- post = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'POST'
- $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) $httpClient.post(options, callback)
- }
- done = (value = {}) => {
- $done(value)
- }
- return { isSurge, isQuanX, msg, log, getdata, setdata, get, post, done }
-}
diff --git a/msdkziye.png b/msdkziye.png
new file mode 100644
index 000000000..01b423c51
Binary files /dev/null and b/msdkziye.png differ
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..64ae63399
--- /dev/null
+++ b/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "Sunert",
+ "version": "1.0.0",
+ "description": "",
+ "main": "jingxi.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/Sunert/Scripts.git"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/Sunert/Scripts/issues"
+ },
+ "homepage": "https://github.com/Sunert/Scripts#readme",
+ "dependencies": {
+ "crypto-js": "^4.0.0",
+ "got": "^11.7.0",
+ "http-server": "^0.12.3",
+ "tough-cookie": "^4.0.0"
+ }
+}
diff --git a/qqread.jpg b/qqread.jpg
new file mode 100644
index 000000000..878c833c3
Binary files /dev/null and b/qqread.jpg differ
diff --git a/qqread.js b/qqread.js
new file mode 100644
index 000000000..cefa0f7fe
--- /dev/null
+++ b/qqread.js
@@ -0,0 +1,641 @@
+
+/*ziye
+
+本人github地址 https://github.com/ziye12/JavaScript
+转载请备注个名字,谢谢
+
+11.25 增加 阅读时长上传,阅读金币,阅读随机金币
+11.25 修复翻倍宝箱不同时领取的问题.增加阅读金币判定
+11.25 修复阅读时长问题,阅读金币问题,请重新获取时长cookie
+11.26 随机金币只有一次,故去除,调整修复阅读金币问题,增加时长上传限制
+11.26 增加领取周时长奖励
+11.26 增加结束命令
+11.27 调整通知为,成功开启宝箱再通知
+11.28 修复错误
+12.1 调整通知为15次宝箱通知一次
+12.1 优化通知
+12.2 修复企鹅更新打卡不了的问题
+
+⚠️cookie获取方法:
+
+进 https://m.q.qq.com/a/s/d3eacc70120b9a37e46bad408c0c4c2a 点我的 获取cookie
+
+进一本书 看 10秒以下 然后退出,获取阅读时长cookie,看书一定不能超过10秒
+
+可能某些页面会卡住,但是能获取到cookie,再注释cookie重写就行了!
+
+
+
+⚠️宝箱奖励为20分钟一次,自己根据情况设置定时,建议设置11分钟一次
+
+hostname=mqqapi.reader.qq.com
+
+############## 圈x
+
+#企鹅读书获取cookie
+https:\/\/mqqapi\.reader\.qq\.com\/mqq\/user\/init url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/qqread.js
+
+#企鹅读书获取时长cookie
+https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid? url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/qqread.js
+
+
+############## loon
+
+//企鹅读书获取cookie
+http-request https:\/\/mqqapi\.reader\.qq\.com\/mqq\/user\/init script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/qqread.js,requires-header=true, tag=企鹅读书获取cookie
+
+//企鹅读书获取时长cookie
+http-request https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid? script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/qqread.js, requires-header=true, tag=企鹅读书获取时长cookie
+
+
+############## surge
+
+//企鹅读书获取cookie
+企鹅读书 = type=http-request,pattern=https:\/\/mqqapi\.reader\.qq\.com\/mqq\/user\/init,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/qqread.js, requires-header=true
+
+//企鹅读书获取时长cookie
+企鹅读书 = type=http-request,pattern=https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid?,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/qqread.js, requires-header=true
+
+
+*/
+
+const jsname='企鹅读书'
+const $ = Env(jsname)
+
+console.log(`\n========= 脚本执行时间(TM):${new Date(new Date().getTime() + 0 * 60 * 60 * 1000).toLocaleString('zh', {hour12: false})} =========\n`)
+
+const logs = 0; //0为关闭日志,1为开启
+const notifyInterval=3
+//0为关闭通知,1为所有通知,2为宝箱领取成功通知,3为宝箱每15次通知一次
+
+const jbid=1//换号则修改这个值,默认账号1
+const dd=1//单次任务延迟,默认1秒
+const TIME=30//单次时长上传限制,默认5分钟
+const maxtime=20//每日上传时长限制,默认20小时
+const wktimess=1200//周奖励领取标准,默认1200分钟
+var tz=''
+
+const qqreadurlKey = 'qqreadurl'+jbid
+const qqreadurlVal = $.getdata(qqreadurlKey)
+
+const qqreadheaderKey = 'qqreadhd'+jbid
+const qqreadheaderVal= $.getdata(qqreadheaderKey)
+
+const qqreadtimeurlKey = 'qqreadtimeurl'+jbid
+const qqreadtimeurlVal = $.getdata(qqreadtimeurlKey)
+
+const qqreadtimeheaderKey = 'qqreadtimehd'+jbid
+const qqreadtimeheaderVal= $.getdata(qqreadtimeheaderKey)
+
+
+//CK运行
+let isGetCookie = typeof $request !== 'undefined'
+if (isGetCookie) {
+ GetCookie()
+} else {
+ all()
+}
+
+function GetCookie() {
+
+ if($request &&$request.url.indexOf("init")>=0) {
+
+ const qqreadurlVal = $request.url
+if (qqreadurlVal) $.setdata(qqreadurlVal,qqreadurlKey)
+ $.log(`[${jsname}] 获取url请求: 成功,qqreadurlVal: ${qqreadurlVal}`)
+
+ const qqreadbodyVal = $request.body
+ if (qqreadbodyVal) $.setdata(qqreadbodyVal,qqreadbodyKey)
+ $.log(`[${jsname}] 获取阅读: 成功,qqreadbodyVal: ${qqreadbodyVal}`)
+
+
+ const qqreadheaderVal = JSON.stringify($request.headers)
+ if (qqreadheaderVal) $.setdata(qqreadheaderVal,qqreadheaderKey)
+ $.log(`[${jsname}] 获取Cookie: 成功,qqreadheaderVal: ${qqreadheaderVal}`)
+ $.msg(qqreadheaderKey, `获取cookie: 成功🎉`, ``)
+
+}
+
+else if($request &&$request.url.indexOf("addReadTimeWithBid?")>=0) {
+ const qqreadtimeurlVal = $request.url
+if (qqreadtimeurlVal) $.setdata(qqreadtimeurlVal,qqreadtimeurlKey)
+ $.log(`[${jsname}] 获取阅读时长url: 成功,qqreadtimeurlVal: ${qqreadtimeurlVal}`)
+
+const qqreadtimeheaderVal = JSON.stringify($request.headers)
+ if (qqreadtimeheaderVal) $.setdata(qqreadtimeheaderVal,qqreadtimeheaderKey)
+ $.log(`[${jsname}] 获取时长header: 成功,qqreadtimeheaderVal: ${qqreadtimeheaderVal}`)
+ $.msg(qqreadtimeheaderKey, `获取阅读时长cookie: 成功🎉`, ``)
+
+ }
+
+}
+
+
+
+
+function all()
+
+ {
+ for(var i=0;i<18;i++)
+ { (function(i) {
+ setTimeout(function() {
+ if (i==0)
+qqreadinfo();//用户名
+
+else if (i==1)
+qqreadconfig();//时长查询
+
+else if (i==2)
+qqreadtask();//任务列表
+
+else if (i==3&&task.data.taskList[2].doneFlag==0)
+qqreadsign();//金币签到
+
+else if (i==4&&task.data.treasureBox.doneFlag==0)
+qqreadbox();//宝箱
+
+else if (i==5&&task.data.taskList[1].doneFlag==0)
+qqreadssr1();//阅读金币1
+
+else if (i==6&&config.data.pageParams.todayReadSeconds/3600<=maxtime)
+qqreadtime();//上传时长
+
+else if (i==7&&task.data.taskList[2].doneFlag==0)
+qqreadtake();//阅豆签到
+
+else if (i==8&&task.data.taskList[0].doneFlag==0)
+qqreaddayread();//阅读任务
+
+else if (i==9&&task.data.taskList[1].doneFlag==0)
+qqreadssr2();//阅读金币2
+
+else if (i==10&&task.data.taskList[3].doneFlag==0)
+qqreadvideo();//视频任务
+
+else if(i==11&&task.data.taskList[2].doneFlag==0)
+qqreadsign2();//签到翻倍
+
+else if (i==12&&task.data.treasureBox.videoDoneFlag==0)
+qqreadbox2();//宝箱翻倍
+
+else if (i==13&&task.data.taskList[1].doneFlag==0)
+qqreadssr3();//阅读金币3
+
+else if (i==14)
+qqreadwktime();//周时长查询
+
+else if (i==15)
+qqreadpick();//领周时长奖励
+
+else if (i==16)
+showmsg();//通知
+
+else if (i==17)
+$.done();//结束
+
+ }
+, (i + 1) *dd*1000);
+ })(i)
+ }
+}
+
+
+//任务列表
+function qqreadtask() {
+return new Promise((resolve, reject) => {
+ const toqqreadtaskurl ={url: 'https://mqqapi.reader.qq.com/mqq/red_packet/user/page?fromGuid=',
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreadtaskurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 任务列表: ${data}`)
+ task =JSON.parse(data)
+tz+=
+'【现金余额】:'+
+ (task.data.user.amount/10000).toFixed(2)+
+ '元\n'+
+ '【第'+
+ task.data.invite.issue+
+ '期】:时间'+
+ task.data.invite.dayRange+
+ '\n'+
+ ' 已邀请'+
+ task.data.invite.inviteCount+
+ '人,再邀请'+
+ task.data.invite.nextInviteConfig.count+
+ '人获得'+
+ task.data.invite.nextInviteConfig.amount+
+ '金币\n'+
+ '【'+
+ task.data.taskList[0].title+
+ '】:'+
+ task.data.taskList[0].amount+
+ '金币,'+
+ task.data.taskList[0].actionText+
+ '\n'+
+ '【'+
+ task.data.taskList[1].title+
+ '】:'+
+ task.data.taskList[1].amount+
+ '金币,'+
+ task.data.taskList[1].actionText+
+ '\n'+
+ '【'+
+ task.data.taskList[2].title+
+ '】:'+
+ task.data.taskList[2].amount+
+ '金币,'+
+ task.data.taskList[2].actionText+
+ '\n'+
+ '【'+
+ task.data.taskList[3].title+
+ '】:'+
+ task.data.taskList[3].amount+
+ '金币,'+
+ task.data.taskList[3].actionText+
+ '\n'+
+ '【宝箱任务'+
+ (task.data.treasureBox.count+1)+
+ '】:'+
+ task.data.treasureBox.tipText+
+ '\n'+
+ '【'+task.data.fans.title+
+ '】:'+
+ task.data.fans.fansCount+
+ '个好友,'+
+ task.data.fans.todayAmount+
+ '金币\n'
+
+resolve()
+
+ })
+
+ })
+ }
+
+
+//用户名
+function qqreadinfo() {
+return new Promise((resolve, reject) => {
+ const toqqreadinfourl = {
+ url: qqreadurlVal,
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreadinfourl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 用户名: ${data}`)
+ info =JSON.parse(data)
+tz+=
+'【用户信息】:'+info.data.user.nickName+'\n'
+
+resolve()
+ })
+ })
+ }
+
+
+//阅豆签到
+function qqreadtake() {
+return new Promise((resolve, reject) => {
+ const toqqreadtakeurl ={url: 'https://mqqapi.reader.qq.com/mqq/sign_in/user',
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.post(toqqreadtakeurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 阅豆签到: ${data}`)
+ take =JSON.parse(data)
+if (take.data.takeTicket>0)
+ {
+tz+=
+'【阅豆签到】:获得'+take.data.takeTicket+'豆\n'
+}
+
+resolve()
+ })
+ })
+ }
+
+
+//阅读时长任务
+function qqreadconfig() {
+return new Promise((resolve, reject) => {
+ const toqqreadconfigurl = {
+ url: 'https://mqqapi.reader.qq.com/mqq/page/config?router=%2Fpages%2Fbook-read%2Findex&options=',
+ headers: JSON.parse(qqreadheaderVal),
+ };
+ $.get(toqqreadconfigurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 阅读时长查询: ${data}`)
+ config =JSON.parse(data)
+ if (config.code==0)
+tz+='【时长查询】:今日阅读'+(config.data.pageParams.todayReadSeconds/60).toFixed(0)+'分钟\n'
+
+
+resolve()
+ })
+ })
+ }
+
+
+//阅读时长
+function qqreadtime() {
+return new Promise((resolve, reject) => {
+ const toqqreadtimeurl = {
+ url: qqreadtimeurlVal.replace(/readTime=/g, `readTime=${TIME}`),
+ headers: JSON.parse(qqreadtimeheaderVal),
+
+ };
+
+ $.get(toqqreadtimeurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 阅读时长: ${data}`)
+ time =JSON.parse(data)
+ if (time.code==0)
+tz+='【阅读时长】:上传'+TIME/6+'分钟\n'
+
+
+resolve()
+ })
+ })
+ }
+
+
+//阅读金币1
+function qqreadssr1() {
+return new Promise((resolve, reject) => {
+ const toqqreadssr1url = {url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=30`,
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+if (config.data.pageParams.todayReadSeconds/60>=1){
+
+ $.get(toqqreadssr1url,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 金币奖励1: ${data}`)
+ ssr1 =JSON.parse(data)
+ if (ssr1.data.amount>0)
+tz+='【阅读金币1】获得'+ssr1.data.amount+'金币\n'
+
+
+resolve()
+ })
+}
+ })
+ }
+
+
+//阅读金币2
+function qqreadssr2() {
+return new Promise((resolve, reject) => {
+ const toqqreadssr2url = {url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=300`,
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+if (config.data.pageParams.todayReadSeconds/60>=5){
+
+ $.get(toqqreadssr2url,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 金币奖励2: ${data}`)
+ ssr2 =JSON.parse(data)
+ if (ssr2.data.amount>0)
+tz+='【阅读金币2】获得'+ssr2.data.amount+'金币\n'
+
+resolve()
+ })
+}
+ })
+ }
+
+
+//阅读金币3
+function qqreadssr3() {
+return new Promise((resolve, reject) => {
+ const toqqreadssr3url = {url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=1800`,
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+
+if (config.data.pageParams.todayReadSeconds/60>=30){
+
+ $.get(toqqreadssr3url,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 金币奖励3: ${data}`)
+ ssr3 =JSON.parse(data)
+ if (ssr3.data.amount>0)
+tz+='【阅读金币3】获得'+ssr3.data.amount+'金币\n'
+
+
+resolve()
+ })
+}
+ })
+ }
+
+
+//金币签到
+function qqreadsign() {
+return new Promise((resolve, reject) => {
+ const toqqreadsignurl ={url: 'https://mqqapi.reader.qq.com/mqq/red_packet/user/clock_in/page',
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreadsignurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 金币签到: ${data}`)
+ sign =JSON.parse(data)
+
+if (sign.data.videoDoneFlag)
+ {
+tz+=
+'【金币签到】:获得'+sign.data.todayAmount+'金币\n'
+ }
+
+
+resolve()
+ })
+ })
+ }
+
+
+//金币签到翻倍
+function qqreadsign2() {
+return new Promise((resolve, reject) => {
+ const toqqreadsign2url ={url: 'https://mqqapi.reader.qq.com/mqq/red_packet/user/clock_in_video',
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreadsign2url,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 金币签到翻倍: ${data}`)
+ sign2 =JSON.parse(data)
+
+if (sign2.code==0)
+ {
+tz+=
+'【签到翻倍】:获得'+sign2.data.amount+'金币\n'
+}
+
+resolve()
+ })
+ })
+ }
+
+
+//每日阅读
+function qqreaddayread() {
+return new Promise((resolve, reject) => {
+ const toqqreaddayreadurl ={url: 'https://mqqapi.reader.qq.com/mqq/red_packet/user/read_book',
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreaddayreadurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 每日阅读: ${data}`)
+ dayread =JSON.parse(data)
+if (dayread.code==0)
+ {
+tz+=
+'【每日阅读】:获得'+dayread.data.amount+'金币\n'
+
+}
+
+resolve()
+ })
+ })
+ }
+
+
+//视频奖励
+function qqreadvideo() {
+return new Promise((resolve, reject) => {
+ const toqqreadvideourl ={url: 'https://mqqapi.reader.qq.com/mqq/red_packet/user/watch_video',
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreadvideourl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 视频奖励: ${data}`)
+ video =JSON.parse(data)
+
+if (video.code==0)
+ {
+tz+=
+'【视频奖励】:获得'+video.data.amount+'金币\n'
+
+}
+
+resolve()
+ })
+ })
+ }
+
+
+//宝箱奖励
+function qqreadbox() {
+return new Promise((resolve, reject) => {
+
+ const toqqreadboxurl ={url: 'https://mqqapi.reader.qq.com/mqq/red_packet/user/treasure_box',
+
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreadboxurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 宝箱奖励: ${data}`)
+ box =JSON.parse(data)
+
+if (box.data.count>=0)
+ {
+tz+=
+'【宝箱奖励'+box.data.count+'】:获得'+box.data.amount+'金币\n'
+
+ }
+
+resolve()
+ })
+ })
+ }
+
+//宝箱奖励翻倍
+function qqreadbox2() {
+return new Promise((resolve, reject) => {
+
+ const toqqreadbox2url ={url: 'https://mqqapi.reader.qq.com/mqq/red_packet/user/treasure_box_video',
+
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreadbox2url,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 宝箱奖励翻倍: ${data}`)
+ box2 =JSON.parse(data)
+
+if (box2.code==0)
+ {
+tz+=
+'【宝箱翻倍】:获得'+box2.data.amount+'金币\n'
+}
+
+resolve()
+ })
+ })
+ }
+
+//本周阅读时长
+function qqreadwktime() {
+return new Promise((resolve, reject) => {
+
+ const toqqreadwktimeurl = {
+
+ url: `https://mqqapi.reader.qq.com/mqq/v1/bookShelfInit`,
+
+ headers: JSON.parse(qqreadheaderVal),
+
+ };
+
+ $.get(toqqreadwktimeurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 阅读时长: ${data}`)
+ wktime =JSON.parse(data)
+ if (wktime.code==0)
+tz+='【本周阅读时长】:'+wktime.data.readTime+'分钟\n'
+
+resolve()
+ })
+ })
+ }
+
+
+//本周阅读时长奖励任务
+function qqreadpick() {
+return new Promise((resolve, reject) => {
+ const toqqreadpickurl = {
+ url:`https://mqqapi.reader.qq.com/mqq/pickPackageInit`,
+ headers: JSON.parse(qqreadheaderVal),
+ };
+
+if (wktime.data.readTime>=wktimess){
+ $.get(toqqreadpickurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname},周阅读时长奖励任务: ${data}`)
+ pick =JSON.parse(data)
+ if (pick.data[7].isPick==true)
+tz+='【周时长奖励】:已全部领取\n'
+for(let i=0;i{
+var pickid=pick.data[i].readTime
+var Packageid=['10','10','20','30','50','80','100','120']
+const toqqreadPackageurl = {
+ url:`https://mqqapi.reader.qq.com/mqq/pickPackage?readTime=${pickid}`,
+ headers: JSON.parse(qqreadheaderVal),
+ timeout:60000};
+ $.get(toqqreadPackageurl,(error, response, data) =>{
+ if(logs) $.log(`${jsname}, 领周阅读时长: ${data}`)
+ Package =JSON.parse(data)
+ if (Package.code==0)
+tz+='【周时长奖励'+(i+1)+'】:领取'+Packageid[i]+'阅豆\n'
+})
+
+ },i*100)}
+
+})
+ resolve()
+ }
+})
+ }
+
+
+
+function showmsg() {
+console.log(tz)
+
+if (notifyInterval==1)
+$.msg(jsname,'',tz)//显示所有通知
+
+else if (notifyInterval==2&&task.data.treasureBox.doneFlag==0)
+$.msg(jsname,'',tz)//宝箱领取成功通知
+
+else if (notifyInterval==3&&task.data.treasureBox.count==0||task.data.treasureBox.count==15||task.data.treasureBox.count==30||task.data.treasureBox.count==45||task.data.treasureBox.count==60)
+$.msg(jsname,'',tz)//宝箱每15次通知一次
+
+}
+
+
+// prettier-ignore
+function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
diff --git a/tldkziye.js b/qzdkziye.js
similarity index 83%
rename from tldkziye.js
rename to qzdkziye.js
index 3cf54bb2c..b3edc4f80 100644
--- a/tldkziye.js
+++ b/qzdkziye.js
@@ -1,354 +1,351 @@
-/*ziye 陀螺打卡
-
-
-非常重要!!!
-
-微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/tldkziye.png 进入小程序,登录获取授权,再启动软件获取ck
-建议设置6点到23点之间打卡,时间间隔30分钟以上,否则容易封号
-
-
-
-
-2020.9.9 非常重要!!! 原本打卡规定是30分钟一次,打卡速度一定不要太快,否则封号
-2020.9.10 修复重写错误
-
-
-
-
-《《《《《《《《《《制作其他打卡js的说明
-
-抓包小程序,然后替换以下内容来制作其他打卡js,
-需要替换的内容如下,按顺序替换字符,自己用电脑或者KODE软件替换,KODE下载链接https://apps.apple.com/cn/app/koder-code-editor/id1447489375
-
-wq.02gk.com
-陀螺打卡
-cs = 20
-xj = 1
-tldkurl
-i=15
-tldk
-
-手动替换
-wq\.02gk\.com
-
-制作其他打卡js的说明》》》》》》》》》》》
-
-
-
-
-
-////////////////////////////////////////正文
-
-
-使用说明:
-
-一,微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/tldkziye.png 进入小程序,登录获取授权
-
-二,然后将hostname复制粘贴进配置文件
-
-三,将重写复制到 rewrite_local 下,再进入程序获取ck,建议 放入新建配置片段,获取之后禁用即可
-
-功能如下:
-1.每日打卡,设置了开关,完成任务不再打卡
-2.打卡币统计,
-3.现金统计,自动提现
-
-
-
-
-
-
-
-hostname= wq.02gk.com,
-
-
-
-//surge
-陀螺打卡 = type=http-request,pattern=^https:\/\/wq\.02gk\.com\/*,requires-body=1,max-size=0,script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/tldkziye.js
-
-
-
-//圈x
-https:\/\/wq\.02gk\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/tldkziye.js
-
-
-//loon
-http-request ^https:\/\/wq\.02gk\.com\/* script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/tldkziye.js
-, requires-body=true, timeout=10, tag=陀螺打卡
-
-*/
-
-
-
-
-
-const sy = init()//声明必须
-const notifyInterval = 1; //通知开为1,常关为0
-const logs = 0; // 日志开关
-const jsname = '陀螺打卡'
-const jbid =1
-const sb='失败,请先关闭,进入程序获取授权'
-
-const cs = 20;//小程序打卡次数
-const xj = 1;//提现标准
-var tz=''
-
-const dkurlkey = 'tldkurl'+jbid
-const dkurl = sy.getdata(dkurlkey)
-
-
-let isGetCookie = typeof $request !== 'undefined'
-if (isGetCookie) {
- GetCookie()
-} else {
- all()
-}
-
-
-
-function GetCookie() {
-if ($request && $request.url.match(/i=15&/))
-if ($request && $request.url.match(/action=today&contr=index/))
- {
- const dkurl = $request.url
- sy.log(`dkurl:${dkurl}`)
- if (dkurl) sy.setdata(dkurl, dkurlkey)
- sy.msg(dkurlkey, `获取cookie: 成功🎉`, ``)
-}
-
-}
-
-
-//异步运行
-
-
-function all()
-
- {
-
- for(var i=0;i<3;i++)
- { (function(i) {
- setTimeout(function() {
-
- if(i==0) dktj(i);
-else if(i==1) dkxj(i);
-else if(i==2) showmsg(i);
-}, (i + 1) * 1000);
- })(i)
-
-
-}}
-
-
-
-
-//统计
-
-function dktj() {
-return new Promise((resolve, reject) => {
-
- const Tjurl = {
- url: dkurl
- };
- sy.get(Tjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1统计 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1 && obj.info.today.clock < cs){tz+="[账户信息]🎉"+"\n"+
-"今日已打卡"+[Number(obj.info.today.clock) ]+"/"+cs+"次"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
- }else tz+="[打卡完成]"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
-
-
-
-
-
-cstj1(obj.info.today.clock);
-
-
-
- resolve()
- })
- })
- }
-
-
-//次数统计
-
-
-function cstj1(tjtj)
-{
-if (tjtj {
-
- const Xjurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=index&contr=my`)
- };
- sy.get(Xjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1现金 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-
-
-
- tz +="💵现金余额"+
-obj.info.member.money+"元"+"\n"
-
- }
-
- else tz +=sb+"\n";
-
-
-xjtj1(obj.info.member.money);
-
-
-
- resolve()
- })
- })
- }
-
-
-
-
-//自动提现
-
-function dktx() {
-return new Promise((resolve, reject) => {
-
- const Txurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${xj}&payment_code=`)
- };
- sy.get(Txurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1提现 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-tz +='提现成功,成功提现'+xj+'元'+"\n"
-
- }
-
-if(obj.status == 2) {
-
-tz +='提现失败,原因:'+obj.info+"\n"
-
- }
-
-
-
-
- resolve()
- })
- })
- }
-
-
-
-//现金统计
-
-
-function xjtj1(tjtj)
-{
-if (tjtj>=xj)
-dktx()
-
-}
-
-
-
-//打卡
-function dkdk() {
-return new Promise((resolve, reject) => {
-
- const Dkurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=sign&contr=clock`)
- };
- sy.get(Dkurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1打卡- data: ${data}`)
- obj = JSON.parse(data)
-
- if (obj.status==1){
-tz+='[️打卡任务]:'+'打卡次数+1'+'\n'
-
- }
-else tz +=obj.info+'\n'
-
-
- resolve()
- })
- })
- }
-
-
-function showmsg() {
-
-console.log(tz)
-
-if (notifyInterval==1)
-sy.msg(jsname,'',tz)
-}
-
-
-function init() {
- isSurge = () => {
- return undefined !== this.$httpClient
- }
- isQuanX = () => {
- return undefined !== this.$task
- }
- getdata = (key) => {
- if (isSurge()) return $persistentStore.read(key)
- if (isQuanX()) return $prefs.valueForKey(key)
- }
- setdata = (key, val) => {
- if (isSurge()) return $persistentStore.write(key, val)
- if (isQuanX()) return $prefs.setValueForKey(key, val)
- }
- msg = (title, subtitle = '', body = '') => {
- if (isSurge()) $notification.post(title, subtitle, body)
- if (isQuanX()) $notify(title, subtitle, body)
- }
- log = (msg) => {
- console.log(`${msg}\n`)
- }
- get = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'GET'
- return $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) return $httpClient.get(options, callback)
- }
- post = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'POST'
- $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) $httpClient.post(options, callback)
- }
- done = (value = {}) => {
- $done(value)
- }
- return { isSurge, isQuanX, msg, log, getdata, setdata, get, post, done }
-}
+/*ziye 圈子打卡
+
+
+非常重要!!!
+
+微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/qzdkziye.png 进入小程序,登录获取授权,再启动软件获取ck
+建议设置6点到23点之间打卡,时间间隔30分钟以上,否则容易封号
+
+
+
+
+
+
+2020.9.22
+
+
+
+
+
+《《《《《《《《《《制作其他打卡js的说明
+
+抓包小程序,然后替换以下内容来制作其他打卡js,
+需要替换的内容如下,按顺序替换字符,自己用电脑或者KODE软件替换,KODE下载链接https://apps.apple.com/cn/app/koder-code-editor/id1447489375
+
+wq.inqan.com
+圈子打卡
+cs = 20
+xj = 1
+qzdkurl
+i=9
+qzdk
+
+手动替换
+wq\.inqan\.com
+
+制作其他打卡js的说明》》》》》》》》》》》
+
+
+
+
+
+
+////////////////////////////////////////正文
+
+
+使用说明:
+
+一,微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/qzdkziye.png 进入小程序,登录获取授权
+
+二,然后将hostname复制粘贴进配置文件
+
+三,将重写复制到 rewrite_local 下,再进入程序获取ck,建议 放入新建配置片段,获取之后禁用即可
+
+
+功能如下:
+1.每日打卡,设置了开关,完成任务不再打卡
+2.打卡币统计,
+3.现金统计,自动提现
+
+hostname= wq.inqan.com,
+
+
+
+//surge
+圈子打卡 = type=http-request,pattern=^https:\/\/wq\.inqan\.com\/*,requires-body=1,max-size=0,script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/qzdkziye.js
+
+
+//圈x
+https:\/\/wq\.inqan\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/qzdkziye.js
+
+//loon
+http-request ^https:\/\/wq\.inqan\.com\/* script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/qzdkziye.js, requires-body=true, timeout=10, tag=圈子打卡
+
+
+
+*/
+
+
+
+
+
+const sy = init()//声明必须
+const notifyInterval = 1; //通知开为1,常关为0
+const logs = 0; // 日志开关
+const jsname = '圈子打卡'
+const jbid =1
+const sb='失败,请先关闭,进入程序获取授权'
+
+const cs = 20;//小程序打卡次数
+const xj = 1;//提现标准
+var tz=''
+
+const dkurlkey = 'qzdkurl'+jbid
+const dkurl = sy.getdata(dkurlkey)
+
+
+let isGetCookie = typeof $request !== 'undefined'
+if (isGetCookie) {
+ GetCookie()
+} else {
+ all()
+}
+
+
+
+function GetCookie() {
+if ($request && $request.url.match(/i=9&/))
+if ($request && $request.url.match(/action=today&contr=index/))
+ {
+ const dkurl = $request.url
+ sy.log(`dkurl:${dkurl}`)
+ if (dkurl) sy.setdata(dkurl, dkurlkey)
+ sy.msg(dkurlkey, `获取cookie: 成功🎉`, ``)
+}
+
+}
+
+
+//异步运行
+
+
+function all()
+
+ {
+
+ for(var i=0;i<3;i++)
+ { (function(i) {
+ setTimeout(function() {
+
+ if(i==0) dktj(i);
+else if(i==1) dkxj(i);
+else if(i==2) showmsg(i);
+}, (i + 1) * 1000);
+ })(i)
+
+
+}}
+
+
+
+
+//统计
+
+function dktj() {
+return new Promise((resolve, reject) => {
+
+ const Tjurl = {
+ url: dkurl
+ };
+ sy.get(Tjurl,(error, response, data) =>{
+ if(logs)sy.log(`${jsname}1统计 - data: ${data}`)
+ obj = JSON.parse(data)
+if(obj.status == 1 && obj.info.today.clock < cs){tz+="[账户信息]🎉"+"\n"+
+"今日已打卡"+[Number(obj.info.today.clock) ]+"/"+cs+"次"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
+ }else tz+="[打卡完成]"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
+
+
+
+
+
+cstj1(obj.info.today.clock);
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+//次数统计
+
+
+function cstj1(tjtj)
+{
+if (tjtj {
+
+ const Xjurl = {
+ url: dkurl.replace(/action=today&contr=index/g, `action=index&contr=my`)
+ };
+ sy.get(Xjurl,(error, response, data) =>{
+ if(logs)sy.log(`${jsname}1现金 - data: ${data}`)
+ obj = JSON.parse(data)
+if(obj.status == 1) {
+
+
+
+
+ tz +="💵现金余额"+
+obj.info.member.money+"元"+"\n"
+
+ }
+
+ else tz +=sb+"\n";
+
+
+xjtj1(obj.info.member.money);
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+//自动提现
+
+function dktx() {
+return new Promise((resolve, reject) => {
+
+ const Txurl = {
+ url: dkurl.replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${xj}&payment_code=`)
+ };
+ sy.get(Txurl,(error, response, data) =>{
+ if(logs)sy.log(`${jsname}1提现 - data: ${data}`)
+ obj = JSON.parse(data)
+if(obj.status == 1) {
+
+tz +='提现成功,成功提现'+xj+'元'+"\n"
+
+ }
+
+if(obj.status == 2) {
+
+tz +='提现失败,原因:'+obj.info+"\n"
+
+ }
+
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+//现金统计
+
+
+function xjtj1(tjtj)
+{
+if (tjtj>=xj)
+dktx()
+
+}
+
+
+
+//打卡
+function dkdk() {
+return new Promise((resolve, reject) => {
+
+ const Dkurl = {
+ url: dkurl.replace(/action=today&contr=index/g, `action=sign&contr=clock`)
+ };
+ sy.get(Dkurl,(error, response, data) =>{
+ if(logs)sy.log(`${jsname}1打卡- data: ${data}`)
+ obj = JSON.parse(data)
+
+ if (obj.status==1){
+tz+='[️打卡任务]:'+'打卡次数+1'+'\n'
+
+ }
+else tz +=obj.info+'\n'
+
+
+ resolve()
+ })
+ })
+ }
+
+
+function showmsg() {
+
+console.log(tz)
+
+if (notifyInterval==1)
+sy.msg(jsname,'',tz)
+}
+
+
+function init() {
+ isSurge = () => {
+ return undefined !== this.$httpClient
+ }
+ isQuanX = () => {
+ return undefined !== this.$task
+ }
+ getdata = (key) => {
+ if (isSurge()) return $persistentStore.read(key)
+ if (isQuanX()) return $prefs.valueForKey(key)
+ }
+ setdata = (key, val) => {
+ if (isSurge()) return $persistentStore.write(key, val)
+ if (isQuanX()) return $prefs.setValueForKey(key, val)
+ }
+ msg = (title, subtitle = '', body = '') => {
+ if (isSurge()) $notification.post(title, subtitle, body)
+ if (isQuanX()) $notify(title, subtitle, body)
+ }
+ log = (msg) => {
+ console.log(`${msg}\n`)
+ }
+ get = (options, callback) => {
+ if (isQuanX()) {
+ if (typeof options == 'string') options = { url: options }
+ options['method'] = 'GET'
+ return $task.fetch(options).then(
+ (response) => {
+ response['status'] = response.statusCode
+ callback(null, response, response.body)
+ },
+ (reason) => callback(reason.error, null, null)
+ )
+ }
+ if (isSurge()) return $httpClient.get(options, callback)
+ }
+ post = (options, callback) => {
+ if (isQuanX()) {
+ if (typeof options == 'string') options = { url: options }
+ options['method'] = 'POST'
+ $task.fetch(options).then(
+ (response) => {
+ response['status'] = response.statusCode
+ callback(null, response, response.body)
+ },
+ (reason) => callback(reason.error, null, null)
+ )
+ }
+ if (isSurge()) $httpClient.post(options, callback)
+ }
+ done = (value = {}) => {
+ $done(value)
+ }
+ return { isSurge, isQuanX, msg, log, getdata, setdata, get, post, done }
+}
\ No newline at end of file
diff --git a/qzdkziye.png b/qzdkziye.png
new file mode 100644
index 000000000..370c3d7a1
Binary files /dev/null and b/qzdkziye.png differ
diff --git a/sendNotify.js b/sendNotify.js
new file mode 100644
index 000000000..b0874bb07
--- /dev/null
+++ b/sendNotify.js
@@ -0,0 +1,255 @@
+const $ = new Env();
+// =======================================微信server酱通知设置区域===========================================
+//此处填你申请的SCKEY.
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入PUSH_KEY)
+let SCKEY = '';
+
+// =======================================Bark App通知设置区域===========================================
+//此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX)
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入BARK_PUSH)
+let BARK_PUSH = '';
+//BARK app推送铃声,铃声列表去APP查看复制填写
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入BARK_SOUND , Value输入app提供的铃声名称,例如:birdsong)
+let BARK_SOUND = '';
+
+
+// =======================================telegram机器人通知设置区域===========================================
+//此处填你telegram bot 的Token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入TG_BOT_TOKEN)
+let TG_BOT_TOKEN = '';
+//此处填你接收通知消息的telegram用户的id,例如:129xxx206
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入TG_USER_ID)
+let TG_USER_ID = '';
+
+// =======================================钉钉机器人通知设置区域===========================================
+//此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd
+//注:此处设置github action用户填写到Settings-Secrets里面(Name输入DD_BOT_TOKEN)
+let DD_BOT_TOKEN = '';
+//密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串
+let DD_BOT_SECRET = '';
+
+if (process.env.PUSH_KEY) {
+ SCKEY = process.env.PUSH_KEY;
+}
+if (process.env.BARK_PUSH) {
+ if(process.env.BARK_PUSH.indexOf('https') > -1 || process.env.BARK_PUSH.indexOf('http') > -1) {
+ //兼容BARK自建用户
+ BARK_PUSH = process.env.BARK_PUSH
+ } else {
+ BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH}`
+ }
+ if (process.env.BARK_SOUND) {
+ BARK_SOUND = process.env.BARK_SOUND
+ }
+} else {
+ if(BARK_PUSH && BARK_PUSH.indexOf('https') === -1 && BARK_PUSH.indexOf('http') === -1) {
+ //兼容BARK本地用户只填写设备码的情况
+ BARK_PUSH = `https://api.day.app/${BARK_PUSH}`
+ }
+}
+if (process.env.TG_BOT_TOKEN) {
+ TG_BOT_TOKEN = process.env.TG_BOT_TOKEN;
+}
+if (process.env.TG_USER_ID) {
+ TG_USER_ID = process.env.TG_USER_ID;
+}
+
+if (process.env.DD_BOT_TOKEN) {
+ DD_BOT_TOKEN = process.env.DD_BOT_TOKEN;
+ if (process.env.DD_BOT_SECRET) {
+ DD_BOT_SECRET = process.env.DD_BOT_SECRET;
+ }
+}
+
+async function sendNotify(text, desp) {
+ //提供四种通知
+ await serverNotify(text, desp);
+ await BarkNotify(text, desp);
+ await tgBotNotify(text, desp);
+ await ddBotNotify(text, desp);
+}
+
+function serverNotify(text, desp) {
+ return new Promise(resolve => {
+ if (SCKEY) {
+ //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换
+ desp = desp.replace(/[\n\r]/g, '\n\n');
+ const options = {
+ url: `https://sc.ftqq.com/${SCKEY}.send`,
+ body: `text=${text}&desp=${desp}`,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ }
+ $.post(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\n发送通知调用API失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.errno === 0) {
+ console.log('\nserver酱发送通知消息成功\n')
+ } else if (data.errno === 1024) {
+ console.log('\nPUSH_KEY 错误\n')
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve(data);
+ }
+ })
+ } else {
+ console.log('\n您未提供server酱的SCKEY,取消微信推送消息通知\n');
+ resolve()
+ }
+ })
+}
+
+function BarkNotify(text, desp) {
+ return new Promise(resolve => {
+ if (BARK_PUSH) {
+ const options = {
+ url: `${BARK_PUSH}/${encodeURIComponent(text)}/${encodeURIComponent(desp)}?sound=${BARK_SOUND}`,
+ }
+ $.get(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\nBark APP发送通知调用API失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.code === 200) {
+ console.log('\nBark APP发送通知消息成功\n')
+ } else {
+ console.log(`\n${data.message}\n`);
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve();
+ }
+ })
+ } else {
+ console.log('\n您未提供Bark的APP推送BARK_PUSH,取消Bark推送消息通知\n');
+ resolve()
+ }
+ })
+}
+
+function tgBotNotify(text, desp) {
+ return new Promise(resolve => {
+ if (TG_BOT_TOKEN && TG_USER_ID) {
+ const options = {
+ url: `https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage`,
+ body: `chat_id=${TG_USER_ID}&text=${text}\n\n${desp}`,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ }
+ }
+ $.post(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\ntelegram发送通知消息失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.ok) {
+ console.log('\nTelegram发送通知消息完成。\n')
+ } else if (data.error_code === 400) {
+ console.log('\n请主动给bot发送一条消息并检查接收用户ID是否正确。\n')
+ } else if (data.error_code === 401){
+ console.log('\nTelegram bot token 填写错误。\n')
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve(data);
+ }
+ })
+ } else {
+ console.log('\n您未提供telegram机器人推送所需的TG_BOT_TOKEN和TG_USER_ID,取消telegram推送消息通知\n');
+ resolve()
+ }
+ })
+}
+function ddBotNotify(text, desp) {
+ return new Promise(resolve => {
+ const options = {
+ url: `https://oapi.dingtalk.com/robot/send?access_token=${DD_BOT_TOKEN}`,
+ json: {
+ "msgtype": "text",
+ "text": {
+ "content": ` ${text}\n\n${desp}`
+ }
+ },
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }
+ if (DD_BOT_TOKEN && DD_BOT_SECRET) {
+ const crypto = require('crypto');
+ const dateNow = Date.now();
+ const hmac = crypto.createHmac('sha256', DD_BOT_SECRET);
+ hmac.update(`${dateNow}\n${DD_BOT_SECRET}`);
+ const result = encodeURIComponent(hmac.digest('base64'));
+ options.url = `${options.url}×tamp=${dateNow}&sign=${result}`;
+ $.post(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\n钉钉发送通知消息失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.errcode === 0) {
+ console.log('\n钉钉发送通知消息完成。\n')
+ } else {
+ console.log(`\n${data.errmsg}\n`)
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve(data);
+ }
+ })
+ } else if (DD_BOT_TOKEN) {
+ $.post(options, (err, resp, data) => {
+ try {
+ if (err) {
+ console.log('\n钉钉发送通知消息失败!!\n')
+ console.log(err);
+ } else {
+ data = JSON.parse(data);
+ if (data.errcode === 0) {
+ console.log('\n钉钉发送通知消息完成。\n')
+ } else {
+ console.log(`\n${data.errmsg}\n`)
+ }
+ }
+ } catch (e) {
+ $.logErr(e, resp);
+ } finally {
+ resolve(data);
+ }
+ })
+ } else {
+ console.log('\n您未提供钉钉机器人推送所需的DD_BOT_TOKEN或者DD_BOT_SECRET,取消钉钉推送消息通知\n');
+ resolve()
+ }
+ })
+}
+module.exports = {
+ sendNotify,
+ BarkNotify,
+ SCKEY,
+ BARK_PUSH,
+ TG_BOT_TOKEN,
+ TG_USER_ID,
+ DD_BOT_TOKEN,
+}//这里导出SCKEY,BARK_PUSH等通知参数是jd_bean_sign.js处需要
+// prettier-ignore
+function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;$.isMute||(this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o))),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)}
\ No newline at end of file
diff --git a/wyxdkziye.js b/wyxdkziye.js
deleted file mode 100644
index b47e3c771..000000000
--- a/wyxdkziye.js
+++ /dev/null
@@ -1,347 +0,0 @@
-/*ziye 玩游戏打卡
-
-非常重要!!!
-
-微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/wyxdkziye.png 进入小程序,登录获取授权,再启动软件获取ck
-建议设置6点到23点之间打卡,时间间隔30分钟以上,否则容易封号
-
-
-
-2020.9.9
-
-
-《《《《《《《《《《制作其他打卡js的说明
-
-抓包小程序,然后替换以下内容来制作其他打卡js,
-需要替换的内容如下,按顺序替换字符,自己用电脑或者KODE软件替换,KODE下载链接https://apps.apple.com/cn/app/koder-code-editor/id1447489375
-
-we7.ivee.top
-玩游戏打卡
-cs = 5
-xj = 1
-wyxdkurl
-i=6
-wyxdk
-
-手动替换
-we7\.ivee\.top
-
-制作其他打卡js的说明》》》》》》》》》》》
-
-
-
-
-
-
-////////////////////////////////////////正文
-
-使用说明:
-
-一,微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/wyxdkziye.png 进入小程序,登录获取授权
-
-二,然后将hostname复制粘贴进配置文件
-
-三,将重写复制到 rewrite_local 下,再进入程序获取ck,建议 放入新建配置片段,获取之后禁用即可
-
-功能如下:
-1.每日打卡,设置了开关,完成任务不再打卡
-2.打卡币统计,
-3.现金统计,自动提现
-
-
-
-
-
-hostname= we7.ivee.top,
-
-
-
-//surge
-玩游戏打卡 = type=http-request,pattern=^https:\/\/we7\.ivee\.top\/*,requires-body=1,max-size=0,script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/wyxdkziye.js
-
-
-
-//圈x
-https:\/\/we7\.ivee\.top\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/wyxdkziye.js
-
-
-//loon
-http-request ^https:\/\/we7\.ivee\.top\/* script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/wyxdkziye.js
-, requires-body=true, timeout=10, tag=玩游戏打卡
-
-
-*/
-
-
-
-
-const sy = init()//声明必须
-const notifyInterval = 1; //通知开为1,常关为0
-const logs = 0; // 日志开关
-const jsname = '玩游戏打卡'
-const jbid =1
-const sb='失败,请先关闭,进入程序获取授权'
-
-const cs = 5;//小程序打卡次数
-const xj = 1;//提现标准
-var tz=''
-
-const dkurlkey = 'wyxdkurl'+jbid
-const dkurl = sy.getdata(dkurlkey)
-
-
-let isGetCookie = typeof $request !== 'undefined'
-if (isGetCookie) {
- GetCookie()
-} else {
- all()
-}
-
-
-
-function GetCookie() {
-if ($request && $request.url.match(/i=6&/))
-if ($request && $request.url.match(/action=today&contr=index/))
- {
- const dkurl = $request.url
- sy.log(`dkurl:${dkurl}`)
- if (dkurl) sy.setdata(dkurl, dkurlkey)
- sy.msg(dkurlkey, `获取cookie: 成功🎉`, ``)
-}
-
-}
-
-
-//异步运行
-
-
-function all()
-
- {
-
- for(var i=0;i<3;i++)
- { (function(i) {
- setTimeout(function() {
-
- if(i==0) dktj(i);
-else if(i==1) dkxj(i);
-else if(i==2) showmsg(i);
-}, (i + 1) * 1000);
- })(i)
-
-
-}}
-
-
-
-
-//统计
-
-function dktj() {
-return new Promise((resolve, reject) => {
-
- const Tjurl = {
- url: dkurl
- };
- sy.get(Tjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1统计 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1 && obj.info.today.clock < cs){tz+="[账户信息]🎉"+"\n"+
-"今日已打卡"+[Number(obj.info.today.clock) ]+"/"+cs+"次"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
- }else tz+="[打卡完成]"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
-
-
-
-
-
-cstj1(obj.info.today.clock);
-
-
-
- resolve()
- })
- })
- }
-
-
-//次数统计
-
-
-function cstj1(tjtj)
-{
-if (tjtj {
-
- const Xjurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=index&contr=my`)
- };
- sy.get(Xjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1现金 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-
-
-
- tz +="💵现金余额"+
-obj.info.member.money+"元"+"\n"
-
- }
-
- else tz +=sb+"\n";
-
-
-xjtj1(obj.info.member.money);
-
-
-
- resolve()
- })
- })
- }
-
-
-
-
-//自动提现
-
-function dktx() {
-return new Promise((resolve, reject) => {
-
- const Txurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${xj}&payment_code=`)
- };
- sy.get(Txurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1提现 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-tz +='提现成功,成功提现'+xj+'元'+"\n"
-
- }
-
-if(obj.status == 2) {
-
-tz +='提现失败,原因:'+obj.info+"\n"
-
- }
-
-
-
-
- resolve()
- })
- })
- }
-
-
-
-//现金统计
-
-
-function xjtj1(tjtj)
-{
-if (tjtj>=xj)
-dktx()
-
-}
-
-
-
-//打卡
-function dkdk() {
-return new Promise((resolve, reject) => {
-
- const Dkurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=sign&contr=clock`)
- };
- sy.get(Dkurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1打卡- data: ${data}`)
- obj = JSON.parse(data)
-
- if (obj.status==1){
-tz+='[️打卡任务]:'+'打卡次数+1'+'\n'
-
- }
-else tz +=obj.info+'\n'
-
-
- resolve()
- })
- })
- }
-
-
-function showmsg() {
-
-console.log(tz)
-
-if (notifyInterval==1)
-sy.msg(jsname,'',tz)
-}
-
-
-function init() {
- isSurge = () => {
- return undefined !== this.$httpClient
- }
- isQuanX = () => {
- return undefined !== this.$task
- }
- getdata = (key) => {
- if (isSurge()) return $persistentStore.read(key)
- if (isQuanX()) return $prefs.valueForKey(key)
- }
- setdata = (key, val) => {
- if (isSurge()) return $persistentStore.write(key, val)
- if (isQuanX()) return $prefs.setValueForKey(key, val)
- }
- msg = (title, subtitle = '', body = '') => {
- if (isSurge()) $notification.post(title, subtitle, body)
- if (isQuanX()) $notify(title, subtitle, body)
- }
- log = (msg) => {
- console.log(`${msg}\n`)
- }
- get = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'GET'
- return $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) return $httpClient.get(options, callback)
- }
- post = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'POST'
- $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) $httpClient.post(options, callback)
- }
- done = (value = {}) => {
- $done(value)
- }
- return { isSurge, isQuanX, msg, log, getdata, setdata, get, post, done }
-}
diff --git a/xiaoleziye.js b/xiaoleziye.js
new file mode 100644
index 000000000..e138f20b2
--- /dev/null
+++ b/xiaoleziye.js
@@ -0,0 +1,399 @@
+
+/*ziye
+
+
+微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/xiaoleziye.png 获取授权
+
+开软件,然后进签到,点签到获取cookie
+
+
+10.5 增加更多通知内容
+10.7 修复cookie,获取问题
+
+
+
+
+hostname=minapp.xqrobot.net,
+
+#小乐
+############## 圈x
+
+https:\/\/minapp\.xqrobot\.net\/* url script-request-body https://raw.githubusercontent.com/ziye12/JavaScript/master/xiaoleziye.js
+
+
+#小乐
+############## loon
+
+
+http-request https:\/\/minapp\.xqrobot\.net\/* script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/xiaoleziye.js, requires-body=true
+
+
+#小乐
+############## surge
+
+小乐签到 = type=http-request,pattern=https:\/\/minapp\.xqrobot\.net\/*,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/xiaoleziye.js, requires-body=true
+
+
+
+
+
+*/
+
+
+
+
+
+const sy = init()
+
+const jsname='小乐签到'
+
+const logs = 0; //0为关闭日志,1为开启
+const notifyInterval=1//0为关闭通知,1为开启
+const jbid=1;
+
+
+const xiaoleurlKey = 'xiaoleurl'+jbid
+
+const xiaoleheaderKey = 'xiaolehd'+jbid
+
+const xiaolebodyKey = 'xiaolebd'+jbid
+
+const xiaoleurlVal = sy.getdata(xiaoleurlKey)
+
+const xiaoleheaderVal = sy.getdata(xiaoleheaderKey)
+
+const xiaolebodyVal = sy.getdata(xiaolebodyKey)
+
+
+
+
+
+
+
+
+var tz=''
+
+
+let isGetCookie = typeof $request !== 'undefined'
+if (isGetCookie) {
+ GetCookie()
+} else {
+ all()
+}
+
+
+
+
+
+function GetCookie() {
+
+if ($request.headers){
+
+ if($request &&$request.url.indexOf("/user.php?mod=sign&")>=0) {
+
+ const xiaoleurlVal = $request.url
+if (xiaoleurlVal) sy.setdata(xiaoleurlVal,xiaoleurlKey)
+ sy.log(`[${jsname}] 获取url请求: 成功,xiaoleurlVal: ${xiaoleurlVal}`)
+
+ const xiaolebodyVal = $request.body
+ if (xiaolebodyVal) sy.setdata(xiaolebodyVal,xiaolebodyKey)
+ sy.log(`[${jsname}] 获取阅读: 成功,xiaolebodyVal: ${xiaolebodyVal}`)
+
+const xiaoleheaderVal = JSON.stringify($request.headers)
+ if (xiaoleheaderVal) sy.setdata(xiaoleheaderVal,xiaoleheaderKey)
+ sy.log(`[${jsname}] 获取Cookie: 成功,xiaoleheaderVal: ${xiaoleheaderVal}`)
+ sy.msg(xiaoleheaderKey, `获取Cookie: 成功🎉`, ``)
+
+
+
+
+ }
+
+ }
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+ function all()
+
+ {
+
+ for(var i=0;i<5;i++)
+ { (function(i) {
+ setTimeout(function() {
+
+ if(i==0) xiaoletask(i);
+
+else if(i==1) xiaoleuser(i);
+else if(i==2) xiaoletg(i);
+else if(i==3) xiaolesy(i);
+
+
+
+else if(i==4) showmsg(i);
+}, (i + 1) *1000);
+ })(i)
+
+
+}}
+
+
+
+//签到
+function xiaoletask() {
+return new Promise((resolve, reject) => {
+
+ const toxiaoleurl = {
+
+ url: xiaoleurlVal,
+
+ headers: JSON.parse(xiaoleheaderVal),
+ body: xiaolebodyVal
+ };
+ sy.post(toxiaoleurl,(error, response, data) =>{
+ if(logs) sy.log(`${jsname}, 签到信息: ${data}`)
+ signinfo =JSON.parse(data)
+ if (signinfo.result==true)
+ {
+tz+='【签到成功】🎉:'+signinfo.show+'\n'
+}
+
+else if (signinfo.result==false)
+ {
+tz+='【重复签到】✖️:'+signinfo.show+'\n'
+}
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+function xiaoleuser() {
+return new Promise((resolve, reject) => {
+
+ const toxiaoleuserurl = {
+ url: xiaoleurlVal.replace(/mod=sign/g, `mod=index`),
+headers: JSON.parse(xiaoleheaderVal),
+
+ };
+ sy.post(toxiaoleuserurl,(error, response, data) =>{
+if(logs) sy.log(`${jsname}, 用户信息: ${data}`)
+ userinfo =JSON.parse(data)
+ if (userinfo.result==true)
+ {
+tz+='【'+userinfo.info.userlevel_name+'】👤:'+userinfo.info.user_name+'\n'+
+'【现金余额】🧧:'+userinfo.info.user_money+'元'+'\n'+
+'【今日收益】🧧:'+userinfo.info.jiang_day1+'元'+'\n'+
+'【本月收益】🧧:'+userinfo.info.jiang_month1+'元'+'\n'+
+'【签到任务】⏰:'+userinfo.info.task_list[0].name+'\n'+
+'【签到收益】⏰:'+userinfo.info.task_list[0].money+'\n'+
+'【签到信息】⏰:'+userinfo.info.task_list[0].desc+'\n'+
+
+
+
+'【邀请任务】👥:'+userinfo.info.task_list[1].name+'\n'+
+'【邀请收益】👥:'+userinfo.info.task_list[1].money+'\n'+
+'【邀请信息】👥:'+userinfo.info.task_list[1].desc+'\n'
+
+
+}
+
+
+else if (userinfo.result==false)
+ {
+tz+=userinfo.show
+}
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+
+function xiaoletg() {
+return new Promise((resolve, reject) => {
+
+ const toxiaoletgurl = {
+ url: xiaoleurlVal.replace(/mod=sign/g, `mod=tg&act=user&level=&page=1`),
+headers: JSON.parse(xiaoleheaderVal),
+
+ };
+ sy.post(toxiaoletgurl,(error, response, data) =>{
+if(logs) sy.log(`${jsname}, 用户信息: ${data}`)
+ tginfo =JSON.parse(data)
+
+
+ if (tginfo.result==true)
+ {
+
+
+tz+='【好友信息】😄:'+tginfo.list[0].user_name+'\n'+
+'【注册时间】🤖:'+tginfo.list[0].user_atime+'\n'+
+'【好友等级】🎊:'+tginfo.list[0].userlevel_name+'\n'
+
+
+
+
+}
+
+
+else if (userinfo.result==false)
+ {
+tz+='错误'
+}
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function xiaolesy() {
+return new Promise((resolve, reject) => {
+
+ const toxiaolesyurl = {
+ url: xiaoleurlVal.replace(/mod=sign/g, `mod=tbk_jiang&page=1`),
+headers: JSON.parse(xiaoleheaderVal),
+
+ };
+ sy.post(toxiaolesyurl,(error, response, data) =>{
+if(logs) sy.log(`${jsname}, 收益信息: ${data}`)
+ syinfo =JSON.parse(data)
+var xx=syinfo.list[0].jiang_text
+var tt=xx.substring(xx.indexOf("用户")+2,xx.indexOf("奖励"));
+
+
+
+ if (syinfo.result==true)
+ {
+tz+=
+'【收益信息】👤:'+tt+'\n'+
+'【下单时间】🧧:'+syinfo.list[0].jiang_adate+'\n'+
+'【预计收益】🧧:'+syinfo.list[0].jiang_money+'元'+'\n'
+
+
+
+
+
+
+}
+
+
+else if (userinfo.result==false)
+ {
+tz+=userinfo.show
+}
+
+
+
+ resolve()
+ })
+ })
+ }
+
+
+
+
+function showmsg() {
+
+console.log(tz)
+
+if (notifyInterval==1)
+sy.msg(jsname,'',tz)
+}
+
+
+function init() {
+ isSurge = () => {
+ return undefined !== this.$httpClient
+ }
+ isQuanX = () => {
+ return undefined !== this.$task
+ }
+ getdata = (key) => {
+ if (isSurge()) return $persistentStore.read(key)
+ if (isQuanX()) return $prefs.valueForKey(key)
+ }
+ setdata = (key, val) => {
+ if (isSurge()) return $persistentStore.write(key, val)
+ if (isQuanX()) return $prefs.setValueForKey(key, val)
+ }
+ msg = (title, subtitle = '', body = '') => {
+ if (isSurge()) $notification.post(title, subtitle, body)
+ if (isQuanX()) $notify(title, subtitle, body)
+ }
+ log = (msg) => {
+ console.log(`${msg}\n`)
+ }
+ get = (options, callback) => {
+ if (isQuanX()) {
+ if (typeof options == 'string') options = { url: options }
+ options['method'] = 'GET'
+ return $task.fetch(options).then(
+ (response) => {
+ response['status'] = response.statusCode
+ callback(null, response, response.body)
+ },
+ (reason) => callback(reason.error, null, null)
+ )
+ }
+ if (isSurge()) return $httpClient.get(options, callback)
+ }
+ post = (options, callback) => {
+ if (isQuanX()) {
+ if (typeof options == 'string') options = { url: options }
+ options['method'] = 'POST'
+ $task.fetch(options).then(
+ (response) => {
+ response['status'] = response.statusCode
+ callback(null, response, response.body)
+ },
+ (reason) => callback(reason.error, null, null)
+ )
+ }
+ if (isSurge()) $httpClient.post(options, callback)
+ }
+ done = (value = {}) => {
+ $done(value)
+ }
+ return { isSurge, isQuanX, msg, log, getdata, setdata, get, post, done }
+}
+
diff --git a/xiaoleziye.png b/xiaoleziye.png
new file mode 100644
index 000000000..eab575e49
Binary files /dev/null and b/xiaoleziye.png differ
diff --git a/ysfdw.js b/ysfdw.js
new file mode 100644
index 000000000..7651e453c
--- /dev/null
+++ b/ysfdw.js
@@ -0,0 +1,32 @@
+/*ziye
+
+如果显示未获取定位,则重启软件多试几次
+
+
+下载到文件到本地
+放到构造请求里方便修改 (远程不能修改)
+
+浏览器打开https://raw.githubusercontent.com/ziye12/JavaScript/master/diqudaima.txt,然后搜索地区,修改下面👇的6位数
+
+
+
+
+[MITM]
+hostname=restapi.amap.com
+[rewrite_local]
+#云闪付改定位
+^https:\/\/restapi\.amap\.com\/v3\/geocode\/regeo? url script-response-body ysfdw.js
+
+*/
+
+var body = $response.body; // 声明一个变量body并以响应消息体赋值
+var obj = JSON.parse(body); // JSON.parse()将json形式的body转变成对象处理
+
+
+
+obj.regeocode.addressComponent.adcode="540102"
+
+
+
+body = JSON.stringify(obj); // 重新打包回json字符串
+$done(body); // 结束修改
diff --git a/yydkziye.js b/yydkziye.js
index 1aea69974..00c3dfbe4 100644
--- a/yydkziye.js
+++ b/yydkziye.js
@@ -13,7 +13,7 @@
2020.9.8
2020.9.9 修复部分错误
2020.9.13 打卡次数调整为5
-
+2020.9.16 打卡次数恢复为10
@@ -25,7 +25,7 @@
www.baimaa.com
音乐打卡
-cs = 5
+cs = 10
xj = 1
yydkurl
i=11
@@ -87,7 +87,7 @@ const jsname = '音乐打卡'
const jbid =1
const sb='失败,请先关闭,进入程序获取授权'
-const cs = 5;//小程序打卡次数
+const cs = 10;//小程序打卡次数
const xj = 1;//提现标准
var tz=''
diff --git a/yyzadkziye.js b/yyzadkziye.js
deleted file mode 100644
index 45e5bfad4..000000000
--- a/yyzadkziye.js
+++ /dev/null
@@ -1,338 +0,0 @@
-/*ziye羊羊早安打卡
-
-非常重要!!!
-
-微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/yyzadkziye.png 进入小程序,登录获取授权,再启动软件获取ck
-建议设置6点到23点之间打卡,时间间隔30分钟以上,否则容易封号
-
-
-
-《《《《《《《《《《制作其他打卡js的说明
-
-抓包小程序,然后替换以下内容来制作其他打卡js,
-需要替换的内容如下,按顺序替换字符,自己用电脑或者KODE软件替换,KODE下载链接https://apps.apple.com/cn/app/koder-code-editor/id1447489375
-
-ph0001.hezyq.com
-羊羊早安打卡
-cs = 40
-xj = 1
-yyzadkurl
-i=1146
-yyzadk
-
-手动替换
-ph0001\.hezyq\.com
-
-制作其他打卡js的说明》》》》》》》》》》》
-
-
-
-
-
-
-////////////////////////////////////////正文
-
-
-使用说明:
-一,微信扫码 https://raw.githubusercontent.com/ziye12/JavaScript/master/yyzadkziye.png 进入小程序,登录获取授权
-
-二,然后将hostname复制粘贴进配置文件
-
-三,将重写复制到 rewrite_local 下,再进入程序获取ck,建议 放入新建配置片段,获取之后禁用即可
-
-功能如下:
-1.每日打卡,设置了开关,完成任务不再打卡
-2.打卡币统计,
-3.现金统计,自动提现
-
-
-
-
-
-hostname= ph0001.hezyq.com,
-
-//surge
-羊羊早安打卡 = type=http-request,pattern=^https:\/\/ph0001\.hezyq\.com\/*,requires-body=1,max-size=0,script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/yyzadkziye.js
-
-//圈x
-https:\/\/ph0001\.hezyq\.com\/* url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/yyzadkziye.js
-
-//loon
-http-request ^https:\/\/ph0001\.hezyq\.com\/* script-path= https://raw.githubusercontent.com/ziye12/JavaScript/master/yyzadkziye.js
-, requires-body=true, timeout=10, tag=羊羊早安打卡
-
-
-*/
-
-
-
-const sy = init()//声明必须
-const notifyInterval = 1; //通知开为1,常关为0
-const logs = 0; // 日志开关
-const jsname = '羊羊早安打卡'
-const jbid =1
-const sb='失败,请先关闭,进入程序获取授权'
-
-const cs = 40;//小程序打卡次数
-const xj = 1;//提现标准
-var tz=''
-
-const dkurlkey = 'yyzadkurl'+jbid
-const dkurl = sy.getdata(dkurlkey)
-
-
-let isGetCookie = typeof $request !== 'undefined'
-if (isGetCookie) {
- GetCookie()
-} else {
- all()
-}
-
-
-
-function GetCookie() {
-if ($request && $request.url.match(/i=1146&/))
-if ($request && $request.url.match(/action=today&contr=index/))
- {
- const dkurl = $request.url
- sy.log(`dkurl:${dkurl}`)
- if (dkurl) sy.setdata(dkurl, dkurlkey)
- sy.msg(dkurlkey, `获取cookie: 成功🎉`, ``)
-}
-
-}
-
-
-//异步运行
-
-
-function all()
-
- {
-
- for(var i=0;i<3;i++)
- { (function(i) {
- setTimeout(function() {
-
- if(i==0) dktj(i);
-else if(i==1) dkxj(i);
-else if(i==2) showmsg(i);
-}, (i + 1) * 1000);
- })(i)
-
-
-}}
-
-
-
-
-//统计
-
-function dktj() {
-return new Promise((resolve, reject) => {
-
- const Tjurl = {
- url: dkurl
- };
- sy.get(Tjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1统计 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1 && obj.info.today.clock < cs){tz+="[账户信息]🎉"+"\n"+
-"今日已打卡"+[Number(obj.info.today.clock) ]+"/"+cs+"次"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
- }else tz+="[打卡完成]"+"余"+[Number(obj.info.today. currency)]+"币"+"\n"
-
-
-
-
-
-cstj1(obj.info.today.clock);
-
-
-
- resolve()
- })
- })
- }
-
-
-//次数统计
-
-
-function cstj1(tjtj)
-{
-if (tjtj {
-
- const Xjurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=index&contr=my`)
- };
- sy.get(Xjurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1现金 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-
-
-
- tz +="💵现金余额"+
-obj.info.member.money+"元"+"\n"
-
- }
-
- else tz +=sb+"\n";
-
-
-xjtj1(obj.info.member.money);
-
-
-
- resolve()
- })
- })
- }
-
-
-
-
-//自动提现
-
-function dktx() {
-return new Promise((resolve, reject) => {
-
- const Txurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=withdrawals&contr=my&money=${xj}&payment_code=`)
- };
- sy.get(Txurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1提现 - data: ${data}`)
- obj = JSON.parse(data)
-if(obj.status == 1) {
-
-tz +='提现成功,成功提现'+xj+'元'+"\n"
-
- }
-
-if(obj.status == 2) {
-
-tz +='提现失败,原因:'+obj.info+"\n"
-
- }
-
-
-
-
- resolve()
- })
- })
- }
-
-
-
-//现金统计
-
-
-function xjtj1(tjtj)
-{
-if (tjtj>=xj)
-dktx()
-
-}
-
-
-
-//打卡
-function dkdk() {
-return new Promise((resolve, reject) => {
-
- const Dkurl = {
- url: dkurl.replace(/action=today&contr=index/g, `action=sign&contr=clock`)
- };
- sy.get(Dkurl,(error, response, data) =>{
- if(logs)sy.log(`${jsname}1打卡- data: ${data}`)
- obj = JSON.parse(data)
-
- if (obj.status==1){
-tz+='[️打卡任务]:'+'打卡次数+1'+'\n'
-
- }
-else tz +=obj.info+'\n'
-
-
- resolve()
- })
- })
- }
-
-
-function showmsg() {
-
-console.log(tz)
-
-if (notifyInterval==1)
-sy.msg(jsname,'',tz)
-}
-
-
-function init() {
- isSurge = () => {
- return undefined !== this.$httpClient
- }
- isQuanX = () => {
- return undefined !== this.$task
- }
- getdata = (key) => {
- if (isSurge()) return $persistentStore.read(key)
- if (isQuanX()) return $prefs.valueForKey(key)
- }
- setdata = (key, val) => {
- if (isSurge()) return $persistentStore.write(key, val)
- if (isQuanX()) return $prefs.setValueForKey(key, val)
- }
- msg = (title, subtitle = '', body = '') => {
- if (isSurge()) $notification.post(title, subtitle, body)
- if (isQuanX()) $notify(title, subtitle, body)
- }
- log = (msg) => {
- console.log(`${msg}\n`)
- }
- get = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'GET'
- return $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) return $httpClient.get(options, callback)
- }
- post = (options, callback) => {
- if (isQuanX()) {
- if (typeof options == 'string') options = { url: options }
- options['method'] = 'POST'
- $task.fetch(options).then(
- (response) => {
- response['status'] = response.statusCode
- callback(null, response, response.body)
- },
- (reason) => callback(reason.error, null, null)
- )
- }
- if (isSurge()) $httpClient.post(options, callback)
- }
- done = (value = {}) => {
- $done(value)
- }
- return { isSurge, isQuanX, msg, log, getdata, setdata, get, post, done }
-}
diff --git a/yyzadkziye.png b/yyzadkziye.png
deleted file mode 100644
index 088214a71..000000000
Binary files a/yyzadkziye.png and /dev/null differ