From 021be1287d428e3a241a9f615c68feeab8a3c41b Mon Sep 17 00:00:00 2001
From: rsp <3288892500@qq.com>
Date: Mon, 4 Dec 2023 19:10:22 +0800
Subject: [PATCH 01/49] version
---
LICENSE | 674 ------------------
README.md | 29 -
SimpleError/__init__.py | 0
.../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 130 bytes
.../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 128 bytes
SimpleError/__pycache__/error.cpython-310.pyc | Bin 0 -> 477 bytes
SimpleError/__pycache__/error.cpython-39.pyc | Bin 0 -> 473 bytes
SimpleError/error.py | 3 +
api/__init__.py | 0
api/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 120 bytes
api/__pycache__/api_all.cpython-39.pyc | Bin 0 -> 5255 bytes
api/api_all.py | 230 ++++++
basic_info/user.txt | 12 -
basic_info/week_diary | 223 ------
config/__init__.py | 0
config/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 125 bytes
config/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 123 bytes
config/__pycache__/info.cpython-310.pyc | Bin 0 -> 657 bytes
config/__pycache__/info.cpython-39.pyc | Bin 0 -> 1564 bytes
config/info.py | 39 +
createSign/__init__.py | 0
.../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 127 bytes
createSign/__pycache__/sign.cpython-39.pyc | Bin 0 -> 373 bytes
createSign/sign.py | 7 +
decryptencrypt/__init__.py | 0
.../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 131 bytes
.../__pycache__/encrypt.cpython-39.pyc | Bin 0 -> 504 bytes
.../__pycache__/encrypt_md5.cpython-39.pyc | Bin 0 -> 351 bytes
decryptencrypt/decryot.py | 17 +
decryptencrypt/encrypt.py | 14 +
decryptencrypt/encrypt_md5.py | 9 +
local_clock.py | 306 --------
main.py | 71 ++
requirement.txt | 3 -
tast.py | 0
textHandle/__init__.py | 0
textHandle/count.py | 28 +
user_config.json | 1 +
38 files changed, 419 insertions(+), 1247 deletions(-)
delete mode 100644 LICENSE
delete mode 100644 README.md
create mode 100644 SimpleError/__init__.py
create mode 100644 SimpleError/__pycache__/__init__.cpython-310.pyc
create mode 100644 SimpleError/__pycache__/__init__.cpython-39.pyc
create mode 100644 SimpleError/__pycache__/error.cpython-310.pyc
create mode 100644 SimpleError/__pycache__/error.cpython-39.pyc
create mode 100644 SimpleError/error.py
create mode 100644 api/__init__.py
create mode 100644 api/__pycache__/__init__.cpython-39.pyc
create mode 100644 api/__pycache__/api_all.cpython-39.pyc
create mode 100644 api/api_all.py
delete mode 100644 basic_info/user.txt
delete mode 100644 basic_info/week_diary
create mode 100644 config/__init__.py
create mode 100644 config/__pycache__/__init__.cpython-310.pyc
create mode 100644 config/__pycache__/__init__.cpython-39.pyc
create mode 100644 config/__pycache__/info.cpython-310.pyc
create mode 100644 config/__pycache__/info.cpython-39.pyc
create mode 100644 config/info.py
create mode 100644 createSign/__init__.py
create mode 100644 createSign/__pycache__/__init__.cpython-39.pyc
create mode 100644 createSign/__pycache__/sign.cpython-39.pyc
create mode 100644 createSign/sign.py
create mode 100644 decryptencrypt/__init__.py
create mode 100644 decryptencrypt/__pycache__/__init__.cpython-39.pyc
create mode 100644 decryptencrypt/__pycache__/encrypt.cpython-39.pyc
create mode 100644 decryptencrypt/__pycache__/encrypt_md5.cpython-39.pyc
create mode 100644 decryptencrypt/decryot.py
create mode 100644 decryptencrypt/encrypt.py
create mode 100644 decryptencrypt/encrypt_md5.py
delete mode 100644 local_clock.py
create mode 100644 main.py
delete mode 100644 requirement.txt
create mode 100644 tast.py
create mode 100644 textHandle/__init__.py
create mode 100644 textHandle/count.py
create mode 100644 user_config.json
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index f288702..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 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 General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is 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. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- 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.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- 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 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. Use with the GNU Affero General Public License.
-
- 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 Affero 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 special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU 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 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 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 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 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- 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 GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
diff --git a/README.md b/README.md
deleted file mode 100644
index c90d744..0000000
--- a/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-```
-工学云&蘑菇钉支持任意地区打卡,周报提交,以及本月打卡补签,以及周报补交。
-```
-**2022-12-7**
- 新增的自动登录
-## 下载配置
-先将文件下载到本地,执行pip install -r requirement.txt安装需要的库
-
-配置:basic_info文件夹下user.txt
-
-模板:
-{"phone":"138 xxxx xxxx", \
-"password":"123456",\
-"地址全称":"北京市 xxx xxx xxx",\
-"经度":"23.xxxxx",\
-"纬度":"114.xxxxx",\
-"start_time":"08",\
-"end_time":"20",
- buqian:false ,//若为true,则会补签**本月**所有未签到的日期,!!!是所有(只支持补签上班或下班)
- weekly:false,//若为true,则提交当前周周报
- remedy:false, //是否补交周报(只有weekly为true的时候才能用,同时本周周报也会提交)
- requirement_week_num:5,//需要补交前几周周报的数量,
- }
-默认是早8和晚8打卡,可以自行跟改,是否提交周报默认false
-经纬度可以用 https://api.map.baidu.com/lbsapi/getpoint/ 来获取
-
-## 使用
-运行**local_clock.py**
-week_diary中可以添加周报的内容,里面有默认配置
diff --git a/SimpleError/__init__.py b/SimpleError/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/SimpleError/__pycache__/__init__.cpython-310.pyc b/SimpleError/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..06c0c778ba20a377858b14b702d92401f1038576
GIT binary patch
literal 130
zcmd1j<>g`kf;*=(Q$h4&5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!Hji&ac|eqMS-
zX=-I@UQBRiZb43}Yf({tQA~V%W?p7Ve7s&kg`kf;*=(Q$h4&5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!Hji&ac|eqMS-
xX=-I@UQBRiZb43}Yf({tQA~V%W?p7Ve7s&kS5S~p^O{;+(a`fb_mp*`qh*-RN=`93?kZeO_^W$yz^!?^y7#S5S~p^O{)P9J$mxiOCLZ)L@eIC^cDg`NVXxe`EfUaR=l;)lfFma#V6RS
zkKoOdGf9y+@XgNb>^I-HaS%*^;{7w1DV<;348x=5j$o#g9wCKP>5mo$Bs-}OKp9`yv!R!y7G)vE9=ENGY4VEh>41gK|H|E)x&j^Rb{qr<)$s8
zfp#R>!MxsRcF)3w6NuO8;MM$3X2g@~Z5v2mEdm^R0i=8@S~q-vsytbQx*`
literal 0
HcmV?d00001
diff --git a/SimpleError/error.py b/SimpleError/error.py
new file mode 100644
index 0000000..e629f44
--- /dev/null
+++ b/SimpleError/error.py
@@ -0,0 +1,3 @@
+class SimpleError(BaseException):
+ def __init__(self, *args):
+ super().__init__(*args)
diff --git a/api/__init__.py b/api/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/api/__pycache__/__init__.cpython-39.pyc b/api/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dfba9395bddf7da82d440ef2cf888f9cd9e36620
GIT binary patch
literal 120
zcmYe~<>g`kf~y@FsUZ3>h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2DO#VRH}KQFza
pG_|rcFD9`dGbTPhGcU6wK3=b&@)n0pZhlH>PO2S9+h-tV0051C7}Wp(
literal 0
HcmV?d00001
diff --git a/api/__pycache__/api_all.cpython-39.pyc b/api/__pycache__/api_all.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..030a1030c91bb256dbea8ef7027476913131affc
GIT binary patch
literal 5255
zcmb7I>2n;#6`!7CclOX}*_OeW<&fh|tiy3QEIWkzC~PH#oDe1^Tf_E98fkZC>FG7r
z)^5sJ1`NaoLNE|SvLX(NNrFi#!4!n#YyO7$kT3BH>vK|-Dk@dv_j+W@NAe+(`pxT}
zKBoKq-tWDZ+troT@RRvc)q8qS)BaACOMmF?ohZ>iA-Kj_MRSrTbC{~@j;@}DW8kS*
z%&O&BEa{VSQfM8kD6s?Drqs#zzibgPo9=AAs#Jbku{ry#p|n%l<>YH9cI%o1~Y
zd6wsRo_FE5oA>Zu-pBhFGfp30=k)UdzW%7@tm7N_Mmz`jAm4=NdT)R;e$67|*YeFr
z%?0LcxY%+X-=bPJ^6Pm4eFyR827cpF4ZSvb*I?XDi#orV4;?j~YdM?Lid$E(b8X@@
zi>;@GTZ@V;&Q1E&TE)9hh)__qEIe0wrO2NSsOoxA$qUM2z9t(xzBjbZjmpxmdd2AR
z!qB$BB@If&JLpxC+Bm9JFN)l0ylV6fJvKa49UkI^p@+tY_Kgos7L7PH6^g1WV@nN-
z(;N#z8yjnMH)e+Knb_W#+5P0#$3|{%
zJhLxs_?3z~ddtXIVcT9ms2|#0`1bC?T>%%N&kMVD7cin6>@H018-8HdZMRJn?ymb4
zKDu|`V_&=7DHiUkVe^lAPdx0)(OY)z9NAIW_V9!I_wC(YsQ7bU;Q_Ba7ZwZO@kHc@
zfm&r>_=I2a3X|@XEBs_ktTnE8F_B+(C3TyPLabPxaYf|GuYY_0{lm9A#*SNeIOcT2
zuQlu-94@=%8Lyae%m>3rHhSE0*{jLniW^MVadM4pJ@Ujbv_QsPZe7lV!f&X_owNum
z-kdkz$d|)FqQkJ9uX&B`3$={epCRN{VFmP)`;5A6r-
z(|%C$gQ@VeCVDW>=bP^xKQJ8z(}(Kbd_6dTZ=q6hE0vMje4JIY$#BjKZlI-g2#tw8
z$jiQu+D#Pt#t5FTN$nV%;5luI!3p%E_5y3MCOLpHQO4_wKQw??;d+#)0@3I{hK>1J
zlbvEGu(?OIV84m!=BJp}(wWxSBUxK->a=lbT-p=uCRYb?X3b%{{1
zN7*sDVMajpZ`>%Y*_2F6yU8|cGSkkIRe0*S(atPs
zEd!Rj6_(4*AA{vgSZ<5Vx4W9AvK+X1fgNFwYRWd|4@_knJjpgqgWH>6v8K*5oA5=Y
z9%xym^(wIECK~G_P#n2B8DR9_&QS$zC+#M@vvMBD612af727p8ik=DucQUHiezI_-7~1blzF$ymaRL!l#|zzR_9y)ynJdue|fdw$7=e=RQ8M
zym-9x!cynWU!D8th2>)>JAXQi3C?};^Uq#>cKgcPKkdBrY3JEzl6q0xgf(MJ!OKa}
z_8#KJK0&q=Tj-VHgOf}O0-`{5TX;{_y+}r}Sp$~|^3*uP8xRKtg&oV?*i`i5Hyo;C?1L$xIit>Gp
znR=FO{vrin->5*nh1r0&>IEu-1IW4vu0kX2P@z#kAvAKG8$N3Ri$rzYT+pS?tvysT
zpr!U`(wwzqO5snJ>9(y9m<9sVgg}{T8Vlfw1W$w|LQ%_Xn!r>R6q>_K`HK_^R9#mS
zF2ZZs8?7M{5Uk+o--3Gg{G_bMRwNNA6|9_eBjpU@r0P46BLF65$
zXhImWOOWG5&8N^~68C8weQyLM*wVX%Rx?#wIv!HI(*DGzMLXzz*{Q31yJ*+~~otj#4aa
z=tB=W*5v-X9@)P_7I2LFChn~hxh^lh*E#mV^7F5DjxR00{^82&f7sqR`}>u{hda-G
zT&J#Z`pz$3OgcE})%-|Yhc^jN*+_4_gTP*#b~%T^BSBHo$#E|#3t#zc3<3+LeL`Mr
zSCEd7Cdl(Z2w*j_lcpmqimyQw2gO!;XM+`{h%jh8G6PbbEWj)f#z?oZS*3{~8mpLL
zJ!#`46!q*TZ4U{Btp5ka;#L|)NkcKUhE>N1!l#^Ey;ccbEKXlf6qBI$O5iFZAaVIF
zdPL+N1l(R`vH`XMWCOy{2bm6#o+N<_-E8W!J(s)nPP|}3#eLJ<E2{`R`24L@HG
zKktX1XPOzl0pFVCHs4qos1CGp7@KQm)XeKwpBpaWfWe76rLl?6oa{l!!v*G(PR{YXchg&|~96)$t+zIU8T0
zOhQm(s#6q7cDTIwo8`r0oge)WS<1PO-h=+xPmV6X{)^6uXIH4J*adOb&I~lFoslQ0
zo!OM@U$U!Y7X;xe_9N~`+jG?Z0K^KVYcU)9oDDZJg|F@$zhxKxppK1=tG}Y|q(M~s
ziLo+@y-2-+^I{X%EsxTST1_BRDsH@l&WH`g9VEU%YgrMljJO61-1u^bAy0^Cqo`}VMyJbqQTizfV+t?D&EgRnNMSBcBc9;SKAi;e4BaJV7*--d
zZl}QK^j-1~q!D#NRUhT_B>zd8M0z@+a#V`h&IazOe{Z^VVy%i|3Ng4u;r|bb6Rd$zX+##W
zy(hU_-vL8v5hbN`9Q2!4Ak4EoV5$R>S==SA`2ANZZ<@Ac_t-tU-rJ9|#kO=kd&7SK
DAfQrJ
literal 0
HcmV?d00001
diff --git a/api/api_all.py b/api/api_all.py
new file mode 100644
index 0000000..cae5da6
--- /dev/null
+++ b/api/api_all.py
@@ -0,0 +1,230 @@
+import calendar
+import json
+import logging
+import random
+import time
+from functools import wraps
+
+import requests
+
+from SimpleError.error import SimpleError
+from createSign.sign import create_sign
+from decryptencrypt.encrypt import aes_encrypt
+from textHandle.count import count_day
+
+# info api log
+logging.basicConfig(format="[%(asctime)s] %(name)s %(levelname)s: %(message)s", level=logging.INFO,
+ datefmt="%Y-%m-%d %I:%M:%S")
+api_module_log = logging.getLogger("api_module")
+headers = {
+ 'Host': 'api.moguding.net:9000',
+ 'accept-language': 'zh-CN,zh;q=0.8',
+ 'user-agent': 'Mozilla/5.0 (Linux; U; Android 9; zh-cn; SM-G977N Build/LMY48Z) AppleWebKit/533.1 (KHTML, like Gecko) Version/5.0 Mobile Safari/533.1',
+ 'authorization': "",
+ 'rolekey': "",
+ 'content-type': 'application/json; charset=UTF-8',
+ 'content-length': '161',
+ 'accept-encoding': 'gzip',
+ 'cache-control': 'no-cache'
+}
+# basic url
+basic_url = "https://api.moguding.net:9000/"
+
+
+# save token
+def save_token(user_login_info):
+ user_login_info.to_save_local(user_login_info.__dict__)
+
+
+# repeat
+def repeat_api(func):
+ @wraps(func)
+ def repeat(*args, **kwargs):
+ try:
+ func(*args, **kwargs)
+ except SimpleError as e:
+ api_module_log.error(e)
+ get_token_userid(*args, **kwargs)
+ api_module_log.info('token 刷新成功')
+ func(*args)
+
+ return repeat
+
+
+# login
+def get_token_userid(user_info):
+ url = 'session/user/v3/login'
+ # param
+ data = {"password": aes_encrypt(user_info.password), "loginType": "android",
+ "t": aes_encrypt(int(time.time() * 1000)), "uuid": "", "phone": aes_encrypt(user_info.phone)}
+ try:
+ rsp = requests.post(headers=headers, url=basic_url + url, data=json.dumps(data)).json()
+ except Exception as f:
+ api_module_log.error(f)
+ raise SimpleError("大概率ip被拉黑了(deny),当前环境可能存在问题(处于服务器上或开了代理,非国内代理)")
+ data = rsp['data']
+ user_info.token = data["token"]
+ user_info.user_id = data['userId']
+
+
+@repeat_api
+# get plan
+def get_plan(user_login_info) -> None:
+ url = 'practice/plan/v3/getPlanByStu'
+ # params
+ data = {"state": ''}
+ # add header
+ headers['sign'] = create_sign(user_login_info.user_id, 'student')
+ headers['authorization'] = user_login_info.token
+ # return rsp
+ rsp = requests.post(url=basic_url + url, headers=headers, data=json.dumps(data)).json()
+ # check response
+ handle_response(rsp)
+ # response success
+ plan_id = rsp["data"][0]['planId']
+ user_login_info.plan_id = plan_id
+ # save plan id
+ user_login_info.to_save_local(user_login_info.__dict__)
+
+
+@repeat_api
+# clock in
+def clock_in(user_login_info) -> None:
+ url = 'attendence/clock/v2/save'
+ # judge clock in
+ now = time.strftime('%H', time.localtime())
+ upload_type = "START"
+ if now == user_login_info.start_time or now == user_login_info.end_time:
+ upload_type = "START" if int(now) <= 12 else "END"
+ else:
+ api_module_log.info('未到打卡时间,已退出')
+ return
+ # exit(-1)
+ api_module_log.info("开始打卡")
+ # params
+ data = {"device": "Android",
+ "address": user_login_info.address,
+ "t": aes_encrypt(int(time.time() * 1000)),
+ "description": "",
+ "country": "中国",
+ "longitude": user_login_info.longitude,
+ "city": user_login_info.city,
+ "latitude": user_login_info.latitude,
+ "planId": user_login_info.plan_id,
+ "province": user_login_info.province,
+ "type": upload_type}
+ # change header
+ # "Android" + state + plan_id + user_id + address
+ headers['sign'] = create_sign("Android", upload_type, user_login_info.plan_id, user_login_info.user_id,
+ user_login_info.address)
+ headers['authorization'] = user_login_info.token
+ rsp = requests.post(url=basic_url + url, headers=headers, data=json.dumps(data)).json()
+ handle_response(rsp)
+ # save token
+ save_token(user_login_info)
+
+
+@repeat_api
+# repeat clock in
+def repeat_clock_in(user_login_info, date):
+ url = 'attendence/attendanceReplace/v2/save'
+ data = {"device": "Android",
+ "address": user_login_info.address,
+ "t": aes_encrypt(int(time.time() * 1000)),
+ "description": "",
+ "country": "中国",
+ "longitude": user_login_info.longitude,
+ # no verify
+ 'createTime': f'{date} 0{random.randint(8, 9)}:{random.randint(10, 59)}:{random.randint(10, 59)}',
+ "city": user_login_info.city,
+ "latitude": user_login_info.latitude,
+ "planId": user_login_info.plan_id,
+ "province": user_login_info.province,
+ "type": "START"}
+ headers['sign'] = create_sign("Android", "START", user_login_info.plan_id, user_login_info.user_id,
+ user_login_info.address)
+ rsp = requests.post(basic_url + url, headers=headers, data=json.dumps(data)).json()
+ handle_response(rsp)
+
+
+@repeat_api
+# get previous clock in log
+def get_previous_month_data(user_login_info):
+ year, now_month, now_day = [int(i) for i in time.strftime('%Y:%m:%d', time.localtime()).split(':')]
+ url = 'attendence/clock/v1/listSynchro'
+ api_module_log.info('获取上个月打卡日期')
+ # handle year and month
+ year = year if now_month != 1 else year - 1
+ previous_month = now_month - 1 if now_month > 1 else 12
+ previous_month_day_end = calendar.monthrange(year, previous_month)[1]
+ previous_month_data = {"endTime": f"{year}-{previous_month}-{previous_month_day_end} 23:59:59",
+ "startTime": f"{year}-{previous_month}-1 00:00:00"}
+ # sign exist
+ if headers.get('sign'):
+ headers.pop('sign')
+ # update token
+ headers['authorization'] = user_login_info.token
+ rsp = requests.post(url=basic_url + url, headers=headers, data=json.dumps(previous_month_data)).json()
+ handle_response(rsp)
+ # clock in count
+ day_set = count_day(rsp)
+ # 上个月能打卡的天数
+ previous_day = set([day for day in range(calendar.monthrange(year, previous_month)[1])][-(31 - now_day):])
+ # 未打卡日期
+ empty_day = day_set ^ previous_day
+ api_module_log.info("上月补签阻塞3~15秒")
+ for day in empty_day:
+ time.sleep(random.randint(3, 15))
+ api_module_log.info(f'补签:{previous_month}-{day}')
+ repeat_clock_in(user_login_info, date=f"{year}-{previous_month}-{day}")
+ api_module_log.info("上个月补签已完成")
+
+
+@repeat_api
+# get clock in log
+def get_attendance_log(user_login_info):
+ api_module_log.info("开始获取考勤记录")
+ url = 'attendence/clock/v1/listSynchro'
+ # get now month clock in log
+ year, now_month, now_day = [int(i) for i in time.strftime('%Y:%m:%d', time.localtime()).split(':')]
+ now_month_day_end = calendar.monthrange(year, now_month)[1]
+ data = {"endTime": f"{year}-{now_month}-{now_month_day_end} 23:59:59",
+ "startTime": f"{year}-{now_month}-1 00:00:00"}
+ # sign exist
+ if headers.get('sign'):
+ headers.pop('sign')
+ # update token
+ headers['authorization'] = user_login_info.token
+ api_module_log.info("获取本月考勤日期")
+ rsp = requests.post(url=basic_url + url, headers=headers, data=json.dumps(data)).json()
+ handle_response(rsp)
+ # save token
+ save_token(user_login_info)
+ # handle text
+ day_set = count_day(dict(rsp))
+ empty_day = day_set ^ set(range(1, now_day + 1))
+ # repeat clock in
+ api_module_log.info("本月补签阻塞3~15秒")
+ for day in empty_day:
+ time.sleep(random.randint(3, 15))
+ api_module_log.info(f'补签:{now_month}-{day}')
+ day = '0' + day if 10 > day else day
+ repeat_clock_in(user_login_info, date=f'{year}-{now_month}-{day} ')
+ # day > 30
+ if 31 - now_day > 0:
+ get_previous_month_data(user_login_info)
+ # save token
+ save_token(user_login_info)
+
+
+# check response
+def handle_response(rsp: dict) -> None:
+ response_code = rsp['code']
+ if response_code == 401:
+ raise SimpleError(f"token expire {rsp}")
+ elif response_code == 200:
+ api_module_log.info(f"成功:{rsp}")
+ else:
+ api_module_log.info(f'请检测请求带的参数或发送issues 错误信息:{rsp}')
+ api_module_log.info("其他错误,已退出")
+ exit()
diff --git a/basic_info/user.txt b/basic_info/user.txt
deleted file mode 100644
index 1f09419..0000000
--- a/basic_info/user.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-{"phone":"13888888888",
-"password":"123.comxxxxxx",
-"地址全称":"山咔咔里",
-"纬度":"23.xxxxxx",
-"经度":"114.xxxxxxx",
-"start_time":"08",
-"end_time":"20",
-"weekly":false,
-"buqian": false,
-"remedy": false,
-"requirement_week_num":5
-}
\ No newline at end of file
diff --git a/basic_info/week_diary b/basic_info/week_diary
deleted file mode 100644
index 1a6cf5b..0000000
--- a/basic_info/week_diary
+++ /dev/null
@@ -1,223 +0,0 @@
-
- {
- "content": "这是我实习的第一周,感觉到周围陌生的人都在打量自\n我,有些微的紧张,对自我工作的岗位还是比较模糊,刚进\n来就有点无所适从。这周慢慢的适应公司的节奏,跟随前辈\n的脚步对公司有了更多的了解,可是应当做一些什么事情有\n大概的了解,感觉应当不难。\n因为是刚刚加入公司, 对环境还不熟悉, 人也比较陌生,\n所以在工作中就是上司戳一下动一下,没有自我的想法。这\n一周的工作并不繁重,可能是照顾新人,任务比较简单,同\n事也挺好相处,并没有发生什么大的事故。在完成任务时因\n为手脚慢,可是仔细的做好每一个细节,可是没人催促,我\n感觉到放松,渐渐放开自我。经过几天的相处,慢慢大着胆\n子向同事请教问题,从与他们的交流中吸收知识,逐渐熟悉\n工作的流程,了解工作的意义,明白我应当要做到什么样的\n程度才能合格。\n"
- },
- {
- "content": "经过一周实习,熟悉了环境,对同事也有必须的了解,\n更重要的是慢慢增加的工作量表示我已经开始跟上脚步,给\n予我相当大的自信心。其实我找的工作与专业不太相关,没\n有经过足够的了解,可是经过一周的实习,我对做这份工作\n已经有了心理准备。刚刚开始都是最基础的杂活,从这一周\n开始,接下来的几周会断断续续给实习生做一个培训,了解\n公司的业务范围,我们又该做些什么,又能做些什么。\n在这一周的工作我明白了作为一名员工要多做多问少\n抱怨。对于不懂的进取寻找解决的办法,在自我份内的事情\n要做好,另外就是每个人都有状态不好的时候,不要将颓废\n的心境带入到工作中来, 调节好自我的心理状态, 避免失误。\n我努力适应着工作与人群,实习与正式的工作在时间的流逝\n中没有什么不一样了。\n"
- },
- {
- "content": "时间过得真快啊!这一周可能是注意到我的工作完成不\n错,每一次很仔细,于是我接到了我人生中第一份正式的工\n作任务,不再是给同事前辈打下手,我相信我必须会完成的\n很出色。指导我的师傅说,自从我来到公司之后一向仔细观\n察学习,做杂事也进取的完成,并且都没有大的错误,如果\n这一次能圆满完成就减少我打杂的时间,慢慢开始正式的工\n作,我意识到这是一次考验,如果我将这段时间学习的成果\n都体此刻这次任务中,会看见我的努力。我想说我必须不会\n辜负师傅您的期望,完美的完成任务。\n在接下来的日子里,我陷入了忙碌之中,查询资料,安\n排时间进行实践,在这个过程中,因为我是新人,不可避免\n的出现了一些错误,还有知识盲点。在师傅指导下,我还是\n顺利的将工作完成了。在这几天的学习中,我感到了自我的\n缺陷与不足,同时对一些约定俗成的规矩规范不够了解,没\n有成功的将理论与实际相结合。\n"
- },
- {
- "content": "不知不觉已经过半个月,已经慢慢适应了这样的生活,\n每一天都没有什么不一样, 按部就班的工作。 在这半个月里,\n我更加会利用时间,合理安排工作,除了学习本专业的知识\n一步步完成自我的毕业论文之外,还寻找与工作相关的专业\n知识来进行学习,不让自我拖同事后腿,希冀自我能够有一\n点用处,能够帮上忙。\n经过一段时间的实习生活,我已经渐渐改掉了以前日夜\n颠倒的作息习惯, 在学校的时候, 上课的时间并不是排满的,\n于是学生晚上就有时间玩手机到很晚,早上不起床,仅有上\n课才能打起精神。工作时有固定的上下班时间,不能迟到或\n早退,这就意味着要准时起床,保证充足的睡眠时间才能在\n工作中不偷懒。此刻我已经养成了早睡早起的好习惯,提前\n一点去往公司,准备一天的工作。\n"
- },
- {
- "content": "最终任务得到了师傅的夸奖,认可了这一段时间我的努\n力。我满怀信心踏上了新的征程,在师傅与同事的帮忙下深\n入学习本岗位知识,从最基础的规范开始,慢慢升级到各种\n工作相关需要记忆的知识,将大学里面学习到与工作相关的\n知识也捡起来。经过几天时间的刻苦钻研,大学里面学习到\n的一些知识有了用武之地,基本掌握了理论方面的知识,只\n剩下实际操作方面需要指导。\n在这一周我又领到了师傅分给我的任务,虽然只是他任\n务中比较边缘的一部分,可是就是一步步的向前进,慢慢深\n入才吸引人。工作中收获到的成就感,获得赞扬的满足感让\n人上瘾,不舍得放弃,攻下难关那一瞬间的喜悦,想让人一\n向一向做下去。在工作的过程中,我开始体会到师傅告诉我\n说,对工作充满期待是什么意思,就像在学生时代攻克一道\n难题时的成就感就算没有分数的显示也是高兴的,可是比之\n那还要让我觉得高兴。享受工作带给自我的欢乐,一样也是\n体验生活带给自我的乐趣。\n"
- },
- {
- "content": "经过不断地修改和完善,又仔仔细细的检查有没有错误\n和不到位的地方,总算能够提交任务了,并且比预定的时间\n还要早,我抑制不住自我的兴奋之情,一向徘徊在师傅的办\n公室门口,等待师傅的检查,以及听到他的肯定。\n等待的时间格外漫长,直到师傅进来,我整理好行装,\n佯装淡定的向他汇报工作完成的情景。师傅打断我的喋喋不\n休,微微颔首说明白了,等会我会看的,你先去做点其他事\n情。我多少有点沮丧,这种不上不下感觉真的不好受,就像\n等待判决的犯人,不明白自我做的是对是错,也不明白有没\n有下一次。走回自我的座位,我思考了良久才整理好自我的\n思绪,可是却又好像回到刚实习的时候,无所事事,没有干\n劲与动力。想想这样不行,打起精神鼓励了自我一番,不能\n就因为这一件事情否定自我,就算是失败了也积累了经验,\n对自我实习以来也做了一个总结,自我已经做了能够做得到\n的,为这一个月的实习生活交了一份满意的答卷。\n"
- },
- {
- "content": "俗话说的好,“一日之计在于晨。”每一天早起之后开\n始享受清晨的时光,每一天都是变化的,坚持一个好的心境\n去上班。简便安排好一天的时间,又开始了新的工作,将上\n一周的任务继续完成, 再仔细地检查, 交给师傅与同僚检验。\n过去的的这一个半月多,有无尽的感慨还有对接下来实习生\n涯的期待,每一天都有新的挑战。步入工作的正轨之后,不\n像之前那样,就算能规矩的做好一天的杂事,但心里总是着\n急的,在被考验的时候,还很担心自我是不是完成不好,是\n不是立刻就会被公司赶走,被师傅叱骂。在过程中对自我本\n事的质疑,没有自信心,在这一次次磨练中,我找到了自我\n的长处,也对之前的担心有一丝丝羞赧,是我自我太过杞人\n忧天。\n在这七周的工作中,我在师傅的调教下慢慢成长,我也\n领会到了他的意思。在工作时,要对自我充满信心,不自信\n就会被别人牵着鼻子走,跟着别人的思路完成属于自我的任\n务,没有主见在最终的作品中也会呈现出来。\n"
- },
- {
- "content": "学习是永无止境的,在这一个星期里,我学到了不仅仅\n在工作中要认真观察师傅与同事们是怎样应对紧急情景,并\n且迅速完美的处理掉之外,我还学到了平时生活中他们的一\n举一动有什么样做人的道理,每个人的性情就在这事件的处\n理中得以让人看清,每一个人都值得当上我人生的导师。\n在与人交往的过程中,在学校里与同学交流时、在公司\n里与同事交流时、与客户交谈时,每一个的度要靠自我把握\n好,怎样样将一些敏感的话题带入到话语中却又不引起人们\n的反感,再一个怎样与人的交谈中有效的提取信息,这都是\n我还要努力学习的。在观察中学习,在之后我请教师傅该如\n何做好这些事情,又该如何掌握好表达技巧,他笑了笑说:\n“刚开始肯定是什么都不懂一头乱撞,可是慢慢在实践中就\n会体会到该怎样说,这是一种只能意会不能言传的东西。”\n我并没有听太懂,可能这就是经验带给他的财富吧。\n"
- },
- {
- "content": "对自我有了信心之后,我的精神面貌发生了很大的改\n变,这是同事说的,不再紧张,跟着更加有条不紊,与人辩\n论也更加有说服力。我其实没有察觉自我的改变,可是这是\n在向好的方向发展,我还是很高兴的。这一周是第八周,我\n的实习生活也有两个月了,这是我长这么大以来第一次在外\n面独自的工作与生活,没有人仔细地照顾,没有人在身边排\n解情绪,也就这样过了两个月,交了新的朋友,开始了新生\n活。\n这么长的时间了,也足够我对同事的了解加深,在公司\n里面两个月的工作,让我感触最深的是公司员工之间的情\n感。在遇到困难时同心协力一齐奋斗, 成功时一齐分享喜悦,\n但更多是在平时隐藏在一举一动之中。天气冷了注意防寒,\n及时添加衣物,工作困难时,走到身边不经意的说出一句话\n就是一个点拨,让我茅塞顿开。\n"
- },
- {
- "content": "实习的时间长了,学到的东西多了,自我的生活也渐渐\n好了,每一天都有新鲜的趣事,想起实习前的茫然无措,此\n刻我也能从容的开始新生活。人可能往往就是如此,因为未\n知所以感到恐惧,因为从未尝试,所以不敢尝试,可是如果\n没有第一个吃螃蟹的人,谁又能明白螃蟹多么鲜美呢?\n在第十周,我突然就有了这样的感慨,因为师父又给了\n我一个新的任务,接任务时突然想起在对找工作的胆怯,害\n怕失败,只想缩在安全的乌龟壳里,可我还是勇敢的跨出了\n第一步。有了第一次的尝试,无论成功或者失败,第二次就\n不会太远。\n因为有了一次次失败的经验,我最终得到了成功。我也\n从中明白了一个道理,不要胆怯,也不要害怕失败,就算是\n完完全全陌生的事情,努力尝试过才明白自我有没有那个本\n事,仅有在尝试、失败、积累经验中不断提升自我,才会获\n得成功。\n"
- },
- {
- "content": "由于与老员工之间相处的越来越好,于是在工作上也给\n我带来了很多的便利。他们很耐心的给我讲解了一些工作上\n的注意事项,以及他们多年来的工作经验。我们不得不承认\n好的人际关系对我们自身的反正来说存在着重要的意义。不\n仅仅是个人也好还是企业也好,仅有在良好的人际关系下才\n会有良好的合作。良好的合作往往有助于我们工作的高效完\n成。能让我们事半功倍而不是事倍功半。这些体会都是在实\n习过程中所得到的,我最终明白在我们真正踏入社会之前为\n什么要进行实习。因为学校所教与我们的知识毕竟有限,仅\n有在实际的工作中我们才能学到更多的知识及体验。而这些\n体验是我们花再多的钱也不能购买的。因为这是只属于我们\n自我的,不会随着时间的流逝而被遗忘。"
- },
- {
- "content": "工作中,我们难免会犯错所以挨骂也是在所难免的。当\n这件事发生在我的身上的时候我才深刻体会到解释就是找\n理由,据理力争是没有用的。你对领导解释得越多结果就会\n变得更糟,所以主动承认错误是关键。由于认错态度良好于\n是领导也就随便骂骂也就算了。我们常常会做错事,也常常\n会被误解。在工作中不管我们是犯错还是被误解,我们首先\n要做的不是跟上级阐述我们犯错的理由首先要做的是承认\n错误。当被误解的时候我们不要忙着去解释,当领导处于愤\n怒之时,过多的争论只会让事情往更加恶劣的情景发展,倒\n不如听他说完然后道个歉。其实对于我们来说认错只可是是\n一件很简单的事情。并且关于误解,总会随着时间的的推移\n而水落石出的。所以没必要和上级激励力争,因为你们之间\n本来就是不平等的!\n"
- },
- {
- "content": "幸好上次的错误没有给领导留下太多的坏的印象,由于\n这阵子的工作完成的还算是比较好,于是领导在大家面前夸\n奖了我,也算是这阵子辛勤工作的回报吧。所以下班的时候\n觉得心境异常舒畅。我想这也许就是为什么马斯洛把自我价\n值的实现放在人类需要的最顶端的原因吧。每个人都需要自\n身的价值被肯定,当我们的价值得到实现的时候我们就会觉\n得愉悦,而当我们的不能得到他人的认可的时候我们就觉得\n难过。虽然这只是一个小小的夸奖, 但对于一个实习生来说,\n能在众多的老员工之间得到夸奖也算是小有成就感吧。因为\n不是我们所做的努力都是能够被人们所认可的,这就是为什\n么那么多人不能得志的原因。可是我相信上帝都是公平的,\n我们的努力必须能够得到回报的除非我们所做的努力还不\n够多。所以,不要放弃的太早不走下去你不明白你接下来遇\n到的是什么。\n"
- },
- {
- "content": "这一周我们的工作比较忙,大部分的时间里我们都是在\n加班。加班的时间多了工人的工资也就比较高了。虽然很累\n可是大部分的员工还是很高兴,也许对于我们这些刚出社会\n的人来说不太能够理解。在加班的过程中和一位老员工闲\n聊,在闲聊的过程中我得知原先他已经在这个厂里面工作了\n7、8 年。我很冒昧的问了他一个问题:为什么,在那里工作\n了那么多年还是一个普通员工。他没有责备我如此唐突。而\n是跟我说:那也没办法大字都不认识几个呢,怎样能去做那\n些工作呢?我突然觉得知识是多么的重要,虽然我们不能说\n一个人的学时就代表了一个人的本事,可是在如此功力、竞\n争如此大的社会。在必须的程度上一个人的学历代表着一个\n人的水平。因为没有企业有时间、并且愿意花时间去验证你\n到底有没有本事。所以只能经过一个人的学历来确定了。第\n一次觉得原先知识是那么的重要。"
- },
- {
- "content": "相比上一周,这一周的工作就稍微简便一点了也没有忙\n了。所以下班以后我们就有了更多的时间做自我的事情了,\n一般在下班的时候我们都会选择去运动运动。尽管上班也有\n点累了,可是至少能做一些自我喜欢做的事情也算是一种放\n松的方法。突然在运动中觉得学校的生活已经离我们越来越\n远了,好好像从来没有如此的怀念过我们的学校生活。当我\n们还在学校的时候我们曾拼命的想要逃离我们的学校生活\n可是真正步入社会以后才能明白,学校的生活是我们一生中\n最完美的时光。在上学的时候我们常常觉得压力很大,可是\n此刻才明白原先上学所带给我们的压力是人一生中所有的\n压力中最小的一部分。不得不说一句很俗的话:每个人都是\n这样,仅有在失去的时候才会觉得可贵"
- },
- {
- "content": "由于学校还有一些重要的事情要做的的原因,这个星期\n我们领导给我们批了几天假让我们回去学校处理一些事情。\n当我们走进学校,那种熟悉的感觉迎面而来。这种熟悉的感\n觉让我们每一个人都觉得心境异常的愉悦。虽然以后还不明\n白还有多少次机会踏进我们的学校,可是每个人都要成长,\n而成长中总伴随着得到与失去。所以我们不应当只看到自我\n失去的那部分,而忽略了自我得到的那一部分。还记得刚上\n大学的时候对这个学校的种种嫌弃。突然想起一句话:学校\n就是自我在心里骂一千遍但不允许别人骂一遍的地方。对\n啊,我们总是对我们的母校带着如此复杂的感情。我们很快\n就办完事情在学校多呆了一天以后我们就回到了工作的地\n方。不明白为什么的,从学校回来突然觉得好像觉得没有那\n么的累了⋯⋯\n"
- },
- {
- "content": "不知不觉中,来那里实习已经快两个月了,虽然时间已\n接近两个月,对工作也是越来越熟悉,可是有时还是会觉得\n力不从心。并且也失去了刚开始来实习的那种兴奋与好奇,\n觉得心境总是处在低谷当中,总是振奋不起来。在和领导的\n偶然闲聊的时候他很友好的跟我说:只要我用心地做,就会\n左右逢源。越做越觉乐趣,越做越起劲。听他说完顿时觉得\n茅塞顿开。有人说过:凡职业都具趣味味的,只要你肯干下\n去,趣味自然会发生。切忌不要粗心大意,马虎了事,心浮\n气躁。做任何事都一样,需要有恒心、细心和毅力,那才会\n到达成功的彼岸!对啊,每个职业都会有它的趣味所在的,\n像我之前所说的不走下去,我们不明白接下来会遇到什么。\n所以耐心等候吧。\n"
- },
- {
- "content": "在上一周和领导的闲聊之后,在这一周我反省了一下这\n阵子的工作状态。我突然意识到与其自怨自艾还不如干些别\n的事情来充实自我,于是我主动要求在空闲的时间去帮帮别\n的部门的忙。一方面我能够打发打发自我的时间,让自我变\n得充实而不至于自我的觉得生活无趣。另一方面,既然我们\n实习是为了学到更多的知识那就趁着实习的期间尽可能的\n去不一样的部门感受一下不一样部门的工作。也许这样对我\n们真正踏上社会的时候也是有所帮忙的。即使是生活无趣,\n其实我们也是可\n以让它变得趣味的。其实大部分的原因不在于生活,而\n是取决于我们带着怎样样的心态去看待生活。"
- },
- {
- "content": "由于这一周领导批准了我提出的要去别的部门帮忙的\n请求,在这一周我也正式到别的部门去帮忙了。所以会比以\n往更加的,忙碌一点。虽然如此,可是和以往的生活相比我\n倒是更加喜欢此刻的生活忙忙碌碌的。经过在别的部门帮\n忙,我发现每个部门的工作都是紧密相连的,而每个部门的\n价值也是相同的,仅有在每个部门的互补之中才能使整个企\n业的利润到达最大化。相反的只要任何一个部门稍有差池都\n会让整个企业的利益有所下降。所以,我觉得不管是哪一个\n企业都好,都应当加强企业个部门之间的联系,才能让企业\n在这个竞争强烈的社会生存下去。才能让企业立于不败之\n地。\n"
- },
- {
- "content": "慢慢的在别的部门的帮忙工作也慢慢熟悉了,得到了上\n级领导的好评及赞扬。相比刚进入这个公司的时候不管是在\n为人处世上还是在工作的处理本事上也有所提高了,慢慢觉\n得一个人不管工作本事有多强要是不懂得怎样去和别人相\n处一切都是空谈的。这个实习教给我们最多的不是让我们去\n如何运用我们的专业知识,不是让我们去获得更多的知识,\n而是让我们明白何如去生活。相信没有一个人不懂的如何生\n活,可是却不是所有人都懂得如何在这个社会上生活。经过\n在那里的观察我发现一般个性太强烈的人都不会再那里呆\n的太久,反倒是一些较为平和的人留了下来。我想了很久,\n也许是因为较为平和的人更加适应这个社会的发展趋势吧。"
- },
- {
- "content": "在这一个星期里,我还是像往常一样工作一样下班。没\n有什么异常的事情发生。有时候没有什么事情发生也是一件\n很好的事情。虽然生活没有什么惊喜可是却也是至少没有什\n么不好的事情。突然回过头去想在那里的那么多个日子,慢\n慢的好像已经很习惯。习惯那里的生活、那里的工作。日子\n好像也比之前想的要过的快一点,刚开始的时候以往想过要\n快点结束此刻也觉得还好。有时候我们觉得可能会很艰难的\n日子其实也是很快就过去了。所以我们总要对生活充满期\n望。\n"
- },
- {
- "content": "这个星期又犯了点小小的错。虽然领导没有过多的责备\n可是心里还是觉得又些许的过意不去。人都是这个样貌难免\n会有过错,首先要自我学会原谅自我。如果自我一向处于纠\n结之中不愿意给自我宽恕,那么别人又怎样来宽恕你呢?我\n们能够犯错可是不能一错再错。于是我这样安慰自我。在这\n样想之后自我也觉得心里好受一点,既然过去的事情已经不\n能再挽回了,那至少从此刻开始我们还能够好好把握,避免\n下一个错误的发生。也许生活没有必要太过于纠结。\n"
- },
- {
- "content": "我们都说社会这趟水太深。有时候和朋友闲聊都说说起\n诸如此类的事情,比如上级的什么亲戚被提升为了什么什\n么⋯⋯经过在这个企业那么长时间的实习,我不得不承认:\n不管是在任何一个地方都会有太多的潜规则。可是即使是这\n样我们还是不能被潜规则。我始终坚信只要是你有本事,只\n要是你能让企业有所发展,利益有所提高,不管是什么潜规\n则都会给你让步。与其抱怨还不如让自我更强一点,强大到\n有一天你会被别人看到为止⋯⋯\n"
- },
- {
- "content": "离实习结束的日子不远了,而实习结束了也就意味着我\n们很快就要真正踏入社会了。其实我在想在这段时间的实习\n过程中进入这个社会的各方面的准备呢?我想也许我已经\n做好了大部分的准备了,不管是心态上也好、生活上、工作\n上也好。在这个实习的过程中我们每一个人都在不知不觉中\n做好了准备。也许我们从来也没有发觉到这一点。我想这也\n许就是我们实习最大的意义吧。对于每一个刚出校门的我\n们,身上有太多的锐气以及娇气。我们就像是刚出山上开凿\n下来的石头,有太多的棱角。而这实习的几个月就像是刻石\n把我们打磨得更加的圆滑。仅有这样貌才能让我们更好的去\n适应这个社会。而不被社会所淘汰。我感激这个实习来得恰\n到好处,让我能够及时明白:怎样样的人才是这个社会真正\n需要的人。\n"
- },
- {
- "content": "到此刻为止我的实习工作就要接近尾声,我也即将结束\n在那里的实习工作。在这几个月里面带给我的感触太多太\n多,连自我也觉得奇怪到最终竟然有点舍不得,可是生活是\n向前的我们必须要忘前走。也许以后我们不再需要做如此艰\n辛的工作,也能够脱离低层的工作。可是我不会忘记这一段\n时间的实习所带与我的感受,不会忘记自我的原先的样貌。\n也许以后的路不会比此刻更加顺畅,可是我坚信,这几个月\n的实习都挺过来了那么以后的路上还有什么可怕的呢。我相\n信只要努力未来必须会越来越完美的。“实践是检验真理的\n唯一标准” ,经过这次实习, 我也发觉自我有许多不足之处,\n可是所谓真诚所至,金石为开。在今后的生活中,我会朝着\n自我的目标, 不断努力学习, 弥补不足, 为自我的梦想而奋。\n"
- },
- {
- "content": "图是弄好了,接下来是开始进行生产,调试。真是毛病\n重重,错误多多啊!产品刚出来进行调试微出现这样那样的\n毛病。之后才清楚明白是怎样一回事。可是经过这件事能够\n学到不少在学校所学不到的知识与经验,原先在设计绘图,\n这个零件是研究的并不单单是把图绘出来,还要了解一些关\n于市场方面的信息,比如说价格,一些常用的毛坯,怎样做\n起来才方便简洁,如何把他设计成又好又方便的产品。还要\n研究在加工过程中出现的误差,还有一些热处理方面的知识\n等等。如果不想到这些结果会是难以想象的,浪费时间上其\n次的,最重要的是公司经济的损失。\n"
- },
- {
- "content": "经过一个多月的实习,虽然对公司不是那么的太了解,\n可是多少不等也有所了解。天天做着一样的事,感觉得无比\n的枯燥仅有自我一个人坐在电脑面前一整天,仅有电脑从早\n到晚的陪者我,觉得好孤独,没有了以前在学校的那种欢声\n笑语,没有在学校的那种简便悠闲自在了,有的只是空虚和\n寂寞。有些时候闲下来就坐在电脑面前发呆, 不明白做什么。\n就这样一天一天的耗着,感觉除了工作以外,自我的生活中\n就没有其他的新鲜的事情, 或者是值得人去回忆, 留念的了,\n没有了色彩斑斓的生活,有的只是枯燥的工作有些时候都有\n点冲动想不干了,去换换别的工作,想给累积更多的社会知\n识和经验,可是想了想还没有那么的冲动,还是在原先的地\n方老实的待着。\n"
- },
- {
- "content": "虽然时间是过的那么的艰苦,可是还是有欢乐的时光\n的,那天我和师傅出去吃饭了,在饭桌上,师傅没有以前那\n一脸的严肃,让我感觉到自我和他们就像兄弟一样,并没有\n那么的陌生。在吃饭的时候叫我注意一些细节方面,并不象\n在学校大家在一齐吃饭那么的随便,要有必须的规矩和礼\n数。叫我如何去喝酒,虽然我不会喝,他们就让我少喝点,\n意思一下,叫怎样在那里结交新朋友,也好为自我以后在社\n会混多一条路,多见见世面。那天我们吃的很高兴,也很开\n心,我第一次感觉这样无拘无束。回到厂里的宿舍,呼吸着\n外面的空气,感觉到无比的舒畅,来到厂里最终有了一次真\n正的放松,心理觉得乐滋滋的。\n"
- },
- {
- "content": "经过了一段时间的工作,又开始踏上了新的征程,进行\n新的锻炼。经过一段时间的匆匆忙碌后,最终有了能够闲下\n来的一点时间。能够稍微的偷懒一下,好好的享受一下工作\n之余的欢乐。在这以后才上体验生活那种家庭生活的开始,\n开始我的新的工作:学习怎样做好日常生活中的细事,比如\n说说是挖排水沟,看似一件简单事,可是实际哂纳感做起来\n就显得的十分的棘手,对于我们刚步入社会的新大学生来说\n无疑是一个重大的考验,虽然我并不明白怎样去弄,更不明\n白如何弄好,可是我还是在其中努力的学习,领悟其中的心\n得。这些活原先在家里并要自我去做,但我在那里能够亲身\n的体验到家人的辛苦与劳累。仅有自我亲身经历,才能深刻\n体会。\n"
- },
- {
- "content": "上一周的劳累与辛苦使我牢记心理,可是这一周又学到\n新的东西,虽然简单可是也很容易出错,我和我一个师傅去\n浇水泥板, 在浇焊一块铁架子, 放在里面来增加的它的强度,\n以防被什么大型机器从上头走的时候压坏了,我看着师傅\n做,便好奇的问你为什么不做成和扳子一样大的架子呢?师\n傅起初并没有告诉我为什么这样做,我一向带着这样的疑\n问。之后和他一齐浇的时候才发现,如果和它弄成一样大的\n话结果就放不进去,或者说以后弄出来,边上就会不平齐,\n不仅仅外观上头不怎样好看,并且有些时候不注意的话,他\n人从它旁边经过的会弄伤其他人。这个虽然简单,也许在书\n上的时候大家都会说,但你一旦在真正实践的时候就会想不\n到,仅有实践了,才能更深的体会。\n"
- },
- {
- "content": "锻炼远不止这些,丛中学到东西才是最重要的。又有一\n件事情是我记忆犹新,那天天阴着,风吹着,冷极了。老板\n叫我们去刷树,这些简单的东西对于我来说都是没做过,不\n怎样会做。我都不怎样情愿去做,老板说了不得不做,正所\n谓在别人的屋檐下吃饭,不得不低头。硬着头皮拿着家伙干\n了起来,起初上一脸不愿意,慢慢做起来觉得里面还是有必\n须的学问,比如说一般树干要刷多高,才能到达保护树的最\n佳效果,书皮上头一般刷成什么样貌才能最好,怎样样刷才\n能使多有的白色在同意高度,怎样样刷才能让人看上去更加\n的美观舒服等等,从臆见小的事情上就能学到很多,只是有\n些时候自我并没有发现而已。"
- },
- {
- "content": "学习总是永无止境的,正所谓活到老学到老。公司是搞\n二手摊铺机的维修,这一次家里来个大家伙,要进行大修,\n这下好了一忙就大伙给忙坏了,大家一天到晚就开始为着这\n个大家伙弄来弄去,开始天天加班。一天从早到晚都干个不\n停,晚上还要加班,那几天真是一个尽的叫累啊!恨不得一\n下就过去, 事实是不可能的, 只能一天又一天在忙碌中度过。\n回头想想这几个星期感觉自我尝到人间的酸甜苦辣,感觉时\n光是度日如年,十分的难熬。有些时候整个人早上都不怎样\n想起来,盼望着什么时候能够放假休息一下,好好的放松个\n一天两天,最终结束了一个星期的劳累生活,回过头在想想\n这个星期的点点滴滴,不禁的笑了起来。"
- },
- {
- "content": "时间过的真是快啊!不知不觉的将近两个多月了。对于\n刚出学校的我来说生活的点滴都是一个学习的过程,比如说\n自我的日常生活,从学校出来了,什么都要靠自我,刚来厂\n里的时候,自我连做饭都不怎样会,有些时候都煮的不熟,\n正所谓在家里过惯了那中衣来伸手,反来张口的生活。开始\n几次都没做好,可是之后慢慢的适应了,越做越好了,同时\n自我也开始慢慢的学习做菜了,虽然做的不怎样好,可是自\n我还是每一天坚持的去做,相信总有一天会做好的,正所谓\n功夫不负有心人,我坚信总有一天会弄好的。离开了学校,\n怎样样去搞好自我的生活也是一个重要的过程。也是有很多\n地方值得自我去学习的,生活中处处能够学习,只要你去用\n心。\n"
- },
- {
- "content": "到了这一周说说我的感想最深刻的还是交际方面的。像\n我一个人在外面, 生活确实不容易。 俗话说的好在家靠家人,\n出门靠朋友。 出来交朋友是十分重要的, 而看准人, 看好人,\n交好人是更重要的,在结交新朋友之前要研究好这个人是否\n值得自我去交,看准人是交朋友的一个重要条件,看好人则\n是交朋友的一个中心环节,交好人则是最简单的了。我的公\n司虽然不怎样大,可是有几个人就有几种不一样的社会形\n态。有些时候我都会不禁的发出感慨,也许正因为社会上有\n这些不一样的人,不一样事,不用的物体才能构成这个复杂\n而又无奇不有的社会。社会真是让我感慨万千,如果说社会\n是大海,那我就是一滴水,终究会随着时间的流逝而滚入滔\n滔的大海随波逐流。\n"
- },
- {
- "content": "实习过半,真是实习时间多多,接触社会多多,学到的\n经验和社会知识更加的多多。 新鲜的事更是说不尽, 道不完。\n在工厂中发生的趣事,幽默的事也算不少。但这个星期我想\n说的是有些发生我们身边看上去不怎样起眼的事,可是当你\n亲手做起来的时候就会发现自我并不是像想象好做,那么的\n容易简单,这可能也就是我们平常所说的眼高手底吧!真是\n不做不明白,一做吓一跳。有些时候我都怎样敢相信自我会\n这么的差劲,可是事实就在眼前,事实是证明一切强有力的\n证据,我不得不相信这一切。这些虽然是小事,但能真正的\n反映一个人在处理这些事方面的本事,事实胜于雄辩,也许\n从这些事中我们能够学习到在处理小事方面应当谦虚谨慎\n一点。\n"
- },
- {
- "content": "人往往都是这样,没有经历过的话,永远都不明白事情\n到底是怎样一个样貌, 是真的那么难, 还是并非如此, 所以,\n不管怎样样,即使是自我完全陌生的事情,只要有机会,都\n必须要去尝试,努力去做好。因为没有经验,那么就需要做\n更多的准备工作。另外就是不要害怕失败,只要用心去做就\n能够了。等到熟练了,那么成功将是水到渠成的事情。比如\n我的第一次做那些不起眼的小事时,虽然我做得不够好,或\n者能够说失败了,但经过这次的尝试,却令我获益匪浅,对\n我之后的几次任务的成功都起到了极大的推动作用。自我也\n经过不断的经历和尝试检验了自身的水平和适应本事。仅有\n经过不断的努力,不断的尝试,不断的积累经验,才能够发\n现自我的不足,然后在弥补不足的时候,我们便实实在在的\n提高了自我。所以,不管怎样,努力去做吧,告诉自我,只\n要用心,就能做得更好,更舒心。"
- },
- {
- "content": "时间过得真是飞快, 实习近三个多月了。 在这中间有苦,\n有甜,有累,有欢乐。实习期间真是感慨万千,总是有说不\n完的事,道不完的情,怎样说也说不完,每一天虽然都是我\n们这几个人可是,总会有不一样事在我们身边发生。经验总\n是藏在这些平常的事中,需要我们去发现,把它挖出来,化\n成自我的经验,仅有这样不断的积累,不段的学习,才能拥\n有更多,更好的宝贵的经验。有了这些经验才能在社会上占\n有有利的位置,才能在社会上站稳脚跟。也为以后在生活奠\n定坚实的基础,这周虽然没学到什么东西,可是回忆过去三\n个月的实习,总是那么令我难忘,毕竟这是我的第一次独自\n一人在外面工作生活,一个在笼子生活了十几年的小鸟,最\n终飞出父母的怀抱,在外独自奋斗。\n"
- },
- {
- "content": "有了自我的第一份工作,在除了不变的上班下班,其中\n还潜藏危机,要在实习中不段的学习,跟着节奏的发展,不\n能停滞在原地,要居安思危。要在实习中不断的提高,如果\n有本事的话,还要有超前意识,要把自我的潜在本事开掘出\n来,仅有不段的开动自我的大脑, 才能创造更好的物质生活。\n自我的命运掌握在自我的手里,需要去寻找,去探索。有些\n时候外部环境对于一个人的发展走向起到重要的影响,好的\n外部环境能够造就一个人,坏的环境也能够毁了一个人。所\n以不管在工作,或者以后在工作的时候就要研究好这些方面\n的因素,仅有在找工作前做一切准备才能把握自我的那块\n金。正所谓做到知己知彼才能在仗场上取得胜利,这样的道\n理同样适用于我们此刻,这样也算在为自我适应复杂的环境\n奠定基础。\n"
- },
- {
- "content": "一个星期的实习下来,总是有很多经验,有很多认识,\n自我总是有很多的感慨。也许在实习的这些天中,我也在逐\n渐的成长。在认识学习逐渐的成熟。每个人都会在时间潮流\n中不断认识自我,只可是是时间的长短的问题。所以待人要\n真诚,时时为人着想, 处处为人行事。 能够把自我溶入群体,\n而不耻向工人群众学习。要想在如今的社会中生存,就要吸\n收新的思想与知识,不断更新观念,趋于完善。这样才有利\n于思想与实际行动真正地结合,仅有在思想演练,才能在最\n短的时间里把自我要从事的行业中处于领先的地位进而起\n着不可替代的作用,因为我将会为它比其他人付出更多创造\n更多价值。我也应当得到我应得到的报酬与珍贵的经验。\n"
- },
- {
- "content": "这么长时间下来了,让我感触最深的还是一个情字,俗\n话说的好人非草木孰能无情,处处都有人情在。比如说当你\n独自一个人在搬一样重东西的时候,他会自动来帮你搭上一\n把,每次和他一齐做事的时候,他总会默默的承受的更多,\n不会因为我的不娴熟而责怪我,而是慢慢的在等待我,当我\n遇到不会做的事的时候,他总是会悄悄的走到我的身旁,细\n心的指导我, 让我渐渐的步入轨道, 当天渐渐的转冷的时候,\n他会不时的提醒你要多穿点衣服,在工作方面他是我的师\n傅,在生活方面他如同我的父母。 休息时间有时我们聊聊天,\n他在我生活中亦师益友。让我感觉到背加的温暖,虽说社会\n是残酷的,可是在每个角落还是存在着温暖。\n"
- },
- {
- "content": "在外面工作有苦,有甜,有辛酸,有欢乐。但总的来说\n对自我还上一个不错的锻炼。失败是成功之母,要想有成功\n就必定会有失败,要能承受住失败的打击,从失败中总结出\n经验,把它化成自我的知识为以后遇到同样的事或者是类似\n的事就不会出同样的错误,感觉每周还是多接触接触一些\n事,对我们的成长是有好处的,关键还是在于自我平时对一\n些事情的处理和总结,不管自我以后走到那里这个都是必须\n的,在工作的时候可是分的依靠师傅而自我不去动手,不去\n想。如果是这样的话,你永远不会得到提高,只能在社会的\n竞争中被淘汰,在工作中要不断的学习积累,完善自我,而\n不是得过且过。 要能做别人不能做的事, 吃别人不能吃的苦,\n有苦以后才能有甜。\n"
- },
- {
- "content": "记对于刚出来的我们来说,刚步入社会年轻好胜,心理\n比较浮躁都是在难免的,因为我们刚从学校里出来什么都不\n明白,不明白社会是个什么样貌,总是怀着好奇的心理去接\n触一下,总是想现实会像想象中的那么的好,可是往往会出\n乎人的意料,什么样的事情都会发生。什么样的结果都是难\n以预料的,自我的前途仍旧是一片黑暗,而我感觉到有种认\n识最可悲的,那就是出来不能够正确的认识自我的地位,拿\n不定主张, 没有主见的人, 往往经受不一点诱惑或者是打击。\n这样的人在处理事上头优柔寡断,到最终往往受伤最重的还\n是自我,正所谓当断不断,反受其乱。这就需要我们在以后\n的人生的道路上把握住方向,选择自我想要,所感兴趣的。"
- },
- {
- "content": "每个星期都有不一样事在我的身边发生,回头想想那些\n事,总是有些值得自我去学习回忆的,也许这些东西会和我\n在一齐,永远埋在我的脑海里。当年纪老的时候说不定想起\n这些事,那时候就会茫然的一笑,感觉那时候的我真的很幼\n稚,年轻,跟本就不明白什么,就明白成天在外面瞎混。说\n到这些感觉自我此刻有些远了,还是说此刻的我吧!自我已\n经出了学校,不在像以前那样的单纯了,感觉到自我的肩上\n的担子好重,在往后接踵而来的不仅仅是工作上的烦恼,生\n活上,家庭里的就慢慢的累积到自我的身上。也就是说在不\n知不觉中自我已经长大了不在以前那个动不动就爱哭,流鼻\n涕的那个小男孩了。也许这就是我在实习中的认识,要是没\n有这样的经历,估计我还没有那么深刻的认识。"
- },
- {
- "content": "时间过的真快啊!一转眼几个月的实习时间快过了。快\n要回学校了,我真是期待了好久,好想回学校重温一下那时\n在学校的感觉。天渐渐的冷了,但我热情仍旧没减,我对工\n作的热心仍旧还在。干了一段时间多少不等对自我此刻的工\n作也有些了解。不管此刻也好将来也罢,最重要的还是自我\n对工作的心态,如何控制好自我的心态是一个重要的问题。\n初此之外,还要靠自我的努力,自我能多学一点是一点,呀\n哦居安思危,要不断的独立思考,去发现问题,解决问题,\n提高自我的本事,发展自我的潜能,争取做到别人不会做的\n事,自我能够做出来。还要勤奋的动手,多亲手去做做,提\n高自我的实战经验。这样才能在社会上立于不败之地。\n"
- },
- {
- "content": "经过这次的实习,我对自我的专业有了更为详而深刻的\n了解,并且把它结合实际的经济生活中。应对许多十分棘手\n又无奈的问题,经过过去大学里所积累知识的,是远远不够\n的,因为那只是理论而已,我体会到了实际的工作与所学知\n识是有必须距离的,与应用知识的距离就更为遥远。今后需\n要针对处于实际环境进一步学习相关的知识。异常关注此刻\n的趋势,也许别人机会当作陷阱,可是自我必须要理智。我\n感到对自我感触最深的是, 提高自我交际本事, 跟别人合作。\n这段的实习时间虽然暂时的告一个段落,可是它留在我的是\n宝贵的经验,而不是一个简单的实习而已。我也会深深的感\n激学校能在毕业之前能够有一次这样的实习机会。"
- },
- {
- "content": "这周又恢复了平静,刚交了图,师傅也简便了一下,今\n日就看着没那么忙了,我就赶紧问了问师傅上一套住宅楼的\n关于防雷接地的一些我不明白的地方。师傅给我做了耐心的\n讲解。我顿时有种豁然开朗的感觉,自我看了好几天都不明\n白的问题,经师傅一点就明白了。真是感触颇深啊!我也要\n好好努力。\n"
- },
- {
- "content": "这周因为前两套图还没有彻底弄明白,师傅没有给我新\n的图纸,说让我这两天把前两套图纸都好好整理一下,把不\n明白的地方都统一做好标记或写在本上。明天给我集中处理\n一下,让我必须要认真看,尽量详细。于是在周末我开始了\n一天的看图,总结,记录问题工作。\n"
- },
- {
- "content": "我最终明白什么叫看着容易做起来难,我昨日画了一天\n的图,结果也没画多少,总是画了改,改了画,画了再改。\n前段时间看图纸的时候觉得都挺简单的,感觉要让我画肯定\n没问题,结果自我一动手就明白根本不是那么回事,看来这\n是一个大工程啊!\n"
- },
- {
- "content": "实习就快要结束了,今日是这张图的最终一部分,弱电\n的设计,由于设计院对弱电的要求都不高,都只是布一些信\n息点和信息插座什么的,具体的都是施工时视情景而定。所\n以弱电的图纸要求也不太高,师傅就只让我简单的做了整体\n设计。没有很详细。\n"
- },
- {
- "content": "经过这次综合实训的操作,使我比较系统地了解了制图\n基本程序和具体方法,加强了我在实习岗位上的实际操作本\n事,对所学的专业知识进行综合检验。同时也学会了人际交\n往,沟通方式及相关礼节方面的资料。这段实习时间,虽然\n很快就过去了,但学到的东西可不少,如何快速的适应公司\n的环境,融入企业的团体,如何更好的跟同事沟通,更好的\n完成既定的任务,这些都不是信手拈来的,都需要一个逐步\n的从点到面的认识,今日我学到的所有这些都是书本课堂上\n学不到的。\n“千里之行,始于足下”,这短暂而又充实的实习,我\n认为对我走向社会起到了一个桥梁的作用,过渡的作用,是\n人生的一段重要的经历,也是一个重要步骤,对将来走上工\n作岗位也有着很大帮忙。向他人虚心求教,与人礼貌交往等\n一些做人处世的基本原则都要在实际生活中认真的贯彻,好\n的习惯也要在实际生活中不断培养。这一段时间所学到的经\n验和知识是我一生中的一笔宝贵财富。这次实习也让我深刻\n了解到,和团体坚持良好的关系是很重要的。做事首先要学\n做人,要明白做人的道理,如何与人相处是现代社会的做人\n的一个最基本的问题。对于自我这样一个即将步入社会的人\n来说,需要学习的东西很多,他们就是最好的教师,正所谓\n“三人行,必有我师”,我们能够向他们学习很多知识、道\n理。\n实践是学生接触社会,了解社会,服务社会,运用所学\n知识实践自我的最好途径。亲身实践,而不是闭门造车。实\n现了从理论到实践再到理论的飞跃。增强了认识问题,分析\n问题,解决问题的本事。为认识社会,了解社会,步入社会\n打下了良好的基础。同时还需我们在以后的学习中用知识武\n装自我,用书本充实自我,为以后服务社会打下更坚固的基\n础!"
- },
- {
- "content": "到了这一周说说我的感想最深刻的还是交际方面的。像\n我一个人在外面, 生活确实不容易。 俗话说的好在家靠家人,\n出门靠朋友。 出来交朋友是十分重要的, 而看准人, 看好人,\n交好人是更重要的,在结交新朋友之前要研究好这个人是否\n值得自我去交,看准人是交朋友的一个重要条件,看好人则\n是交朋友的一个中心环节,交好人则是最简单的了。我的公\n司虽然不怎样大,可是有几个人就有几种不一样的社会形\n态。有些时候我都会不禁的发出感慨,也许正因为社会上有\n这些不一样的人,不一样事,不用的物体才能构成这个复杂\n而又无奇不有的社会。社会真是让我感慨万千,如果说社会\n是大海,那我就是一滴水,终究会随着时间的流逝而滚入滔\n滔的大海随波逐流。\n"
- },
- {
- "content": "时间过的真是快啊!不知不觉的将近两个多月了。对于\n刚出学校的我来说生活的点滴都是一个学习的过程,比如说\n自我的日常生活,从学校出来了,什么都要靠自我,刚来厂\n里的时候,自我连做饭都不怎样会,有些时候都煮的不熟,\n正所谓在家里过惯了那中衣来伸手,反来张口的生活。开始\n几次都没做好,可是之后慢慢的适应了,越做越好了,同时\n自我也开始慢慢的学习做菜了,虽然做的不怎样好,可是自\n我还是每一天坚持的去做,相信总有一天会做好的,正所谓\n功夫不负有心人,我坚信总有一天会弄好的。离开了学校,\n怎样样去搞好自我的生活也是一个重要的过程。也是有很多\n地方值得自我去学习的,生活中处处能够学习,只要你去用\n心。\n"
- },
- {
- "content": "铁架子,放在里面来增加的它的强度,以防被什么大型\n机器从上头走的时候压坏了,我看着师傅做,便好奇的问你\n为什么不做成和扳子一样大的架子呢?师傅起初并没有告\n诉我为什么这样做,我一向带着这样的疑问。之后和他一齐\n浇的时候才发现,如果和它弄成一样大的话结果就放不进\n去,或者说以后弄出来,边上就会不平齐,不仅仅外观上头\n不怎样好看,并且有些时候不注意的话,他人从它旁边经过\n的会弄伤其他人。这个虽然简单,也许在书上的时候大家都\n会说,但你一旦在真正实践的时候就会想不到, 仅有实践了,\n才能更深的体会。\n"
- },
- {
- "content": "实习的时间长了,学到的东西多了,自我的生活也渐渐\n好了,每一天都有新鲜的趣事,想起实习前的茫然无措,此\n刻我也能从容的开始新生活。人可能往往就是如此,因为未\n知所以感到恐惧,因为从未尝试,所以不敢尝试,可是如果\n没有第一个吃螃蟹的人,谁又能明白螃蟹多么鲜美呢?\n在第十周,我突然就有了这样的感慨,因为师父又给了\n我一个新的任务,接任务时突然想起在对找工作的胆怯,害\n怕失败,只想缩在安全的乌龟壳里,可我还是勇敢的跨出了\n第一步。有了第一次的尝试,无论成功或者失败,第二次就\n不会太远。\n因为有了一次次失败的经验,我最终得到了成功。我也\n从中明白了一个道理,不要胆怯,也不要害怕失败,就算是\n完完全全陌生的事情,努力尝试过才明白自我有没有那个本\n事,仅有在尝试、失败、积累经验中不断提升自我,才会获\n得成功。\n"
- },
- {
- "content": "由于与老员工之间相处的越来越好,于是在工作上也给\n我带来了很多的便利。他们很耐心的给我讲解了一些工作上\n的注意事项,以及他们多年来的工作经验。我们不得不承认\n好的人际关系对我们自身的反正来说存在着重要的意义。不\n仅仅是个人也好还是企业也好,仅有在良好的人际关系下才\n会有良好的合作。良好的合作往往有助于我们工作的高效完\n成。能让我们事半功倍而不是事倍功半。这些体会都是在实\n习过程中所得到的,我最终明白在我们真正踏入社会之前为\n什么要进行实习。因为学校所教与我们的知识毕竟有限,仅\n有在实际的工作中我们才能学到更多的知识及体验。而这些\n体验是我们花再多的钱也不能购买的。因为这是只属于我们\n自我的,不会随着时间的流逝而被遗忘。"
- },
- {
- "content": "工作中,我们难免会犯错所以挨骂也是在所难免的。当\n这件事发生在我的身上的时候我才深刻体会到解释就是找\n理由,据理力争是没有用的。你对领导解释得越多结果就会\n变得更糟,所以主动承认错误是关键。由于认错态度良好于\n是领导也就随便骂骂也就算了。我们常常会做错事,也常常\n会被误解。在工作中不管我们是犯错还是被误解,我们首先\n要做的不是跟上级阐述我们犯错的理由首先要做的是承认\n错误。当被误解的时候我们不要忙着去解释,当领导处于愤\n怒之时,过多的争论只会让事情往更加恶劣的情景发展,倒\n不如听他说完然后道个歉。其实对于我们来说认错只可是是\n一件很简单的事情。并且关于误解,总会随着时间的的推移\n而水落石出的。所以没必要和上级激励力争,因为你们之间\n本来就是不平等的!\n"
- },
- {
- "content": "幸好上次的错误没有给领导留下太多的坏的印象,由于\n这阵子的工作完成的还算是比较好,于是领导在大家面前夸\n奖了我,也算是这阵子辛勤工作的回报吧。所以下班的时候\n觉得心境异常舒畅。我想这也许就是为什么马斯洛把自我价\n值的实现放在人类需要的最顶端的原因吧。每个人都需要自\n身的价值被肯定,当我们的价值得到实现的时候我们就会觉\n得愉悦,而当我们的不能得到他人的认可的时候我们就觉得\n难过。虽然这只是一个小小的夸奖, 但对于一个实习生来说,\n能在众多的老员工之间得到夸奖也算是小有成就感吧。因为\n不是我们所做的努力都是能够被人们所认可的,这就是为什\n么那么多人不能得志的原因。可是我相信上帝都是公平的,\n我们的努力必须能够得到回报的除非我们所做的努力还不\n够多。所以,不要放弃的太早不走下去你不明白你接下来遇\n到的是什么。\n"
- },
- {
- "content": "这一周我们的工作比较忙,大部分的时间里我们都是在\n加班。加班的时间多了工人的工资也就比较高了。虽然很累\n可是大部分的员工还是很高兴,也许对于我们这些刚出社会\n的人来说不太能够理解。在加班的过程中和一位老员工闲\n聊,在闲聊的过程中我得知原先他已经在这个厂里面工作了\n7、8 年。我很冒昧的问了他一个问题:为什么,在那里工作\n了那么多年还是一个普通员工。他没有责备我如此唐突。而\n是跟我说:那也没办法大字都不认识几个呢,怎样能去做那\n些工作呢?我突然觉得知识是多么的重要,虽然我们不能说\n一个人的学时就代表了一个人的本事,可是在如此功力、竞\n争如此大的社会。在必须的程度上一个人的学历代表着一个\n人的水平。因为没有企业有时间、并且愿意花时间去验证你\n到底有没有本事。所以只能经过一个人的学历来确定了。第\n一次觉得原先知识是那么的重要。"
- },
- {
- "content": "相比上一周,这一周的工作就稍微简便一点了也没有忙\n了。所以下班以后我们就有了更多的时间做自我的事情了,\n一般在下班的时候我们都会选择去运动运动。尽管上班也有\n点累了,可是至少能做一些自我喜欢做的事情也算是一种放\n松的方法。突然在运动中觉得学校的生活已经离我们越来越\n远了,好好像从来没有如此的怀念过我们的学校生活。当我\n们还在学校的时候我们曾拼命的想要逃离我们的学校生活\n可是真正步入社会以后才能明白,学校的生活是我们一生中\n最完美的时光。在上学的时候我们常常觉得压力很大,可是\n此刻才明白原先上学所带给我们的压力是人一生中所有的\n压力中最小的一部分。不得不说一句很俗的话:每个人都是\n这样,仅有在失去的时候才会觉得可贵"
- },
- {
- "content": "由于学校还有一些重要的事情要做的的原因,这个星期\n我们领导给我们批了几天假让我们回去学校处理一些事情。\n当我们走进学校,那种熟悉的感觉迎面而来。这种熟悉的感\n觉让我们每一个人都觉得心境异常的愉悦。虽然以后还不明\n白还有多少次机会踏进我们的学校,可是每个人都要成长,\n而成长中总伴随着得到与失去。所以我们不应当只看到自我\n失去的那部分,而忽略了自我得到的那一部分。还记得刚上\n大学的时候对这个学校的种种嫌弃。突然想起一句话:学校\n就是自我在心里骂一千遍但不允许别人骂一遍的地方。对\n啊,我们总是对我们的母校带着如此复杂的感情。我们很快\n就办完事情在学校多呆了一天以后我们就回到了工作的地\n方。不明白为什么的,从学校回来突然觉得好像觉得没有那\n么的累了⋯⋯\n"
- },
- {
- "content": "不知不觉中,来那里实习已经快两个月了,虽然时间已\n接近两个月,对工作也是越来越熟悉,可是有时还是会觉得\n力不从心。并且也失去了刚开始来实习的那种兴奋与好奇,\n觉得心境总是处在低谷当中,总是振奋不起来。在和领导的\n偶然闲聊的时候他很友好的跟我说:只要我用心地做,就会\n左右逢源。越做越觉乐趣,越做越起劲。听他说完顿时觉得\n茅塞顿开。有人说过:凡职业都具趣味味的,只要你肯干下\n去,趣味自然会发生。切忌不要粗心大意,马虎了事,心浮\n气躁。做任何事都一样,需要有恒心、细心和毅力,那才会\n到达成功的彼岸!对啊,每个职业都会有它的趣味所在的,\n像我之前所说的不走下去,我们不明白接下来会遇到什么。\n所以耐心等候吧。\n"
- },
- {
- "content": "在上一周和领导的闲聊之后,在这一周我反省了一下这\n阵子的工作状态。我突然意识到与其自怨自艾还不如干些别\n的事情来充实自我,于是我主动要求在空闲的时间去帮帮别\n的部门的忙。一方面我能够打发打发自我的时间,让自我变\n得充实而不至于自我的觉得生活无趣。另一方面,既然我们\n实习是为了学到更多的知识那就趁着实习的期间尽可能的\n去不一样的部门感受一下不一样部门的工作。也许这样对我\n们真正踏上社会的时候也是有所帮忙的。即使是生活无趣,\n其实我们也是可\n以让它变得趣味的。其实大部分的原因不在于生活,而\n是取决于我们带着怎样样的心态去看待生活。"
- },
-{
- "text": "未来的路太长总有一段路需要自己独行。专升本之路也是如此,通过最近几周的学习逐渐感受到升本之路的艰辛,不过没关系,坚持就是胜利,升本人加油呀! "
-},
-{
- "text": "最近看的一本书写到:白发无凭吾老矣!青春不再汝知乎?年将弱冠非童子,学不成名岂丈夫? 这更加使我坚定了专升本的决心和毅力,新的一周又开始了 大家加油! "
-},
-{
- "text": "一转眼又到了写周记的时候了,还是送上一句话:青春啊,永远是美好的,可是真正的青春,只属于这些力争上游的人,永远忘我劳动的人,永远谦虚的人。保证自己永远的谦逊,然后多学习,在升本途中,能够锻炼自己自学的能力,也能够提升自己的学历,这是双赢,未来希望能成为更好的自己。 "
-},
-{
- "text": "这一周的学习任务其实并没有之前那么的难了,到目前为止现在已经是第三轮复习了,这句话送给大家:任何新生事物在开始时都不过是一株幼苗,一切新生事物之可贵,就因为在这新生的幼苗中,有无限的活力在成长,成长为巨人成长为力量。 "
-},
-{
- "text": "吾人在世,不可厌“今”而徒回思“过去”,梦想“将来”以耗误“现在”的努力。又不可以“今”境自足,毫不拿出“现在”的努力,谋“将来”的发展。宜善用“今”,以努力为“将来”之创造。 "
-},
-{
- "text": "共勉:愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声。有一分热,发一分光。就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。 "
-},
-{
- "text": "年轻要有朝气,青年的朝气倘若消失,前进的好奇心衰退,人生就没有意义。坚持就是胜利~ 一起加油吧 "
-},
-{
- "text": "青春并不是生命中一段时光,它是心灵上的一种状况。它跟丰润的面颊,殷红的嘴唇,柔滑的膝盖无关。它是一种沉静的意志,想象的能力,感情的活力,它更是生命之泉的新血液。 "
-},
-{
- "text": "真正希望过“很宽阔、很美好的生活”,就创造它吧,和那些正在英勇地建立空前未有的、宏伟的事业的人手携手地去工作吧。在生活中,堆积了许多美好的、实际的工作,这些工作会使我们的土地富饶,会把人从偏颇、成见和迷信的可耻的俘虏中解放出来。 "
-},
-{
- "text": "没有狂风和暴雨的吹打,哪来果实的的成熟;没有刺骨的寒风,哪来坚韧的松柏;没有冰天雪地;哪来傲骨的梅花。彼得逊说过:人生中,经常有无数来自外部的打击,但这些打击究竟会对你产生怎样的影响,最终的决定权在你自己手中。 "
-},
-{
- "text": "有些话,适合藏在心里,有些痛苦,适合无声无息的忘记。当经历过,你成长了,自己知道就好。很多改变,不需要你自己说,别人会看得到。 "
-},
-{
- "text": "也许你听过一首歌,歌词是“不抛弃,不放弃”;也许你攻克难题时,老师会对你说:“快解出来了,不要放弃”;也许在长跑时,你会对自己说:“坚持一下就到终点了,不能放弃”。但是,我要告诉你,学会放弃不需要的东西。加油啊!!! "
-}
\ No newline at end of file
diff --git a/config/__init__.py b/config/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/config/__pycache__/__init__.cpython-310.pyc b/config/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4da91f9eb869fe04bbb78f664ce97bdb85d0fc40
GIT binary patch
literal 125
zcmd1j<>g`k0@mJ)R1p0bL?8o3AjbiSi&=m~3PUi1CZpd2KczG$)efYymg`k0@mJ)R1p0bL?8o3AjbiSi&=m~3PUi1CZpd2KczG$)efZdGY~TX0ExmGNdN!<
literal 0
HcmV?d00001
diff --git a/config/__pycache__/info.cpython-310.pyc b/config/__pycache__/info.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3e6f8d7f9711941d93b77cf3947b08ac06895c03
GIT binary patch
literal 657
zcmYjP!HU#C5UuKT);Mlf-QyzO6myvm5D`Ha5o9iN5W_$-Bt0>ZNn$5qc7|OM*UREz
zFNz4O%w7Z!vfdQgfAHQ{nc#eaUbH%+l7cR(Uv<5HRo$8Ec7W{Xw^%+zfbVA0Hj6g5
zXcd>qg%Dx_WAqW>E`%(!o2+wl%=w|N|)3J
zFY2SOi^I?L{B&`8xP1BM$H~dH#h3T>(ZTZVyZY6q#mCp4cSc*0EVW&fD$bQnh1!bK
zQmvWj?DkF|^D@p-Wg7A<%?p`~6gNp6eE{WB^y|`{>w_puqn%1lt8@@#=_rl{W)9ta
zsvSWiiAy02d9gw60y5mf4Rp|X%6`vWGrjJ=Q$5c%CFyW1h0q-###vY;CSDifaWzc-
zW_TC}r8-Y^jfj>rS12=dBeO8hflX|Xo@eklLUq`CkA
literal 0
HcmV?d00001
diff --git a/config/__pycache__/info.cpython-39.pyc b/config/__pycache__/info.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0eee6757bda135bf235b556fa45b12c63b1758ce
GIT binary patch
literal 1564
zcmZux&u<$=6rR~1-u2o}lN^wM5`w@ei_|EUI8+v@A{7diz#K}2;s%Yjp0U|6>
z8<(1cOHIDqywPfY)N0<0T~p~5a*$}_+hr!;i59(q?$mB6Az8P`duhLmF3%SiI_uEX
z+W>-eC?_3<(~c`V?i^9P$br}Kxz8&Hq*DQF0M?LK!5Z)gu2D1Ijl5Tkm)>n{_KUo~
zGZMR_d~@{F>FSm$@|c<^EBa~9QkdO!z};EFGho=SK~sMMOz0FsJEK!NBNM`$@shPT
z|5;q^O~{tJPbvA7M{%%gmo*`_a@8|o$3)6rkX*dOByMiNX<|_CKNd@nXikxA~%6eL&{As%n}Gaj~9*G
z7a$U)Wjd4r97Toz#!Yi=s_*S|#Zae3ZWc8
z=sb0x%|VTzE?Gnt(K^&|1EsinwysNY&69#0n^l#@BlN0Eh;iZBb6S!`%n&;TwC-#F;u8
z6g~APp!t1hsA^6;sQd7UQ%7Cg=Sam9GW
z5ONQ{TQ|vAFU^GUw`Hn@ap9cC!{5>Pd^8xU*e$QR3@4K>BVb<6UAmzQrjmOo0NCtx
z7*rTLLKo?H(O&+U3GFz-_Qfc%uNh;q30oMCr(G?VfJ%(1d<)^J
zf6FlP5?@_Zn!-qi)N|$*L(f{{K(2tz1fWlNTl%JUCsAqlntklxVQOFh*i=F9AHp!`
g_63-0*ZrRx6TVZ5{VK{tp`b$=x)F6ASDeWG7oJ6q5&!@I
literal 0
HcmV?d00001
diff --git a/config/info.py b/config/info.py
new file mode 100644
index 0000000..d9ef3f8
--- /dev/null
+++ b/config/info.py
@@ -0,0 +1,39 @@
+import json
+import logging
+
+# log basic
+logging.basicConfig(format="[%(asctime)s] %(name)s %(levelname)s: %(message)s", level=logging.INFO,
+ datefmt="%Y-%m-%d %I:%M:%S")
+config_module_log = logging.getLogger("User_config")
+
+
+class Info:
+
+ def __init__(self, login_info, path):
+ self.password = login_info.get("password").strip()
+ try:
+ self.phone = login_info.get("phone").strip()
+ int(self.phone)
+ except Exception as f:
+ config_module_log.info("手机号格式错误(带有非数字)")
+ config_module_log.error(f)
+ exit(-1)
+ self.address = login_info["address"]
+ self.latitude = login_info["latitude"]
+ self.longitude = login_info['longitude']
+ self.start_time = login_info['start_time']
+ self.end_time = login_info["end_time"]
+ self.token = login_info.get("token")
+ self.user_id = login_info.get("user_id")
+ self.plan_id = login_info.get("plan_id")
+ self.city = login_info['city']
+ self.province = login_info['province']
+ self.path = path
+
+ def __str__(self):
+ return "user config"
+
+ # save local
+ def to_save_local(self, arg: dict):
+ with open(self.path, 'w', encoding="UTF_8") as f:
+ f.write(str(json.dumps(arg)))
diff --git a/createSign/__init__.py b/createSign/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/createSign/__pycache__/__init__.cpython-39.pyc b/createSign/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2a3222979a2e232b3d2e10d4634f31977c4fe6d3
GIT binary patch
literal 127
zcmYe~<>g`k0;y+NsUZ3>h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2D7#VRH}KQFza
wG_|rcFDAJtHL)Z$I5RyjCO$qhFS8^*Uaz3?7Kcr4eoARhsvSu8XCP((05PB&OaK4?
literal 0
HcmV?d00001
diff --git a/createSign/__pycache__/sign.cpython-39.pyc b/createSign/__pycache__/sign.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b08d05e65fe6a9712076ab5ebce5bb568b8decc7
GIT binary patch
literal 373
zcmYjMu};G<5Vd1d3Z)AR5(6q@mJ%r~DF`73B(^TyqDYaGbE87zRCXc}sT+I-18ne1
zS(*3+CeCS*deXh~JD=bAiGKf(U|gI($xp1`mh1*Ya))Wo5P$$(lAMN=66t{RMu7o;
zE!)l!slw#Zau5QeL|>1}$k<@Q6yiV><05T`B=PeHamwswZw8l%O{US>+&
YPPZF(pob%7
literal 0
HcmV?d00001
diff --git a/createSign/sign.py b/createSign/sign.py
new file mode 100644
index 0000000..b96a8be
--- /dev/null
+++ b/createSign/sign.py
@@ -0,0 +1,7 @@
+from decryptencrypt.encrypt_md5 import md5_encrypt
+
+
+def create_sign(*args) -> str:
+ return md5_encrypt(''.join(args) + "3478cbbc33f84bd00d75d7dfa69e0daa")
+
+
diff --git a/decryptencrypt/__init__.py b/decryptencrypt/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/decryptencrypt/__pycache__/__init__.cpython-39.pyc b/decryptencrypt/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b01d3a5b81eae43e1a6e4d3738249dcd349546fd
GIT binary patch
literal 131
zcmYe~<>g`kf@z%@sUZ3>h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2D5#VRH}KQFza
wG_|rcFD4~5xu~+BBsC9A#l**F=4F<|$LkeT-r}&y%}*)KNwou+@EM310LzpeXaE2J
literal 0
HcmV?d00001
diff --git a/decryptencrypt/__pycache__/encrypt.cpython-39.pyc b/decryptencrypt/__pycache__/encrypt.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e2dee54ae469d2d0692d7b92ebc757bab78fa179
GIT binary patch
literal 504
zcmYjOO;5r=5Z#X!5WyG^o;);OOg&(N!9!z=3M2%hL5Y`!gp}^45NK((OF|8t@Mn0?
zqkpMaPyPi@&bHMs$-K?Z$9uE0PPJM_V5`F^?_z|$)MeW!T&}^RV*rL2o*^IG7$Zh(
z!YQL~m}yLZ)ohIw`p7JPLme`4a&Xh`x0|=UyJo-9a~PWhp1of`Z;j+*=c)dDKk8ig
zU8pMvE*BzjLHys8s0Q8ykB$H&l9=HQS>qLcCz7tv27ll+SrL#VFK1-~%nBXh_y%*N
zV`YJi+A?4ig9omNLzyNLI_67L69lLeI_0rl%+m>tq%disDHgkuM~5;Fxm}TbDTjIJ
z6NwUZ|D3d}fj1Al<$}kHV8D2)k{1o~vlhn5uEV3h=7M^c0;HGm9v12g9!%XnRW;$%
zjT$v)=FP=Kj{T^XHoBuMF$}X^rn3tj8igWCDbk6yUC&IG#f)F61xISD6{68!
DxMh43
literal 0
HcmV?d00001
diff --git a/decryptencrypt/__pycache__/encrypt_md5.cpython-39.pyc b/decryptencrypt/__pycache__/encrypt_md5.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ad8e5ad6082df3a57e93cf256392b1ea2d524e73
GIT binary patch
literal 351
zcmYjMJxjzu5S`s5Uhd>Ne?U43qMaZ?M9|vC?g$)fW=&4=#by^ShhXE+u*jAErERV3
zt*o4lDeet3Z$5alJ7T$90O9TDMSc)}x#AF|j5y?0nKWRDR0-!y@T
zj5(U%@__t~d{k-}*eeVi*`93h_CQL$J6%MCq!mh35ehAm|Avyb~2?n>ybb*_%2=nW?_j
yBy*Hbyrx|jZEuf>*Hh1TUw79-pym`~u3R str:
+ """
+ :param data:
+ :return: AES encrypt
+ """
+ decrypt_type = AESECBPKCS5Padding(key, "hex")
+ text_decrypt = decrypt_type.decrypt(str(data))
+ return text_decrypt
+
+
+if __name__ == '__main__':
+ print(aes_decrypt(''))
diff --git a/decryptencrypt/encrypt.py b/decryptencrypt/encrypt.py
new file mode 100644
index 0000000..fd9f26f
--- /dev/null
+++ b/decryptencrypt/encrypt.py
@@ -0,0 +1,14 @@
+from aes_pkcs5.algorithms.aes_ecb_pkcs5_padding import AESECBPKCS5Padding
+
+key = '23DbtQHR2UMbH6mJ'
+
+
+def aes_encrypt(data) -> str:
+ """
+ :param data:
+ :return: AES encrypt
+ """
+ encrypt_type = AESECBPKCS5Padding(key, "hex")
+ text_encrypt = encrypt_type.encrypt(str(data))
+ return text_encrypt
+
diff --git a/decryptencrypt/encrypt_md5.py b/decryptencrypt/encrypt_md5.py
new file mode 100644
index 0000000..e30ca45
--- /dev/null
+++ b/decryptencrypt/encrypt_md5.py
@@ -0,0 +1,9 @@
+import hashlib
+
+
+def md5_encrypt(data):
+ """
+ :param data:
+ :return: md5
+ """
+ return hashlib.md5(data.encode("utf-8")).hexdigest()
diff --git a/local_clock.py b/local_clock.py
deleted file mode 100644
index d747aad..0000000
--- a/local_clock.py
+++ /dev/null
@@ -1,306 +0,0 @@
-import calendar
-import copy
-import hashlib
-import json
-import random
-import time
-
-import requests
-from aes_pkcs5.algorithms.aes_ecb_pkcs5_padding import AESECBPKCS5Padding
-
-"""
-author:rsp
-"""
-headers = {
- 'Host': 'api.moguding.net:9000',
- 'accept-language': 'zh-CN,zh;q=0.8',
- 'user-agent': 'Mozilla/5.0 (Linux; U; Android 9; zh-cn; SM-G977N Build/LMY48Z) AppleWebKit/533.1 (KHTML, like Gecko) Version/5.0 Mobile Safari/533.1',
- 'authorization': "",
- 'rolekey': "",
- 'content-type': 'application/json; charset=UTF-8',
- 'content-length': '161',
- 'accept-encoding': 'gzip',
- 'cache-control': 'no-cache'
-}
-
-with open('./basic_info/user.txt', 'r', encoding='utf-8') as f:
- user_info = f.read()
- user_info_json = json.loads(user_info)
- phone = user_info_json['phone']
- password = user_info_json['password']
- local_all = user_info_json["地址全称"]
- latitude = user_info_json["纬度"]
- longitude = user_info_json["经度"]
- start_time = user_info_json["start_time"]
- buqian = user_info_json["buqian"]
- requirement_week_num = user_info_json["requirement_week_num"]
- weekly = user_info_json["weekly"]
- remedy = user_info_json["remedy"]
- end_time = user_info_json["end_time"]
- province = local_all[:local_all.find('省') + 1]
- city = local_all[local_all.find('省') + 1:local_all.find('市') + 1]
-print(phone, password, local_all, latitude, longitude, province, city, "\n早上打卡时间{}".format(start_time),
- "\n晚上打卡时间{}".format(end_time), "\n是缶提交周报{}".format(weekly))
-
-
-def time_shift(date):
- """
- :param time:
- :return: 将时间转成时间戳
- """
- time_array = time.strptime(date, "%Y-%m-%d %H:%M:%S")
- time_stamp = int(time.mktime(time_array))
- return time_stamp
-
-
-def aes_encrypt(data):
- """
- :param data:
- :return: AES encrypt
- """
- key = '23DbtQHR2UMbH6mJ'
- encrypt_type = AESECBPKCS5Padding(key, "hex")
- text_encrypt = encrypt_type.encrypt(str(data))
- return text_encrypt
-
-
-def md5_encrypt(data):
- """
- :param data:
- :return: md5
- """
- return hashlib.md5(data.encode("utf-8")).hexdigest()
-
-
-def this_month_conunt(planid):
- """
- :param planid:
- :return: 未打卡的日期
- """
- # 深拷贝
- header = copy.deepcopy(headers)
- header.pop("sign")
- # 获取当前月的起始和结尾
-
- month = time.strftime("%Y-%m-", time.localtime())
- start_time = month + '01'
- print(month.split("-")[0])
- end_time = month + str(calendar.monthrange(int(month.split("-")[0]), int(month.split("-")[1]))[1])
- print(start_time, end_time)
- data = {
- "pageSize": "10",
- "planId": planid,
- "endTime": f"{end_time} 23:59:59",
- "startTime": f"{start_time} 00:00:00",
- "currPage": "1"
- }
- rsp = requests.post('https://api.moguding.net:9000/attendence/clock/v1/list', headers=headers,
- data=json.dumps(data)).json()
- login = rsp["data"]
- clock_in_count = []
- for i in login:
- date = int(i["dateYmd"].split("-")[-1])
- if clock_in_count.count(date) > 0:
- continue
- else:
- clock_in_count.append(date)
- print(clock_in_count)
- day = int(time.strftime("%d", time.localtime()))
- not_clock_in_day = day - len(clock_in_count)
- print(time.strftime("%m", time.localtime()) + f"月您有{not_clock_in_day}天未签到")
- not_clock_in_date = [i for i in range(1, day + 1) if clock_in_count.count(i) == 0]
- try:
- # 去除今天
- not_clock_in_date.remove(day)
- except ValueError:
- pass
- return not_clock_in_date
-
-
-def get_week_count(plan_id, user_id):
- """
- :param plan_id:
- :return: 提交周报次数
- """
- sign = md5_encrypt(user_id + 'studentweek' + "3478cbbc33f84bd00d75d7dfa69e0daa")
- headers.update({"sign": sign})
- data = {"reportType": "week", "currPage": "1", "pageSize": "10", "planId": plan_id}
- rsp = requests.post(url='https://api.moguding.net:9000/practice/paper/v2/listByStu', headers=headers,
- data=json.dumps(data)).json()
- return int(rsp['flag'])
-
-
-def get_weeks(plan_id):
- """
- 获取去年该月到该月周的时间段
- :param plan_id:
- :return: 当前周和前19周的时间段
- """
- rsp = requests.post(url="https://api.moguding.net:9000" + '/practice/paper/v1/getWeeks1', headers=headers,
- data=json.dumps({"planId": plan_id})).json()
- return rsp['data'][:20]
-
-
-def submit_week(url, plan_id, user_id):
- """
- 提交周报
- :param url:
- :param plan_id:
- :param user_id:
- :return:
- """
- # week_end = datetime.datetime.now()
- # week_start = (week_end - datetime.timedelta(days=6)).date()
- # 上面comment的为备用方案,防止API挂了
- weeks = get_weeks(plan_id)
- week_start = weeks[0]["startTime"]
- week_end = weeks[0]["endTime"]
- # # 已提交周报个数
- total = get_week_count(plan_id, user_id)
- # # 第几周的周报
- nowweek = total + 1
- with open(r'./basic_info/week_diary', 'r',
- encoding="utf-8") as f:
- text = f.read()
- division = text.split(',')
- content = json.loads(division[int(nowweek) - 1])["content"]
- data = {
- "yearmonth": "",
- "address": "",
- "t": aes_encrypt(int(str(time_shift(week_end)) + "000") - 3600),
- "title": "周报",
- "longitude": "0.0",
- "latitude": "0.0",
- "weeks": f'第{str(nowweek)}周',
- "endTime": f"{str(week_end)}",
- "startTime": f"{str(week_start)}",
- "planId": plan_id,
- "reportType": "week",
- "content": content
- }
- week_sign = user_id + "week" + plan_id + "周报" + "3478cbbc33f84bd00d75d7dfa69e0daa"
- if remedy:
- # 补交周报
- not_submit_week = weeks[:requirement_week_num + 1]
- not_submit_week.reverse()
- for i in not_submit_week:
- time.sleep(30)
- after_week = get_week_count(plan_id, user_id) + 1
- headers.update({'sign': md5_encrypt(week_sign)})
- week_end = i["endTime"]
- data["t"] = aes_encrypt(time_shift(week_end) - 36000 + 1000)
- data["startTime"] = i['startTime']
- data["endTime"] = week_end
- data["weeks"] = f'第{str(after_week)}周'
- data["content"] = json.loads(division[int(nowweek) - 1])["content"]
- rsp = requests.post(url="https://api.moguding.net:9000" + url, headers=headers, data=json.dumps(data))
- print(rsp.text)
- else:
- headers.update({'sign': md5_encrypt(week_sign)})
- print("开始写周报")
- rsp = requests.post(url="https://api.moguding.net:9000" + url, headers=headers, data=json.dumps(data))
- print(rsp.text)
-
-
-def clock_in(url, plan_id, user_id, state):
- """
- 阻塞10-30s后打卡
- """
- print('开始打卡')
- time.sleep(random.randint(10, 30))
- local_all = user_info_json["地址全称"]
- address = local_all
- province = local_all[:local_all.find('省') + 1]
- city = local_all[local_all.find('省') + 1:local_all.find('市') + 1]
- post_sign = "Android" + state + plan_id + user_id + address + "3478cbbc33f84bd00d75d7dfa69e0daa"
- headers.update({'sign': md5_encrypt(post_sign)})
- data2 = {"device": "Android", "address": address,
- "description": "", "country": "中国", "longitude": user_info_json["经度"], "city": city,
- "latitude": user_info_json["纬度"],
- "t": aes_encrypt(int(time.time() * 1000)),
- "planId": plan_id, "province": province, "type": state}
- if buqian:
- for i in this_month_conunt(plan_id):
- # 单数日期前面加0如09,08
- if i < 10:
- i = "0" + str(i)
- time.sleep(random.randint(20, 40))
- # 深copy 不影响正常打卡
- buqian_data = copy.deepcopy(data2)
- buqian_data.update({"createTime": f'{time.strftime(f"%Y-%m-{i} %H:%M:%S", time.localtime())}'})
- # buqian_data.update({"createTime": f'2022-10-01 08:25:55'})
- rsp = requests.post(url="https://api.moguding.net:9000/attendence/attendanceReplace/v2/save",
- headers=headers, data=json.dumps(buqian_data))
- print(rsp.text)
- rsp = requests.post(url="https://api.moguding.net:9000/" + url, headers=headers, data=json.dumps(data2))
- print(rsp.text)
- if weekly:
- submit_week("/practice/paper/v2/save", plan_id, user_id)
-
-
-def get_plan(url, user_id):
- data = {
- 'state': ''
- }
- rsp = requests.post(url="https://api.moguding.net:9000/" + url, headers=headers, data=json.dumps(data)).json()
- if rsp.get("code") > 400:
- print(rsp)
- data = rsp["data"][0]
- plan_id = data["planId"]
- # 早晚打卡,判断是否为设置的打卡时间
- if time.strftime("%H", time.localtime()) == start_time:
- clock_in("attendence/clock/v2/save", plan_id, user_id, "START")
- elif time.strftime("%H", time.localtime()) == end_time:
- clock_in("attendence/clock/v2/save", plan_id, user_id, "END")
- else:
- print("还没到打卡时间,请修改配置参数")
-
-
-def save_token():
- """
- 将token和userid存到配置文件中
- :return:
- """
- with open("./basic_info/user.txt", 'w', encoding="utf-8") as file:
- file.write(json.dumps(user_info_json))
-
-
-def main(log_url):
- auto_login = user_info_json.get("token")
- if not auto_login:
- # 请求体
- print('手动登录')
- data = {
- "phone": aes_encrypt(phone),
- "password": aes_encrypt(password),
- "t": aes_encrypt(int(time.time() * 1000)),
- "loginType": "android",
- "uuid": "",
- }
- rsp = requests.post(url=log_url, headers=headers, data=json.dumps(data)).json()
- data = rsp["data"]
- token = data["token"]
- user_id = data["userId"]
- user_info_json.setdefault("token", token)
- user_info_json.setdefault("user_id", user_id)
- # 保存token
- save_token()
- plan_sign = user_id + "student" + "3478cbbc33f84bd00d75d7dfa69e0daa"
- headers.update({"authorization": token, "rolekey": "student", 'sign': md5_encrypt(plan_sign)})
- get_plan('practice/plan/v3/getPlanByStu', user_id)
- else:
- # 提取userid 加密sign
- print('自动登录')
- user_id = user_info_json["user_id"]
- plan_sign = user_id + "student" + "3478cbbc33f84bd00d75d7dfa69e0daa"
- headers.update({"authorization": user_info_json["token"], "rolekey": "student", 'sign': md5_encrypt(plan_sign)})
- try:
- get_plan('practice/plan/v3/getPlanByStu', user_id)
- except Exception:
- user_info_json.pop("token")
- main(url)
-
-
-if __name__ == '__main__':
- url = 'https://api.moguding.net:9000/session/user/v3/login'
- main(url)
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..f915733
--- /dev/null
+++ b/main.py
@@ -0,0 +1,71 @@
+import json
+import logging
+import os
+
+from api.api_all import get_token_userid, get_plan, clock_in, get_attendance_log
+from config.info import Info
+
+# print log config
+logging.basicConfig(format="[%(asctime)s] %(name)s %(levelname)s: %(message)s", level=logging.INFO,
+ datefmt="%Y-%m-%d %I:%M:%S")
+main_module_log = logging.getLogger("main_module")
+# user config file place
+config_file = "./user_config.json"
+path = os.path.dirname(__file__)
+
+
+# get info login info
+def load_login_info() -> Info:
+ with open(config_file, encoding="utf-8") as f:
+ user_info = json.load(f)
+ return Info(user_info, os.path.join(path, 'user_config.json'))
+
+
+# save token
+def save_token_user_id(config: Info, token: str, user_id) -> None:
+ config.token = token
+ config.user_id = user_id
+ with open(config_file, 'w', encoding="UTF_8") as f:
+ f.write(str(json.dumps(config.__dict__)))
+
+
+def login(user_login_info: Info) -> None:
+ # exist token
+ if not user_login_info.token:
+ main_module_log.info("获取 token")
+ get_token_userid(user_login_info)
+ # save token user_id
+ user_login_info.to_save_local(user_login_info.__dict__)
+ main_module_log.info("登录成功")
+ else:
+ main_module_log.info("使用本地token")
+
+
+def plan_id(user_login_info: Info) -> None:
+ # get plan
+ if not user_login_info.plan_id:
+ main_module_log.info("获取plan id")
+ get_plan(user_login_info)
+ else:
+ main_module_log.info("使用本地plan id")
+
+
+def run():
+ main_module_log.info('检测配置文件')
+ # get user login info
+ user_login_info = load_login_info()
+ # login
+ main_module_log.info("开始登录")
+ login(user_login_info)
+ # get plan_id
+ plan_id(user_login_info)
+ # clock in
+ clock_in(user_login_info)
+ # repeat clock in
+ main_module_log.info("开始补签")
+ get_attendance_log(user_login_info)
+
+
+if __name__ == '__main__':
+ main_module_log.info("开始")
+ run()
diff --git a/requirement.txt b/requirement.txt
deleted file mode 100644
index d2bf920..0000000
--- a/requirement.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-requests
-aes_pkcs5
-hashlib
\ No newline at end of file
diff --git a/tast.py b/tast.py
new file mode 100644
index 0000000..e69de29
diff --git a/textHandle/__init__.py b/textHandle/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/textHandle/count.py b/textHandle/count.py
new file mode 100644
index 0000000..755b88d
--- /dev/null
+++ b/textHandle/count.py
@@ -0,0 +1,28 @@
+import logging
+
+# log config
+logging.basicConfig(format="[%(asctime)s] %(name)s %(levelname)s: %(message)s", level=logging.INFO,
+ datefmt="%Y-%m-%d %I:%M:%S")
+text_handle_log = logging.getLogger("text_handle_module")
+
+
+def count_day(datas: dict) -> set:
+ """
+ :param datas: response data
+ :return: clock in date
+ """
+ text_handle_log.info("处理考勤文本")
+ result = set()
+ for data in datas['data']:
+ # data["dateYmd"] = '2023-12-04'
+ date = int(data['dateYmd'].split("-")[-1])
+ result.add(date)
+ return result
+
+
+def run(arg):
+ print(count_day(arg))
+
+
+if __name__ == '__main__':
+ run('')
diff --git a/user_config.json b/user_config.json
new file mode 100644
index 0000000..06e1234
--- /dev/null
+++ b/user_config.json
@@ -0,0 +1 @@
+{"password": "14yhl9TTt", "phone": "13797424039", "address": "\u5c71\u4e1c\u83cf\u6cfd\u66f9\u53bf", "latitude": "34.830624", "longitude": "115.545005", "start_time": "08", "end_time": "21", "token": "eyJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJtb2d1ZGluZy11c2VyIiwic3ViIjoie1wibG9naW5UeXBlXCI6XCJhbmRyb2lkXCIsXCJ1c2VySWRcIjoxMDM4MTc1NTJ9IiwiYXVkIjoibW9ndWRpbmciLCJleHAiOjIwMTczMDIwMzMsIm5iZiI6MTcwMTY4MTkzMywiaWF0IjoxNzAxNjgyODMzfQ.ZFyfCUusfCnW5vc-3Q5PFttsjGCHjpilesTPoOZ4fplMJPZO7V7Ptu1xQu_9Gytzy_2wGqNE7J5XmmxceM17dQ", "user_id": "103817552", "plan_id": "5e4cda2cab725f3c60d46c2dae3740bd", "city": "\u66f9\u53bf", "province": "\u5c71\u4e1c\u7701"}
\ No newline at end of file
From b7f092aed5bd285ce142a788b9c9380d8f1c0d0a Mon Sep 17 00:00:00 2001
From: rsp <3288892500@qq.com>
Date: Mon, 4 Dec 2023 19:21:05 +0800
Subject: [PATCH 02/49] version
---
user_config.json | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/user_config.json b/user_config.json
index 06e1234..6f3df0b 100644
--- a/user_config.json
+++ b/user_config.json
@@ -1 +1,11 @@
-{"password": "14yhl9TTt", "phone": "13797424039", "address": "\u5c71\u4e1c\u83cf\u6cfd\u66f9\u53bf", "latitude": "34.830624", "longitude": "115.545005", "start_time": "08", "end_time": "21", "token": "eyJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJtb2d1ZGluZy11c2VyIiwic3ViIjoie1wibG9naW5UeXBlXCI6XCJhbmRyb2lkXCIsXCJ1c2VySWRcIjoxMDM4MTc1NTJ9IiwiYXVkIjoibW9ndWRpbmciLCJleHAiOjIwMTczMDIwMzMsIm5iZiI6MTcwMTY4MTkzMywiaWF0IjoxNzAxNjgyODMzfQ.ZFyfCUusfCnW5vc-3Q5PFttsjGCHjpilesTPoOZ4fplMJPZO7V7Ptu1xQu_9Gytzy_2wGqNE7J5XmmxceM17dQ", "user_id": "103817552", "plan_id": "5e4cda2cab725f3c60d46c2dae3740bd", "city": "\u66f9\u53bf", "province": "\u5c71\u4e1c\u7701"}
\ No newline at end of file
+{
+ "password": "lihua",
+ "phone": "137xxxx",
+ "address": "\u5c71\u4e1c\u83cf\u6cfd\u66f9\u53bf",
+ "latitude": "34.830624",
+ "longitude": "115.545005",
+ "start_time": "08",
+ "end_time": "21",
+ "city": "\u66f9\u53bf",
+ "province": "\u5c71\u4e1c\u7701"
+}
\ No newline at end of file
From 2c9348edc61ffa3fb4885bf19ae4b6de7d765a85 Mon Sep 17 00:00:00 2001
From: rsp <3288892500@qq.com>
Date: Mon, 4 Dec 2023 19:59:29 +0800
Subject: [PATCH 03/49] explain
---
README.MD | 33 +++++++++++++++++++++++++++++++++
user_config.json | 3 ++-
2 files changed, 35 insertions(+), 1 deletion(-)
create mode 100644 README.MD
diff --git a/README.MD b/README.MD
new file mode 100644
index 0000000..6307e51
--- /dev/null
+++ b/README.MD
@@ -0,0 +1,33 @@
+## 当前功能
+2023-12-4
+1. 打卡
+2. 补签(补前未30天打卡)
+## 声明
+
+**仅供学习交流使用**,项目遵循GPL协议,请勿拿来盈利、诈骗和违法之事!
+
+项目产生的所有结果皆由使用者负责,本项目仅提供Python学习参考价值,本人不进行任何运行和调试。
+
+- [x] 运行和调试本项目则表示为默认同意以上声明
+
+## 基本使用
+
+> 配置 user_config.json 文件
+
+```angular2html
+"password": "li hua",
+"phone": "1111xxxx",
+"address": "山东省菏泽市曹县某某街道",
+"latitude": "34.830624", \\ 纬度
+"longitude": "115.545005", \\ 经度
+"start_time": "08", \\ 打卡开始时间
+"end_time": "21", \\ 打卡结束位置
+"city": "菏泽市",
+"province": "山东省",
+"is_repeat_clock_in": false \\ 默认不补签
+```
+
+## **补签说明**:
+1. 默认补签前30天的数据(只能补签到前30天的)
+2. 默认只补签上班(app默认只支持上班,保存和app统一原则),若学校有要求只需要修改请求的type改END,变成打下班卡
+3. 补签时间说明,默认是早上8或9点随机时间,随机秒打卡,若修改则自行修改
\ No newline at end of file
diff --git a/user_config.json b/user_config.json
index 6f3df0b..ec41e3b 100644
--- a/user_config.json
+++ b/user_config.json
@@ -7,5 +7,6 @@
"start_time": "08",
"end_time": "21",
"city": "\u66f9\u53bf",
- "province": "\u5c71\u4e1c\u7701"
+ "province": "\u5c71\u4e1c\u7701",
+ "is_repeat_clock_in": false
}
\ No newline at end of file
From dc477d7301b8cbd17ce61586b56d7a034ec95dba Mon Sep 17 00:00:00 2001
From: rsp <76271031+github123666@users.noreply.github.com>
Date: Mon, 4 Dec 2023 20:01:11 +0800
Subject: [PATCH 04/49] Update README.MD
---
README.MD | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.MD b/README.MD
index 6307e51..595c75f 100644
--- a/README.MD
+++ b/README.MD
@@ -30,4 +30,4 @@
## **补签说明**:
1. 默认补签前30天的数据(只能补签到前30天的)
2. 默认只补签上班(app默认只支持上班,保存和app统一原则),若学校有要求只需要修改请求的type改END,变成打下班卡
-3. 补签时间说明,默认是早上8或9点随机时间,随机秒打卡,若修改则自行修改
\ No newline at end of file
+3. 补签时间说明,默认是早上8或9点随机时间,随机秒打卡,若修改则自行看请求代码
From 40ff5d4f5ce2404bf5188cb9e717284b8c2d8d9c Mon Sep 17 00:00:00 2001
From: rsp <76271031+github123666@users.noreply.github.com>
Date: Mon, 4 Dec 2023 20:06:01 +0800
Subject: [PATCH 05/49] Update README.MD
---
README.MD | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.MD b/README.MD
index 595c75f..5c7cf6b 100644
--- a/README.MD
+++ b/README.MD
@@ -26,6 +26,7 @@
"province": "山东省",
"is_repeat_clock_in": false \\ 默认不补签
```
+运行 main.py 文件
## **补签说明**:
1. 默认补签前30天的数据(只能补签到前30天的)
From 468c9a7cca45f040563bd9c9f69c5a0a4d464a2f Mon Sep 17 00:00:00 2001
From: rsp <3288892500@qq.com>
Date: Mon, 4 Dec 2023 20:14:40 +0800
Subject: [PATCH 06/49] pack
---
requirements.txt | Bin 0 -> 330 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 requirements.txt
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5af1d75bf3d5a60443eed0b6d33a258217663880
GIT binary patch
literal 330
zcmX|-%?^Sv5QOJ!;-hG6Q9SuDl^-FZVp|US@Z#(i8nUExrr!*me+~@-b{KI-#nlNH
zJ_dUnI2K!MxZl7dqDRXS-BPtE=rHOvI4{mNdxT+7Dk)JqIC27Mk%>>d`1Ro4K8^Nc&GxEWO)%>4%zk6yJ1{3?
Xy;%6teq#2ZO|NX1?m+%e?n(4N1(h(I
literal 0
HcmV?d00001
From 45c6925ba24300d248bc1aef73388ed481903f5a Mon Sep 17 00:00:00 2001
From: rsp <76271031+github123666@users.noreply.github.com>
Date: Mon, 4 Dec 2023 20:20:02 +0800
Subject: [PATCH 07/49] Update README.MD
---
README.MD | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.MD b/README.MD
index 5c7cf6b..5ad37f2 100644
--- a/README.MD
+++ b/README.MD
@@ -11,7 +11,9 @@
- [x] 运行和调试本项目则表示为默认同意以上声明
## 基本使用
-
+```
+pip install -r requirements.txt
+```
> 配置 user_config.json 文件
```angular2html
From 4afa538fc00f0d0e3fe21a5eb9838707964bffc1 Mon Sep 17 00:00:00 2001
From: rsp <3288892500@qq.com>
Date: Tue, 5 Dec 2023 11:00:16 +0800
Subject: [PATCH 08/49] modified
---
api/api_all.py | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/api/api_all.py b/api/api_all.py
index cae5da6..0335156 100644
--- a/api/api_all.py
+++ b/api/api_all.py
@@ -169,7 +169,7 @@ def get_previous_month_data(user_login_info):
# clock in count
day_set = count_day(rsp)
# 上个月能打卡的天数
- previous_day = set([day for day in range(calendar.monthrange(year, previous_month)[1])][-(31 - now_day):])
+ previous_day = set([day for day in range(1, calendar.monthrange(year, previous_month)[1] + 1)][-(31 - now_day):])
# 未打卡日期
empty_day = day_set ^ previous_day
api_module_log.info("上月补签阻塞3~15秒")
@@ -200,9 +200,9 @@ def get_attendance_log(user_login_info):
handle_response(rsp)
# save token
save_token(user_login_info)
- # handle text
+ # handle response text
day_set = count_day(dict(rsp))
- empty_day = day_set ^ set(range(1, now_day + 1))
+ empty_day = day_set ^ set(range(1, now_day))
# repeat clock in
api_module_log.info("本月补签阻塞3~15秒")
for day in empty_day:
@@ -217,6 +217,25 @@ def get_attendance_log(user_login_info):
save_token(user_login_info)
+# submit weekly
+def submit_weekly(user_login_info):
+ pass
+
+
+@repeat_api
+def submit_daily(user_login_info, daily):
+ api_module_log.info('提交日报')
+ url = 'practice/paper/v2/save'
+ headers['sign'] = create_sign(user_login_info.user_id, "day", user_login_info.plan_id, "日报")
+ data = {"yearmonth": "", "address": "", "t": aes_encrypt(int(time.time() * 1000)), "title": "日报",
+ "longitude": "0.0",
+ "latitude": "0.0", "planId": "5e4cda2cab725f3c60d46c2dae3740bd", "reportType": "day",
+ "content": daily.get_daily()['data']}
+ print(data)
+ print('')
+ rsp = requests.post()
+
+
# check response
def handle_response(rsp: dict) -> None:
response_code = rsp['code']
From da0065a25c2c4d9a28ba90b9b94be00701277669 Mon Sep 17 00:00:00 2001
From: rsp <3288892500@qq.com>
Date: Tue, 5 Dec 2023 11:16:17 +0800
Subject: [PATCH 09/49] modified
---
api/api_all.py | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/api/api_all.py b/api/api_all.py
index 0335156..53cdc30 100644
--- a/api/api_all.py
+++ b/api/api_all.py
@@ -171,8 +171,11 @@ def get_previous_month_data(user_login_info):
# 上个月能打卡的天数
previous_day = set([day for day in range(1, calendar.monthrange(year, previous_month)[1] + 1)][-(31 - now_day):])
# 未打卡日期
- empty_day = day_set ^ previous_day
- api_module_log.info("上月补签阻塞3~15秒")
+ empty_day = []
+ for day in previous_day:
+ if day not in day_set:
+ empty_day.append(day)
+ api_module_log.info("上月补签阻塞3~15秒后打卡")
for day in empty_day:
time.sleep(random.randint(3, 15))
api_module_log.info(f'补签:{previous_month}-{day}')
@@ -204,7 +207,7 @@ def get_attendance_log(user_login_info):
day_set = count_day(dict(rsp))
empty_day = day_set ^ set(range(1, now_day))
# repeat clock in
- api_module_log.info("本月补签阻塞3~15秒")
+ api_module_log.info("本月补签阻塞3~15秒后打卡")
for day in empty_day:
time.sleep(random.randint(3, 15))
api_module_log.info(f'补签:{now_month}-{day}')
From c9ff4371bd18461d1c8abbc8a6b5ba45c029e6f0 Mon Sep 17 00:00:00 2001
From: rsp <3288892500@qq.com>
Date: Sat, 9 Dec 2023 19:49:48 +0800
Subject: [PATCH 10/49] modefied
---
.idea/.gitignore | 8 +
.idea/gongxueyun.iml | 8 +
.idea/inspectionProfiles/Project_Default.xml | 30 +++
.../inspectionProfiles/profiles_settings.xml | 6 +
.idea/misc.xml | 4 +
.idea/modules.xml | 8 +
README.MD | 7 +-
api/__pycache__/api_all.cpython-39.pyc | Bin 5255 -> 9049 bytes
api/api_all.py | 80 ++++++--
config/__pycache__/info.cpython-39.pyc | Bin 1564 -> 1713 bytes
config/info.py | 4 +
.../__pycache__/encrypt.cpython-39.pyc | Bin 504 -> 566 bytes
.../__pycache__/encrypt_md5.cpython-39.pyc | Bin 351 -> 404 bytes
decryptencrypt/encrypt.py | 2 +
decryptencrypt/encrypt_md5.py | 4 +
main.py | 91 +++++++--
tast.py | 3 +
textFile/daily.json | 68 +++++++
textFile/submit_time.json | 5 +
textFile/weekly.json | 188 ++++++++++++++++++
.../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 127 bytes
textHandle/__pycache__/count.cpython-39.pyc | Bin 0 -> 879 bytes
.../__pycache__/get_daily.cpython-39.pyc | Bin 0 -> 715 bytes
.../__pycache__/get_weekly.cpython-39.pyc | Bin 0 -> 722 bytes
.../handle_weeks_date.cpython-39.pyc | Bin 0 -> 730 bytes
.../__pycache__/submitTime.cpython-39.pyc | Bin 0 -> 1124 bytes
textHandle/get_daily.py | 12 ++
textHandle/get_weekly.py | 9 +
textHandle/handle_weeks_date.py | 10 +
textHandle/submitTime.py | 19 ++
user_config.json | 23 ++-
util/__init__.py | 0
util/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 121 bytes
util/__pycache__/tomorrow.cpython-39.pyc | Bin 0 -> 767 bytes
util/tomorrow.py | 23 +++
35 files changed, 564 insertions(+), 48 deletions(-)
create mode 100644 .idea/.gitignore
create mode 100644 .idea/gongxueyun.iml
create mode 100644 .idea/inspectionProfiles/Project_Default.xml
create mode 100644 .idea/inspectionProfiles/profiles_settings.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 textFile/daily.json
create mode 100644 textFile/submit_time.json
create mode 100644 textFile/weekly.json
create mode 100644 textHandle/__pycache__/__init__.cpython-39.pyc
create mode 100644 textHandle/__pycache__/count.cpython-39.pyc
create mode 100644 textHandle/__pycache__/get_daily.cpython-39.pyc
create mode 100644 textHandle/__pycache__/get_weekly.cpython-39.pyc
create mode 100644 textHandle/__pycache__/handle_weeks_date.cpython-39.pyc
create mode 100644 textHandle/__pycache__/submitTime.cpython-39.pyc
create mode 100644 textHandle/get_daily.py
create mode 100644 textHandle/get_weekly.py
create mode 100644 textHandle/handle_weeks_date.py
create mode 100644 textHandle/submitTime.py
create mode 100644 util/__init__.py
create mode 100644 util/__pycache__/__init__.cpython-39.pyc
create mode 100644 util/__pycache__/tomorrow.cpython-39.pyc
create mode 100644 util/tomorrow.py
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..73f69e0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/gongxueyun.iml b/.idea/gongxueyun.iml
new file mode 100644
index 0000000..66e3f99
--- /dev/null
+++ b/.idea/gongxueyun.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..353c5ac
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..d2e2098
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..de95842
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.MD b/README.MD
index 5ad37f2..6307e51 100644
--- a/README.MD
+++ b/README.MD
@@ -11,9 +11,7 @@
- [x] 运行和调试本项目则表示为默认同意以上声明
## 基本使用
-```
-pip install -r requirements.txt
-```
+
> 配置 user_config.json 文件
```angular2html
@@ -28,9 +26,8 @@ pip install -r requirements.txt
"province": "山东省",
"is_repeat_clock_in": false \\ 默认不补签
```
-运行 main.py 文件
## **补签说明**:
1. 默认补签前30天的数据(只能补签到前30天的)
2. 默认只补签上班(app默认只支持上班,保存和app统一原则),若学校有要求只需要修改请求的type改END,变成打下班卡
-3. 补签时间说明,默认是早上8或9点随机时间,随机秒打卡,若修改则自行看请求代码
+3. 补签时间说明,默认是早上8或9点随机时间,随机秒打卡,若修改则自行修改
\ No newline at end of file
diff --git a/api/__pycache__/api_all.cpython-39.pyc b/api/__pycache__/api_all.cpython-39.pyc
index 030a1030c91bb256dbea8ef7027476913131affc..d3133a2076ea750996c6f37da07fd41251ededf5 100644
GIT binary patch
literal 9049
zcmb7K>vtSQcJJ5B^gJ|@Y*`Ou?6E<{vse$WmzQi<-k8PKa*$asvk+yNYDpuFX2#Vu
zwl!x&jAetd;|JNSfgtaWSXgWVm?WEpKuA91uSkE|bK;S$FZ(4SIq^Ar$nV}BX(Smq
z8;$#Rb#+yB^}WCP-CMVvZfc5X`1|)~lyhpkru_$9EdQgs58`m2)-_FNLeFU_|E#BU
zzBW<@pUsrXXDemlY~%uy!BkN9+lEph)R{SZGMox?ot2ABMpIEP2Xe8=rc@J`gSq%*
zbE;X_9AmsigdkgmEy8C^s;RCKkvToJRzyWiG>JHV&7wuLiZx>GY&g{>+EVMpI?;Yy
zOSOv*(TQ`1=o0I3?sPhYE^e9C#RhTfacf3TbuHCw6q~qaJ!%qS^KlJ#Z$WvBxQ)vj
zP`+JsbNN=M!`aB=Y!!EKuTAyqZ6bNxN+r