diff --git a/LICENSE b/LICENSE
index 7ba1b9a..3b718db 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,201 +1,201 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [RTAkland] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [RTAkland] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
limitations under the License.
\ No newline at end of file
diff --git a/README.md b/README.md
index 0cb2e10..d8f5089 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,31 @@
-
+
+## Python 版访问次数计数器使用了flask 作为服务端接收请求
+* [文档](https://request-counter-docs.vercel.app/#/)
+### 开源
+- 本项目以[Apache-2.0](./LICENSE)许可开源, 即:
+ - 你可以直接使用该项目提供的功能, 无需任何授权
+ - 你可以在**注明来源版权信息**的情况下对源代码进行任意分发和修改以及衍生
+
+## 部署
+> 由于对`vercel`不熟悉, vercel的配置文件搞不明白所以暂时没有vercel的配置文件, 我也试了很多方法去部署但是要么是500要么是400
+
+## 调用须知
+- API支持`GET` 和 `POST` 方法请求
+- 最大可以计数`10`位数, 超过则重置
+- 可以自定义显示位数默认`7`位数最大`10`位
+- 可以自己选择更多的主题只需要加上请求参数: `theme`再加上想要的主题即可
+
+
+# 一些信息
+- 使用了Python3.6 的标准库`Sqlite3`进行数据库操作
+
+
+
+
diff --git a/bin/assets/theme.db b/bin/assets/theme.db
index 0a58c31..eedd1f5 100644
Binary files a/bin/assets/theme.db and b/bin/assets/theme.db differ
diff --git a/bin/assets/themes/5naf/0.gif b/bin/assets/themes/5naf/0.gif
new file mode 100644
index 0000000..7fadaa1
Binary files /dev/null and b/bin/assets/themes/5naf/0.gif differ
diff --git a/bin/assets/themes/5naf/1.gif b/bin/assets/themes/5naf/1.gif
new file mode 100644
index 0000000..2069fdf
Binary files /dev/null and b/bin/assets/themes/5naf/1.gif differ
diff --git a/bin/assets/themes/5naf/2.gif b/bin/assets/themes/5naf/2.gif
new file mode 100644
index 0000000..3328967
Binary files /dev/null and b/bin/assets/themes/5naf/2.gif differ
diff --git a/bin/assets/themes/5naf/3.gif b/bin/assets/themes/5naf/3.gif
new file mode 100644
index 0000000..01af2a3
Binary files /dev/null and b/bin/assets/themes/5naf/3.gif differ
diff --git a/bin/assets/themes/5naf/4.gif b/bin/assets/themes/5naf/4.gif
new file mode 100644
index 0000000..f5294ab
Binary files /dev/null and b/bin/assets/themes/5naf/4.gif differ
diff --git a/bin/assets/themes/5naf/5.gif b/bin/assets/themes/5naf/5.gif
new file mode 100644
index 0000000..975007e
Binary files /dev/null and b/bin/assets/themes/5naf/5.gif differ
diff --git a/bin/assets/themes/5naf/6.gif b/bin/assets/themes/5naf/6.gif
new file mode 100644
index 0000000..08e6ed0
Binary files /dev/null and b/bin/assets/themes/5naf/6.gif differ
diff --git a/bin/assets/themes/5naf/7.gif b/bin/assets/themes/5naf/7.gif
new file mode 100644
index 0000000..c4a8f47
Binary files /dev/null and b/bin/assets/themes/5naf/7.gif differ
diff --git a/bin/assets/themes/5naf/8.gif b/bin/assets/themes/5naf/8.gif
new file mode 100644
index 0000000..2037808
Binary files /dev/null and b/bin/assets/themes/5naf/8.gif differ
diff --git a/bin/assets/themes/5naf/9.gif b/bin/assets/themes/5naf/9.gif
new file mode 100644
index 0000000..3363b32
Binary files /dev/null and b/bin/assets/themes/5naf/9.gif differ
diff --git a/bin/assets/themes/allgirl/0.gif b/bin/assets/themes/allgirl/0.gif
new file mode 100644
index 0000000..83f6dc2
Binary files /dev/null and b/bin/assets/themes/allgirl/0.gif differ
diff --git a/bin/assets/themes/allgirl/1.gif b/bin/assets/themes/allgirl/1.gif
new file mode 100644
index 0000000..fccdde2
Binary files /dev/null and b/bin/assets/themes/allgirl/1.gif differ
diff --git a/bin/assets/themes/allgirl/2.gif b/bin/assets/themes/allgirl/2.gif
new file mode 100644
index 0000000..7e858c2
Binary files /dev/null and b/bin/assets/themes/allgirl/2.gif differ
diff --git a/bin/assets/themes/allgirl/3.gif b/bin/assets/themes/allgirl/3.gif
new file mode 100644
index 0000000..dab7b1a
Binary files /dev/null and b/bin/assets/themes/allgirl/3.gif differ
diff --git a/bin/assets/themes/allgirl/4.gif b/bin/assets/themes/allgirl/4.gif
new file mode 100644
index 0000000..af98b23
Binary files /dev/null and b/bin/assets/themes/allgirl/4.gif differ
diff --git a/bin/assets/themes/allgirl/5.gif b/bin/assets/themes/allgirl/5.gif
new file mode 100644
index 0000000..34b6f5b
Binary files /dev/null and b/bin/assets/themes/allgirl/5.gif differ
diff --git a/bin/assets/themes/allgirl/6.gif b/bin/assets/themes/allgirl/6.gif
new file mode 100644
index 0000000..0edb17b
Binary files /dev/null and b/bin/assets/themes/allgirl/6.gif differ
diff --git a/bin/assets/themes/allgirl/7.gif b/bin/assets/themes/allgirl/7.gif
new file mode 100644
index 0000000..8b3d3f6
Binary files /dev/null and b/bin/assets/themes/allgirl/7.gif differ
diff --git a/bin/assets/themes/allgirl/8.gif b/bin/assets/themes/allgirl/8.gif
new file mode 100644
index 0000000..3ff1008
Binary files /dev/null and b/bin/assets/themes/allgirl/8.gif differ
diff --git a/bin/assets/themes/allgirl/9.gif b/bin/assets/themes/allgirl/9.gif
new file mode 100644
index 0000000..d2f5145
Binary files /dev/null and b/bin/assets/themes/allgirl/9.gif differ
diff --git a/bin/assets/themes/azureblade/0.gif b/bin/assets/themes/azureblade/0.gif
new file mode 100644
index 0000000..f5fea7e
Binary files /dev/null and b/bin/assets/themes/azureblade/0.gif differ
diff --git a/bin/assets/themes/azureblade/1.gif b/bin/assets/themes/azureblade/1.gif
new file mode 100644
index 0000000..472331f
Binary files /dev/null and b/bin/assets/themes/azureblade/1.gif differ
diff --git a/bin/assets/themes/azureblade/2.gif b/bin/assets/themes/azureblade/2.gif
new file mode 100644
index 0000000..64a6661
Binary files /dev/null and b/bin/assets/themes/azureblade/2.gif differ
diff --git a/bin/assets/themes/azureblade/3.gif b/bin/assets/themes/azureblade/3.gif
new file mode 100644
index 0000000..c007291
Binary files /dev/null and b/bin/assets/themes/azureblade/3.gif differ
diff --git a/bin/assets/themes/moe_theme/gelbooru/4.gif b/bin/assets/themes/azureblade/4.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/4.gif
rename to bin/assets/themes/azureblade/4.gif
diff --git a/bin/assets/themes/azureblade/5.gif b/bin/assets/themes/azureblade/5.gif
new file mode 100644
index 0000000..c756955
Binary files /dev/null and b/bin/assets/themes/azureblade/5.gif differ
diff --git a/bin/assets/themes/azureblade/6.gif b/bin/assets/themes/azureblade/6.gif
new file mode 100644
index 0000000..625a208
Binary files /dev/null and b/bin/assets/themes/azureblade/6.gif differ
diff --git a/bin/assets/themes/azureblade/7.gif b/bin/assets/themes/azureblade/7.gif
new file mode 100644
index 0000000..6bc53bd
Binary files /dev/null and b/bin/assets/themes/azureblade/7.gif differ
diff --git a/bin/assets/themes/azureblade/8.gif b/bin/assets/themes/azureblade/8.gif
new file mode 100644
index 0000000..2dd42ae
Binary files /dev/null and b/bin/assets/themes/azureblade/8.gif differ
diff --git a/bin/assets/themes/azureblade/9.gif b/bin/assets/themes/azureblade/9.gif
new file mode 100644
index 0000000..2fb57c2
Binary files /dev/null and b/bin/assets/themes/azureblade/9.gif differ
diff --git a/bin/assets/themes/blacked/0.gif b/bin/assets/themes/blacked/0.gif
new file mode 100644
index 0000000..15d5a8a
Binary files /dev/null and b/bin/assets/themes/blacked/0.gif differ
diff --git a/bin/assets/themes/blacked/1.gif b/bin/assets/themes/blacked/1.gif
new file mode 100644
index 0000000..0f3f232
Binary files /dev/null and b/bin/assets/themes/blacked/1.gif differ
diff --git a/bin/assets/themes/blacked/2.gif b/bin/assets/themes/blacked/2.gif
new file mode 100644
index 0000000..7abc8cc
Binary files /dev/null and b/bin/assets/themes/blacked/2.gif differ
diff --git a/bin/assets/themes/blacked/3.gif b/bin/assets/themes/blacked/3.gif
new file mode 100644
index 0000000..940ab7d
Binary files /dev/null and b/bin/assets/themes/blacked/3.gif differ
diff --git a/bin/assets/themes/blacked/4.gif b/bin/assets/themes/blacked/4.gif
new file mode 100644
index 0000000..b513ba2
Binary files /dev/null and b/bin/assets/themes/blacked/4.gif differ
diff --git a/bin/assets/themes/blacked/5.gif b/bin/assets/themes/blacked/5.gif
new file mode 100644
index 0000000..1525d18
Binary files /dev/null and b/bin/assets/themes/blacked/5.gif differ
diff --git a/bin/assets/themes/blacked/6.gif b/bin/assets/themes/blacked/6.gif
new file mode 100644
index 0000000..9ee5e57
Binary files /dev/null and b/bin/assets/themes/blacked/6.gif differ
diff --git a/bin/assets/themes/blacked/7.gif b/bin/assets/themes/blacked/7.gif
new file mode 100644
index 0000000..1459791
Binary files /dev/null and b/bin/assets/themes/blacked/7.gif differ
diff --git a/bin/assets/themes/blacked/8.gif b/bin/assets/themes/blacked/8.gif
new file mode 100644
index 0000000..498c7cf
Binary files /dev/null and b/bin/assets/themes/blacked/8.gif differ
diff --git a/bin/assets/themes/blacked/9.gif b/bin/assets/themes/blacked/9.gif
new file mode 100644
index 0000000..663a691
Binary files /dev/null and b/bin/assets/themes/blacked/9.gif differ
diff --git a/bin/assets/themes/celeb/0.gif b/bin/assets/themes/celeb/0.gif
new file mode 100644
index 0000000..b089e64
Binary files /dev/null and b/bin/assets/themes/celeb/0.gif differ
diff --git a/bin/assets/themes/celeb/1.gif b/bin/assets/themes/celeb/1.gif
new file mode 100644
index 0000000..af2dd7a
Binary files /dev/null and b/bin/assets/themes/celeb/1.gif differ
diff --git a/bin/assets/themes/celeb/2.gif b/bin/assets/themes/celeb/2.gif
new file mode 100644
index 0000000..c5b6942
Binary files /dev/null and b/bin/assets/themes/celeb/2.gif differ
diff --git a/bin/assets/themes/celeb/3.gif b/bin/assets/themes/celeb/3.gif
new file mode 100644
index 0000000..e507929
Binary files /dev/null and b/bin/assets/themes/celeb/3.gif differ
diff --git a/bin/assets/themes/celeb/4.gif b/bin/assets/themes/celeb/4.gif
new file mode 100644
index 0000000..e690b88
Binary files /dev/null and b/bin/assets/themes/celeb/4.gif differ
diff --git a/bin/assets/themes/celeb/5.gif b/bin/assets/themes/celeb/5.gif
new file mode 100644
index 0000000..89178a3
Binary files /dev/null and b/bin/assets/themes/celeb/5.gif differ
diff --git a/bin/assets/themes/celeb/6.gif b/bin/assets/themes/celeb/6.gif
new file mode 100644
index 0000000..c42d2fc
Binary files /dev/null and b/bin/assets/themes/celeb/6.gif differ
diff --git a/bin/assets/themes/celeb/7.gif b/bin/assets/themes/celeb/7.gif
new file mode 100644
index 0000000..f281208
Binary files /dev/null and b/bin/assets/themes/celeb/7.gif differ
diff --git a/bin/assets/themes/celeb/8.gif b/bin/assets/themes/celeb/8.gif
new file mode 100644
index 0000000..1f2c6d2
Binary files /dev/null and b/bin/assets/themes/celeb/8.gif differ
diff --git a/bin/assets/themes/celeb/9.gif b/bin/assets/themes/celeb/9.gif
new file mode 100644
index 0000000..107186b
Binary files /dev/null and b/bin/assets/themes/celeb/9.gif differ
diff --git a/bin/assets/themes/channel-tan/0.gif b/bin/assets/themes/channel-tan/0.gif
new file mode 100644
index 0000000..7c4acb8
Binary files /dev/null and b/bin/assets/themes/channel-tan/0.gif differ
diff --git a/bin/assets/themes/channel-tan/1.gif b/bin/assets/themes/channel-tan/1.gif
new file mode 100644
index 0000000..b48b8da
Binary files /dev/null and b/bin/assets/themes/channel-tan/1.gif differ
diff --git a/bin/assets/themes/channel-tan/2.gif b/bin/assets/themes/channel-tan/2.gif
new file mode 100644
index 0000000..b471946
Binary files /dev/null and b/bin/assets/themes/channel-tan/2.gif differ
diff --git a/bin/assets/themes/channel-tan/3.gif b/bin/assets/themes/channel-tan/3.gif
new file mode 100644
index 0000000..1f8ef00
Binary files /dev/null and b/bin/assets/themes/channel-tan/3.gif differ
diff --git a/bin/assets/themes/channel-tan/4.gif b/bin/assets/themes/channel-tan/4.gif
new file mode 100644
index 0000000..44a9c96
Binary files /dev/null and b/bin/assets/themes/channel-tan/4.gif differ
diff --git a/bin/assets/themes/channel-tan/5.gif b/bin/assets/themes/channel-tan/5.gif
new file mode 100644
index 0000000..8c9d5dc
Binary files /dev/null and b/bin/assets/themes/channel-tan/5.gif differ
diff --git a/bin/assets/themes/channel-tan/6.gif b/bin/assets/themes/channel-tan/6.gif
new file mode 100644
index 0000000..359fd60
Binary files /dev/null and b/bin/assets/themes/channel-tan/6.gif differ
diff --git a/bin/assets/themes/channel-tan/7.gif b/bin/assets/themes/channel-tan/7.gif
new file mode 100644
index 0000000..ea41dce
Binary files /dev/null and b/bin/assets/themes/channel-tan/7.gif differ
diff --git a/bin/assets/themes/channel-tan/8.gif b/bin/assets/themes/channel-tan/8.gif
new file mode 100644
index 0000000..9e615e2
Binary files /dev/null and b/bin/assets/themes/channel-tan/8.gif differ
diff --git a/bin/assets/themes/channel-tan/9.gif b/bin/assets/themes/channel-tan/9.gif
new file mode 100644
index 0000000..4b77bbb
Binary files /dev/null and b/bin/assets/themes/channel-tan/9.gif differ
diff --git a/bin/assets/themes/characterlibrary/0.gif b/bin/assets/themes/characterlibrary/0.gif
new file mode 100644
index 0000000..8449d4f
Binary files /dev/null and b/bin/assets/themes/characterlibrary/0.gif differ
diff --git a/bin/assets/themes/characterlibrary/1.gif b/bin/assets/themes/characterlibrary/1.gif
new file mode 100644
index 0000000..475c97c
Binary files /dev/null and b/bin/assets/themes/characterlibrary/1.gif differ
diff --git a/bin/assets/themes/characterlibrary/2.gif b/bin/assets/themes/characterlibrary/2.gif
new file mode 100644
index 0000000..13fbb9e
Binary files /dev/null and b/bin/assets/themes/characterlibrary/2.gif differ
diff --git a/bin/assets/themes/characterlibrary/3.gif b/bin/assets/themes/characterlibrary/3.gif
new file mode 100644
index 0000000..6ccb3bb
Binary files /dev/null and b/bin/assets/themes/characterlibrary/3.gif differ
diff --git a/bin/assets/themes/characterlibrary/4.gif b/bin/assets/themes/characterlibrary/4.gif
new file mode 100644
index 0000000..ef1bb49
Binary files /dev/null and b/bin/assets/themes/characterlibrary/4.gif differ
diff --git a/bin/assets/themes/characterlibrary/5.gif b/bin/assets/themes/characterlibrary/5.gif
new file mode 100644
index 0000000..c50cbc2
Binary files /dev/null and b/bin/assets/themes/characterlibrary/5.gif differ
diff --git a/bin/assets/themes/characterlibrary/6.gif b/bin/assets/themes/characterlibrary/6.gif
new file mode 100644
index 0000000..b1d3163
Binary files /dev/null and b/bin/assets/themes/characterlibrary/6.gif differ
diff --git a/bin/assets/themes/characterlibrary/7.gif b/bin/assets/themes/characterlibrary/7.gif
new file mode 100644
index 0000000..776aeb7
Binary files /dev/null and b/bin/assets/themes/characterlibrary/7.gif differ
diff --git a/bin/assets/themes/characterlibrary/8.gif b/bin/assets/themes/characterlibrary/8.gif
new file mode 100644
index 0000000..e85b759
Binary files /dev/null and b/bin/assets/themes/characterlibrary/8.gif differ
diff --git a/bin/assets/themes/characterlibrary/9.gif b/bin/assets/themes/characterlibrary/9.gif
new file mode 100644
index 0000000..df69bab
Binary files /dev/null and b/bin/assets/themes/characterlibrary/9.gif differ
diff --git a/bin/assets/themes/consoletan/0.gif b/bin/assets/themes/consoletan/0.gif
new file mode 100644
index 0000000..f5c511b
Binary files /dev/null and b/bin/assets/themes/consoletan/0.gif differ
diff --git a/bin/assets/themes/consoletan/1.gif b/bin/assets/themes/consoletan/1.gif
new file mode 100644
index 0000000..c078b1b
Binary files /dev/null and b/bin/assets/themes/consoletan/1.gif differ
diff --git a/bin/assets/themes/consoletan/2.gif b/bin/assets/themes/consoletan/2.gif
new file mode 100644
index 0000000..330ef93
Binary files /dev/null and b/bin/assets/themes/consoletan/2.gif differ
diff --git a/bin/assets/themes/consoletan/3.gif b/bin/assets/themes/consoletan/3.gif
new file mode 100644
index 0000000..5339a61
Binary files /dev/null and b/bin/assets/themes/consoletan/3.gif differ
diff --git a/bin/assets/themes/consoletan/4.gif b/bin/assets/themes/consoletan/4.gif
new file mode 100644
index 0000000..7217cb8
Binary files /dev/null and b/bin/assets/themes/consoletan/4.gif differ
diff --git a/bin/assets/themes/consoletan/5.gif b/bin/assets/themes/consoletan/5.gif
new file mode 100644
index 0000000..34d88f2
Binary files /dev/null and b/bin/assets/themes/consoletan/5.gif differ
diff --git a/bin/assets/themes/consoletan/6.gif b/bin/assets/themes/consoletan/6.gif
new file mode 100644
index 0000000..0c1d12a
Binary files /dev/null and b/bin/assets/themes/consoletan/6.gif differ
diff --git a/bin/assets/themes/consoletan/7.gif b/bin/assets/themes/consoletan/7.gif
new file mode 100644
index 0000000..734231a
Binary files /dev/null and b/bin/assets/themes/consoletan/7.gif differ
diff --git a/bin/assets/themes/consoletan/8.gif b/bin/assets/themes/consoletan/8.gif
new file mode 100644
index 0000000..5cc64e3
Binary files /dev/null and b/bin/assets/themes/consoletan/8.gif differ
diff --git a/bin/assets/themes/consoletan/9.gif b/bin/assets/themes/consoletan/9.gif
new file mode 100644
index 0000000..bab3eea
Binary files /dev/null and b/bin/assets/themes/consoletan/9.gif differ
diff --git a/bin/assets/themes/crewbooru/0.gif b/bin/assets/themes/crewbooru/0.gif
new file mode 100644
index 0000000..ee5396b
Binary files /dev/null and b/bin/assets/themes/crewbooru/0.gif differ
diff --git a/bin/assets/themes/crewbooru/1.gif b/bin/assets/themes/crewbooru/1.gif
new file mode 100644
index 0000000..de34656
Binary files /dev/null and b/bin/assets/themes/crewbooru/1.gif differ
diff --git a/bin/assets/themes/crewbooru/2.gif b/bin/assets/themes/crewbooru/2.gif
new file mode 100644
index 0000000..8b4e9b4
Binary files /dev/null and b/bin/assets/themes/crewbooru/2.gif differ
diff --git a/bin/assets/themes/crewbooru/3.gif b/bin/assets/themes/crewbooru/3.gif
new file mode 100644
index 0000000..3849aaf
Binary files /dev/null and b/bin/assets/themes/crewbooru/3.gif differ
diff --git a/bin/assets/themes/crewbooru/4.gif b/bin/assets/themes/crewbooru/4.gif
new file mode 100644
index 0000000..c188e8a
Binary files /dev/null and b/bin/assets/themes/crewbooru/4.gif differ
diff --git a/bin/assets/themes/crewbooru/5.gif b/bin/assets/themes/crewbooru/5.gif
new file mode 100644
index 0000000..93a2f55
Binary files /dev/null and b/bin/assets/themes/crewbooru/5.gif differ
diff --git a/bin/assets/themes/crewbooru/6.gif b/bin/assets/themes/crewbooru/6.gif
new file mode 100644
index 0000000..31b84fd
Binary files /dev/null and b/bin/assets/themes/crewbooru/6.gif differ
diff --git a/bin/assets/themes/crewbooru/7.gif b/bin/assets/themes/crewbooru/7.gif
new file mode 100644
index 0000000..5c0d411
Binary files /dev/null and b/bin/assets/themes/crewbooru/7.gif differ
diff --git a/bin/assets/themes/crewbooru/8.gif b/bin/assets/themes/crewbooru/8.gif
new file mode 100644
index 0000000..f3860bd
Binary files /dev/null and b/bin/assets/themes/crewbooru/8.gif differ
diff --git a/bin/assets/themes/crewbooru/9.gif b/bin/assets/themes/crewbooru/9.gif
new file mode 100644
index 0000000..2414839
Binary files /dev/null and b/bin/assets/themes/crewbooru/9.gif differ
diff --git a/bin/assets/themes/cripple/0.gif b/bin/assets/themes/cripple/0.gif
new file mode 100644
index 0000000..525b5c3
Binary files /dev/null and b/bin/assets/themes/cripple/0.gif differ
diff --git a/bin/assets/themes/cripple/1.gif b/bin/assets/themes/cripple/1.gif
new file mode 100644
index 0000000..d048f5f
Binary files /dev/null and b/bin/assets/themes/cripple/1.gif differ
diff --git a/bin/assets/themes/cripple/2.gif b/bin/assets/themes/cripple/2.gif
new file mode 100644
index 0000000..0c4c11f
Binary files /dev/null and b/bin/assets/themes/cripple/2.gif differ
diff --git a/bin/assets/themes/cripple/3.gif b/bin/assets/themes/cripple/3.gif
new file mode 100644
index 0000000..8ca5bc3
Binary files /dev/null and b/bin/assets/themes/cripple/3.gif differ
diff --git a/bin/assets/themes/cripple/4.gif b/bin/assets/themes/cripple/4.gif
new file mode 100644
index 0000000..63206ef
Binary files /dev/null and b/bin/assets/themes/cripple/4.gif differ
diff --git a/bin/assets/themes/cripple/5.gif b/bin/assets/themes/cripple/5.gif
new file mode 100644
index 0000000..959396e
Binary files /dev/null and b/bin/assets/themes/cripple/5.gif differ
diff --git a/bin/assets/themes/cripple/6.gif b/bin/assets/themes/cripple/6.gif
new file mode 100644
index 0000000..56039c8
Binary files /dev/null and b/bin/assets/themes/cripple/6.gif differ
diff --git a/bin/assets/themes/cripple/7.gif b/bin/assets/themes/cripple/7.gif
new file mode 100644
index 0000000..5356eb8
Binary files /dev/null and b/bin/assets/themes/cripple/7.gif differ
diff --git a/bin/assets/themes/cripple/8.gif b/bin/assets/themes/cripple/8.gif
new file mode 100644
index 0000000..d293523
Binary files /dev/null and b/bin/assets/themes/cripple/8.gif differ
diff --git a/bin/assets/themes/cripple/9.gif b/bin/assets/themes/cripple/9.gif
new file mode 100644
index 0000000..6331407
Binary files /dev/null and b/bin/assets/themes/cripple/9.gif differ
diff --git a/bin/assets/themes/erpg/0.gif b/bin/assets/themes/erpg/0.gif
new file mode 100644
index 0000000..f0a996d
Binary files /dev/null and b/bin/assets/themes/erpg/0.gif differ
diff --git a/bin/assets/themes/erpg/1.gif b/bin/assets/themes/erpg/1.gif
new file mode 100644
index 0000000..6ec6539
Binary files /dev/null and b/bin/assets/themes/erpg/1.gif differ
diff --git a/bin/assets/themes/erpg/2.gif b/bin/assets/themes/erpg/2.gif
new file mode 100644
index 0000000..6046b9a
Binary files /dev/null and b/bin/assets/themes/erpg/2.gif differ
diff --git a/bin/assets/themes/erpg/3.gif b/bin/assets/themes/erpg/3.gif
new file mode 100644
index 0000000..432d532
Binary files /dev/null and b/bin/assets/themes/erpg/3.gif differ
diff --git a/bin/assets/themes/erpg/4.gif b/bin/assets/themes/erpg/4.gif
new file mode 100644
index 0000000..9967743
Binary files /dev/null and b/bin/assets/themes/erpg/4.gif differ
diff --git a/bin/assets/themes/erpg/5.gif b/bin/assets/themes/erpg/5.gif
new file mode 100644
index 0000000..1eb8a08
Binary files /dev/null and b/bin/assets/themes/erpg/5.gif differ
diff --git a/bin/assets/themes/erpg/6.gif b/bin/assets/themes/erpg/6.gif
new file mode 100644
index 0000000..5e0bc0b
Binary files /dev/null and b/bin/assets/themes/erpg/6.gif differ
diff --git a/bin/assets/themes/erpg/7.gif b/bin/assets/themes/erpg/7.gif
new file mode 100644
index 0000000..3f4d98c
Binary files /dev/null and b/bin/assets/themes/erpg/7.gif differ
diff --git a/bin/assets/themes/erpg/8.gif b/bin/assets/themes/erpg/8.gif
new file mode 100644
index 0000000..3db2c0c
Binary files /dev/null and b/bin/assets/themes/erpg/8.gif differ
diff --git a/bin/assets/themes/erpg/9.gif b/bin/assets/themes/erpg/9.gif
new file mode 100644
index 0000000..42fb02e
Binary files /dev/null and b/bin/assets/themes/erpg/9.gif differ
diff --git a/bin/assets/themes/footfetishbooru/0.gif b/bin/assets/themes/footfetishbooru/0.gif
new file mode 100644
index 0000000..eb733b3
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/0.gif differ
diff --git a/bin/assets/themes/footfetishbooru/1.gif b/bin/assets/themes/footfetishbooru/1.gif
new file mode 100644
index 0000000..6ef4acb
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/1.gif differ
diff --git a/bin/assets/themes/footfetishbooru/2.gif b/bin/assets/themes/footfetishbooru/2.gif
new file mode 100644
index 0000000..c4b41c5
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/2.gif differ
diff --git a/bin/assets/themes/footfetishbooru/3.gif b/bin/assets/themes/footfetishbooru/3.gif
new file mode 100644
index 0000000..78ab7a2
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/3.gif differ
diff --git a/bin/assets/themes/footfetishbooru/4.gif b/bin/assets/themes/footfetishbooru/4.gif
new file mode 100644
index 0000000..a7bbcbb
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/4.gif differ
diff --git a/bin/assets/themes/footfetishbooru/5.gif b/bin/assets/themes/footfetishbooru/5.gif
new file mode 100644
index 0000000..054ec49
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/5.gif differ
diff --git a/bin/assets/themes/moe_theme/gelbooru/6.gif b/bin/assets/themes/footfetishbooru/6.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/6.gif
rename to bin/assets/themes/footfetishbooru/6.gif
diff --git a/bin/assets/themes/footfetishbooru/7.gif b/bin/assets/themes/footfetishbooru/7.gif
new file mode 100644
index 0000000..c124a1c
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/7.gif differ
diff --git a/bin/assets/themes/footfetishbooru/8.gif b/bin/assets/themes/footfetishbooru/8.gif
new file mode 100644
index 0000000..ce0a4e0
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/8.gif differ
diff --git a/bin/assets/themes/footfetishbooru/9.gif b/bin/assets/themes/footfetishbooru/9.gif
new file mode 100644
index 0000000..83d7faa
Binary files /dev/null and b/bin/assets/themes/footfetishbooru/9.gif differ
diff --git a/bin/assets/themes/g/0.gif b/bin/assets/themes/g/0.gif
new file mode 100644
index 0000000..916e6ad
Binary files /dev/null and b/bin/assets/themes/g/0.gif differ
diff --git a/bin/assets/themes/g/1.gif b/bin/assets/themes/g/1.gif
new file mode 100644
index 0000000..575761a
Binary files /dev/null and b/bin/assets/themes/g/1.gif differ
diff --git a/bin/assets/themes/g/2.gif b/bin/assets/themes/g/2.gif
new file mode 100644
index 0000000..d8e8c6d
Binary files /dev/null and b/bin/assets/themes/g/2.gif differ
diff --git a/bin/assets/themes/g/3.gif b/bin/assets/themes/g/3.gif
new file mode 100644
index 0000000..4617dda
Binary files /dev/null and b/bin/assets/themes/g/3.gif differ
diff --git a/bin/assets/themes/g/4.gif b/bin/assets/themes/g/4.gif
new file mode 100644
index 0000000..fe2a52f
Binary files /dev/null and b/bin/assets/themes/g/4.gif differ
diff --git a/bin/assets/themes/g/5.gif b/bin/assets/themes/g/5.gif
new file mode 100644
index 0000000..15ac956
Binary files /dev/null and b/bin/assets/themes/g/5.gif differ
diff --git a/bin/assets/themes/g/6.gif b/bin/assets/themes/g/6.gif
new file mode 100644
index 0000000..f617f5a
Binary files /dev/null and b/bin/assets/themes/g/6.gif differ
diff --git a/bin/assets/themes/g/7.gif b/bin/assets/themes/g/7.gif
new file mode 100644
index 0000000..436c9a5
Binary files /dev/null and b/bin/assets/themes/g/7.gif differ
diff --git a/bin/assets/themes/g/8.gif b/bin/assets/themes/g/8.gif
new file mode 100644
index 0000000..e57a33a
Binary files /dev/null and b/bin/assets/themes/g/8.gif differ
diff --git a/bin/assets/themes/g/9.gif b/bin/assets/themes/g/9.gif
new file mode 100644
index 0000000..2131010
Binary files /dev/null and b/bin/assets/themes/g/9.gif differ
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/0.png b/bin/assets/themes/gelbooru-h/0.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/0.png
rename to bin/assets/themes/gelbooru-h/0.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/1.png b/bin/assets/themes/gelbooru-h/1.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/1.png
rename to bin/assets/themes/gelbooru-h/1.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/2.png b/bin/assets/themes/gelbooru-h/2.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/2.png
rename to bin/assets/themes/gelbooru-h/2.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/3.png b/bin/assets/themes/gelbooru-h/3.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/3.png
rename to bin/assets/themes/gelbooru-h/3.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/4.png b/bin/assets/themes/gelbooru-h/4.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/4.png
rename to bin/assets/themes/gelbooru-h/4.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/5.png b/bin/assets/themes/gelbooru-h/5.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/5.png
rename to bin/assets/themes/gelbooru-h/5.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/6.png b/bin/assets/themes/gelbooru-h/6.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/6.png
rename to bin/assets/themes/gelbooru-h/6.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/7.png b/bin/assets/themes/gelbooru-h/7.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/7.png
rename to bin/assets/themes/gelbooru-h/7.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/8.png b/bin/assets/themes/gelbooru-h/8.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/8.png
rename to bin/assets/themes/gelbooru-h/8.png
diff --git a/bin/assets/themes/moe_theme/gelbooru-h/9.png b/bin/assets/themes/gelbooru-h/9.png
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru-h/9.png
rename to bin/assets/themes/gelbooru-h/9.png
diff --git a/bin/assets/themes/moe_theme/gelbooru/0.gif b/bin/assets/themes/gelbooru/0.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/0.gif
rename to bin/assets/themes/gelbooru/0.gif
diff --git a/bin/assets/themes/moe_theme/gelbooru/1.gif b/bin/assets/themes/gelbooru/1.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/1.gif
rename to bin/assets/themes/gelbooru/1.gif
diff --git a/bin/assets/themes/moe_theme/gelbooru/2.gif b/bin/assets/themes/gelbooru/2.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/2.gif
rename to bin/assets/themes/gelbooru/2.gif
diff --git a/bin/assets/themes/moe_theme/gelbooru/3.gif b/bin/assets/themes/gelbooru/3.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/3.gif
rename to bin/assets/themes/gelbooru/3.gif
diff --git a/bin/assets/themes/gelbooru/4.gif b/bin/assets/themes/gelbooru/4.gif
new file mode 100644
index 0000000..aabf121
Binary files /dev/null and b/bin/assets/themes/gelbooru/4.gif differ
diff --git a/bin/assets/themes/moe_theme/gelbooru/5.gif b/bin/assets/themes/gelbooru/5.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/5.gif
rename to bin/assets/themes/gelbooru/5.gif
diff --git a/bin/assets/themes/gelbooru/6.gif b/bin/assets/themes/gelbooru/6.gif
new file mode 100644
index 0000000..cd316a0
Binary files /dev/null and b/bin/assets/themes/gelbooru/6.gif differ
diff --git a/bin/assets/themes/moe_theme/gelbooru/7.gif b/bin/assets/themes/gelbooru/7.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/7.gif
rename to bin/assets/themes/gelbooru/7.gif
diff --git a/bin/assets/themes/moe_theme/gelbooru/8.gif b/bin/assets/themes/gelbooru/8.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/8.gif
rename to bin/assets/themes/gelbooru/8.gif
diff --git a/bin/assets/themes/moe_theme/gelbooru/9.gif b/bin/assets/themes/gelbooru/9.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/gelbooru/9.gif
rename to bin/assets/themes/gelbooru/9.gif
diff --git a/bin/assets/themes/haniho/0.gif b/bin/assets/themes/haniho/0.gif
new file mode 100644
index 0000000..143754a
Binary files /dev/null and b/bin/assets/themes/haniho/0.gif differ
diff --git a/bin/assets/themes/haniho/1.gif b/bin/assets/themes/haniho/1.gif
new file mode 100644
index 0000000..32f2126
Binary files /dev/null and b/bin/assets/themes/haniho/1.gif differ
diff --git a/bin/assets/themes/haniho/2.gif b/bin/assets/themes/haniho/2.gif
new file mode 100644
index 0000000..c69dcb6
Binary files /dev/null and b/bin/assets/themes/haniho/2.gif differ
diff --git a/bin/assets/themes/haniho/3.gif b/bin/assets/themes/haniho/3.gif
new file mode 100644
index 0000000..55d22ea
Binary files /dev/null and b/bin/assets/themes/haniho/3.gif differ
diff --git a/bin/assets/themes/haniho/4.gif b/bin/assets/themes/haniho/4.gif
new file mode 100644
index 0000000..5a4245e
Binary files /dev/null and b/bin/assets/themes/haniho/4.gif differ
diff --git a/bin/assets/themes/haniho/5.gif b/bin/assets/themes/haniho/5.gif
new file mode 100644
index 0000000..4c750e3
Binary files /dev/null and b/bin/assets/themes/haniho/5.gif differ
diff --git a/bin/assets/themes/haniho/6.gif b/bin/assets/themes/haniho/6.gif
new file mode 100644
index 0000000..3b64a19
Binary files /dev/null and b/bin/assets/themes/haniho/6.gif differ
diff --git a/bin/assets/themes/haniho/7.gif b/bin/assets/themes/haniho/7.gif
new file mode 100644
index 0000000..0a542b6
Binary files /dev/null and b/bin/assets/themes/haniho/7.gif differ
diff --git a/bin/assets/themes/haniho/8.gif b/bin/assets/themes/haniho/8.gif
new file mode 100644
index 0000000..5136185
Binary files /dev/null and b/bin/assets/themes/haniho/8.gif differ
diff --git a/bin/assets/themes/haniho/9.gif b/bin/assets/themes/haniho/9.gif
new file mode 100644
index 0000000..efdf17a
Binary files /dev/null and b/bin/assets/themes/haniho/9.gif differ
diff --git a/bin/assets/themes/hgoon/0.gif b/bin/assets/themes/hgoon/0.gif
new file mode 100644
index 0000000..2627acc
Binary files /dev/null and b/bin/assets/themes/hgoon/0.gif differ
diff --git a/bin/assets/themes/hgoon/1.gif b/bin/assets/themes/hgoon/1.gif
new file mode 100644
index 0000000..98f49df
Binary files /dev/null and b/bin/assets/themes/hgoon/1.gif differ
diff --git a/bin/assets/themes/hgoon/2.gif b/bin/assets/themes/hgoon/2.gif
new file mode 100644
index 0000000..07169cd
Binary files /dev/null and b/bin/assets/themes/hgoon/2.gif differ
diff --git a/bin/assets/themes/hgoon/3.gif b/bin/assets/themes/hgoon/3.gif
new file mode 100644
index 0000000..bdaed34
Binary files /dev/null and b/bin/assets/themes/hgoon/3.gif differ
diff --git a/bin/assets/themes/hgoon/4.gif b/bin/assets/themes/hgoon/4.gif
new file mode 100644
index 0000000..8909143
Binary files /dev/null and b/bin/assets/themes/hgoon/4.gif differ
diff --git a/bin/assets/themes/hgoon/5.gif b/bin/assets/themes/hgoon/5.gif
new file mode 100644
index 0000000..2e9f844
Binary files /dev/null and b/bin/assets/themes/hgoon/5.gif differ
diff --git a/bin/assets/themes/hgoon/6.gif b/bin/assets/themes/hgoon/6.gif
new file mode 100644
index 0000000..a10b952
Binary files /dev/null and b/bin/assets/themes/hgoon/6.gif differ
diff --git a/bin/assets/themes/hgoon/7.gif b/bin/assets/themes/hgoon/7.gif
new file mode 100644
index 0000000..c2bd9e1
Binary files /dev/null and b/bin/assets/themes/hgoon/7.gif differ
diff --git a/bin/assets/themes/hgoon/8.gif b/bin/assets/themes/hgoon/8.gif
new file mode 100644
index 0000000..e7716a5
Binary files /dev/null and b/bin/assets/themes/hgoon/8.gif differ
diff --git a/bin/assets/themes/hgoon/9.gif b/bin/assets/themes/hgoon/9.gif
new file mode 100644
index 0000000..5e848d5
Binary files /dev/null and b/bin/assets/themes/hgoon/9.gif differ
diff --git a/bin/assets/themes/hypnohub/0.gif b/bin/assets/themes/hypnohub/0.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/0.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/1.gif b/bin/assets/themes/hypnohub/1.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/1.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/2.gif b/bin/assets/themes/hypnohub/2.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/2.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/3.gif b/bin/assets/themes/hypnohub/3.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/3.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/4.gif b/bin/assets/themes/hypnohub/4.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/4.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/5.gif b/bin/assets/themes/hypnohub/5.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/5.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/6.gif b/bin/assets/themes/hypnohub/6.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/6.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/7.gif b/bin/assets/themes/hypnohub/7.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/7.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/8.gif b/bin/assets/themes/hypnohub/8.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/8.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/hypnohub/9.gif b/bin/assets/themes/hypnohub/9.gif
new file mode 100644
index 0000000..99d83c0
--- /dev/null
+++ b/bin/assets/themes/hypnohub/9.gif
@@ -0,0 +1,7 @@
+
+404 Not Found
+
+
404 Not Found
+
nginx
+
+
diff --git a/bin/assets/themes/indiegame/0.gif b/bin/assets/themes/indiegame/0.gif
new file mode 100644
index 0000000..7dd226a
Binary files /dev/null and b/bin/assets/themes/indiegame/0.gif differ
diff --git a/bin/assets/themes/indiegame/1.gif b/bin/assets/themes/indiegame/1.gif
new file mode 100644
index 0000000..fb738f7
Binary files /dev/null and b/bin/assets/themes/indiegame/1.gif differ
diff --git a/bin/assets/themes/indiegame/2.gif b/bin/assets/themes/indiegame/2.gif
new file mode 100644
index 0000000..6529a20
Binary files /dev/null and b/bin/assets/themes/indiegame/2.gif differ
diff --git a/bin/assets/themes/indiegame/3.gif b/bin/assets/themes/indiegame/3.gif
new file mode 100644
index 0000000..9287f0d
Binary files /dev/null and b/bin/assets/themes/indiegame/3.gif differ
diff --git a/bin/assets/themes/indiegame/4.gif b/bin/assets/themes/indiegame/4.gif
new file mode 100644
index 0000000..2d32b12
Binary files /dev/null and b/bin/assets/themes/indiegame/4.gif differ
diff --git a/bin/assets/themes/indiegame/5.gif b/bin/assets/themes/indiegame/5.gif
new file mode 100644
index 0000000..5789187
Binary files /dev/null and b/bin/assets/themes/indiegame/5.gif differ
diff --git a/bin/assets/themes/indiegame/6.gif b/bin/assets/themes/indiegame/6.gif
new file mode 100644
index 0000000..5945698
Binary files /dev/null and b/bin/assets/themes/indiegame/6.gif differ
diff --git a/bin/assets/themes/indiegame/7.gif b/bin/assets/themes/indiegame/7.gif
new file mode 100644
index 0000000..c3a3861
Binary files /dev/null and b/bin/assets/themes/indiegame/7.gif differ
diff --git a/bin/assets/themes/indiegame/8.gif b/bin/assets/themes/indiegame/8.gif
new file mode 100644
index 0000000..5af7329
Binary files /dev/null and b/bin/assets/themes/indiegame/8.gif differ
diff --git a/bin/assets/themes/indiegame/9.gif b/bin/assets/themes/indiegame/9.gif
new file mode 100644
index 0000000..3a2ebb2
Binary files /dev/null and b/bin/assets/themes/indiegame/9.gif differ
diff --git a/bin/assets/themes/insert_db.py b/bin/assets/themes/insert_db.py
index 0ded55b..6f3583c 100644
--- a/bin/assets/themes/insert_db.py
+++ b/bin/assets/themes/insert_db.py
@@ -1,6 +1,39 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/8
-# @File Name: insert_db.py
\ No newline at end of file
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/8
+# @File Name: insert_db.py
+
+
+import os
+import base64
+from PIL import Image
+import sqlite3
+
+conn = sqlite3.connect('../theme.db')
+cursor = conn.cursor()
+
+
+def get_size(file):
+ img = Image.open(file)
+ return img.size
+
+
+dir_name = './rfck'
+lst = os.listdir(dir_name)
+c = 0
+for i in lst:
+ w, h = get_size(f'{dir_name}/{i}')
+ type_ = i.split('.')[-1]
+ if type_ == 'png':
+ type_ = 'jepg'
+ else:
+ type_ = 'gif'
+ with open(f'./{dir_name}/{i}', 'rb') as f:
+ base64_data = base64.b64encode(f.read())
+ base64_code = f'data:image/{type_};base64,' + base64_data.decode('utf-8')
+ cursor.execute('insert into rfck values(?, ?, ?, ?)', (c, base64_code, w, h))
+ conn.commit()
+ c += 1
+
diff --git a/bin/assets/themes/kanayabooru/0.gif b/bin/assets/themes/kanayabooru/0.gif
new file mode 100644
index 0000000..285f2c1
Binary files /dev/null and b/bin/assets/themes/kanayabooru/0.gif differ
diff --git a/bin/assets/themes/kanayabooru/1.gif b/bin/assets/themes/kanayabooru/1.gif
new file mode 100644
index 0000000..3707ce0
Binary files /dev/null and b/bin/assets/themes/kanayabooru/1.gif differ
diff --git a/bin/assets/themes/kanayabooru/2.gif b/bin/assets/themes/kanayabooru/2.gif
new file mode 100644
index 0000000..1d8b3a6
Binary files /dev/null and b/bin/assets/themes/kanayabooru/2.gif differ
diff --git a/bin/assets/themes/kanayabooru/3.gif b/bin/assets/themes/kanayabooru/3.gif
new file mode 100644
index 0000000..5f9e798
Binary files /dev/null and b/bin/assets/themes/kanayabooru/3.gif differ
diff --git a/bin/assets/themes/kanayabooru/4.gif b/bin/assets/themes/kanayabooru/4.gif
new file mode 100644
index 0000000..47c14e1
Binary files /dev/null and b/bin/assets/themes/kanayabooru/4.gif differ
diff --git a/bin/assets/themes/kanayabooru/5.gif b/bin/assets/themes/kanayabooru/5.gif
new file mode 100644
index 0000000..7faf587
Binary files /dev/null and b/bin/assets/themes/kanayabooru/5.gif differ
diff --git a/bin/assets/themes/kanayabooru/6.gif b/bin/assets/themes/kanayabooru/6.gif
new file mode 100644
index 0000000..d976e32
Binary files /dev/null and b/bin/assets/themes/kanayabooru/6.gif differ
diff --git a/bin/assets/themes/kanayabooru/7.gif b/bin/assets/themes/kanayabooru/7.gif
new file mode 100644
index 0000000..4f33425
Binary files /dev/null and b/bin/assets/themes/kanayabooru/7.gif differ
diff --git a/bin/assets/themes/kanayabooru/8.gif b/bin/assets/themes/kanayabooru/8.gif
new file mode 100644
index 0000000..f56454e
Binary files /dev/null and b/bin/assets/themes/kanayabooru/8.gif differ
diff --git a/bin/assets/themes/kanayabooru/9.gif b/bin/assets/themes/kanayabooru/9.gif
new file mode 100644
index 0000000..2824acb
Binary files /dev/null and b/bin/assets/themes/kanayabooru/9.gif differ
diff --git a/bin/assets/themes/koe/0.gif b/bin/assets/themes/koe/0.gif
new file mode 100644
index 0000000..b4f7357
Binary files /dev/null and b/bin/assets/themes/koe/0.gif differ
diff --git a/bin/assets/themes/koe/1.gif b/bin/assets/themes/koe/1.gif
new file mode 100644
index 0000000..e0bd727
Binary files /dev/null and b/bin/assets/themes/koe/1.gif differ
diff --git a/bin/assets/themes/koe/2.gif b/bin/assets/themes/koe/2.gif
new file mode 100644
index 0000000..0480e41
Binary files /dev/null and b/bin/assets/themes/koe/2.gif differ
diff --git a/bin/assets/themes/koe/3.gif b/bin/assets/themes/koe/3.gif
new file mode 100644
index 0000000..813c4fa
Binary files /dev/null and b/bin/assets/themes/koe/3.gif differ
diff --git a/bin/assets/themes/koe/4.gif b/bin/assets/themes/koe/4.gif
new file mode 100644
index 0000000..69fdfe0
Binary files /dev/null and b/bin/assets/themes/koe/4.gif differ
diff --git a/bin/assets/themes/koe/5.gif b/bin/assets/themes/koe/5.gif
new file mode 100644
index 0000000..2f7382c
Binary files /dev/null and b/bin/assets/themes/koe/5.gif differ
diff --git a/bin/assets/themes/koe/6.gif b/bin/assets/themes/koe/6.gif
new file mode 100644
index 0000000..d07dd74
Binary files /dev/null and b/bin/assets/themes/koe/6.gif differ
diff --git a/bin/assets/themes/koe/7.gif b/bin/assets/themes/koe/7.gif
new file mode 100644
index 0000000..3aef98d
Binary files /dev/null and b/bin/assets/themes/koe/7.gif differ
diff --git a/bin/assets/themes/koe/8.gif b/bin/assets/themes/koe/8.gif
new file mode 100644
index 0000000..5fc0447
Binary files /dev/null and b/bin/assets/themes/koe/8.gif differ
diff --git a/bin/assets/themes/koe/9.gif b/bin/assets/themes/koe/9.gif
new file mode 100644
index 0000000..f0a08c1
Binary files /dev/null and b/bin/assets/themes/koe/9.gif differ
diff --git a/bin/assets/themes/lefty/0.gif b/bin/assets/themes/lefty/0.gif
new file mode 100644
index 0000000..daf52ca
Binary files /dev/null and b/bin/assets/themes/lefty/0.gif differ
diff --git a/bin/assets/themes/lefty/1.gif b/bin/assets/themes/lefty/1.gif
new file mode 100644
index 0000000..1e66e0f
Binary files /dev/null and b/bin/assets/themes/lefty/1.gif differ
diff --git a/bin/assets/themes/lefty/2.gif b/bin/assets/themes/lefty/2.gif
new file mode 100644
index 0000000..1212db4
Binary files /dev/null and b/bin/assets/themes/lefty/2.gif differ
diff --git a/bin/assets/themes/lefty/3.gif b/bin/assets/themes/lefty/3.gif
new file mode 100644
index 0000000..4d10c66
Binary files /dev/null and b/bin/assets/themes/lefty/3.gif differ
diff --git a/bin/assets/themes/lefty/4.gif b/bin/assets/themes/lefty/4.gif
new file mode 100644
index 0000000..7c377ef
Binary files /dev/null and b/bin/assets/themes/lefty/4.gif differ
diff --git a/bin/assets/themes/lefty/5.gif b/bin/assets/themes/lefty/5.gif
new file mode 100644
index 0000000..ce3285f
Binary files /dev/null and b/bin/assets/themes/lefty/5.gif differ
diff --git a/bin/assets/themes/lefty/6.gif b/bin/assets/themes/lefty/6.gif
new file mode 100644
index 0000000..2a6c5ce
Binary files /dev/null and b/bin/assets/themes/lefty/6.gif differ
diff --git a/bin/assets/themes/lefty/7.gif b/bin/assets/themes/lefty/7.gif
new file mode 100644
index 0000000..45f19d5
Binary files /dev/null and b/bin/assets/themes/lefty/7.gif differ
diff --git a/bin/assets/themes/lefty/8.gif b/bin/assets/themes/lefty/8.gif
new file mode 100644
index 0000000..7747a19
Binary files /dev/null and b/bin/assets/themes/lefty/8.gif differ
diff --git a/bin/assets/themes/lefty/9.gif b/bin/assets/themes/lefty/9.gif
new file mode 100644
index 0000000..0c854b2
Binary files /dev/null and b/bin/assets/themes/lefty/9.gif differ
diff --git a/bin/assets/themes/moe_theme/README.md b/bin/assets/themes/moe_theme/README.md
deleted file mode 100644
index 3070402..0000000
--- a/bin/assets/themes/moe_theme/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# 此文件夹内的所有文件全部来自 https://github.com/journey-ad/Moe-counter
-# 原作者: journey-ad
\ No newline at end of file
diff --git a/bin/assets/themes/moe_theme/moebooru-h/0.png b/bin/assets/themes/moebooru-h/0.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/0.png
rename to bin/assets/themes/moebooru-h/0.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/1.png b/bin/assets/themes/moebooru-h/1.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/1.png
rename to bin/assets/themes/moebooru-h/1.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/2.png b/bin/assets/themes/moebooru-h/2.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/2.png
rename to bin/assets/themes/moebooru-h/2.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/3.png b/bin/assets/themes/moebooru-h/3.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/3.png
rename to bin/assets/themes/moebooru-h/3.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/4.png b/bin/assets/themes/moebooru-h/4.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/4.png
rename to bin/assets/themes/moebooru-h/4.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/5.png b/bin/assets/themes/moebooru-h/5.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/5.png
rename to bin/assets/themes/moebooru-h/5.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/6.png b/bin/assets/themes/moebooru-h/6.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/6.png
rename to bin/assets/themes/moebooru-h/6.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/7.png b/bin/assets/themes/moebooru-h/7.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/7.png
rename to bin/assets/themes/moebooru-h/7.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/8.png b/bin/assets/themes/moebooru-h/8.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/8.png
rename to bin/assets/themes/moebooru-h/8.png
diff --git a/bin/assets/themes/moe_theme/moebooru-h/9.png b/bin/assets/themes/moebooru-h/9.png
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru-h/9.png
rename to bin/assets/themes/moebooru-h/9.png
diff --git a/bin/assets/themes/moe_theme/moebooru/0.gif b/bin/assets/themes/moebooru/0.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/0.gif
rename to bin/assets/themes/moebooru/0.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/1.gif b/bin/assets/themes/moebooru/1.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/1.gif
rename to bin/assets/themes/moebooru/1.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/2.gif b/bin/assets/themes/moebooru/2.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/2.gif
rename to bin/assets/themes/moebooru/2.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/3.gif b/bin/assets/themes/moebooru/3.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/3.gif
rename to bin/assets/themes/moebooru/3.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/4.gif b/bin/assets/themes/moebooru/4.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/4.gif
rename to bin/assets/themes/moebooru/4.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/5.gif b/bin/assets/themes/moebooru/5.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/5.gif
rename to bin/assets/themes/moebooru/5.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/6.gif b/bin/assets/themes/moebooru/6.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/6.gif
rename to bin/assets/themes/moebooru/6.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/7.gif b/bin/assets/themes/moebooru/7.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/7.gif
rename to bin/assets/themes/moebooru/7.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/8.gif b/bin/assets/themes/moebooru/8.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/8.gif
rename to bin/assets/themes/moebooru/8.gif
diff --git a/bin/assets/themes/moe_theme/moebooru/9.gif b/bin/assets/themes/moebooru/9.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/moebooru/9.gif
rename to bin/assets/themes/moebooru/9.gif
diff --git a/bin/assets/themes/proton/0.gif b/bin/assets/themes/proton/0.gif
new file mode 100644
index 0000000..237b716
Binary files /dev/null and b/bin/assets/themes/proton/0.gif differ
diff --git a/bin/assets/themes/proton/1.gif b/bin/assets/themes/proton/1.gif
new file mode 100644
index 0000000..3e3e662
Binary files /dev/null and b/bin/assets/themes/proton/1.gif differ
diff --git a/bin/assets/themes/proton/2.gif b/bin/assets/themes/proton/2.gif
new file mode 100644
index 0000000..11f33ff
Binary files /dev/null and b/bin/assets/themes/proton/2.gif differ
diff --git a/bin/assets/themes/proton/3.gif b/bin/assets/themes/proton/3.gif
new file mode 100644
index 0000000..fcd7f2e
Binary files /dev/null and b/bin/assets/themes/proton/3.gif differ
diff --git a/bin/assets/themes/proton/4.gif b/bin/assets/themes/proton/4.gif
new file mode 100644
index 0000000..77048df
Binary files /dev/null and b/bin/assets/themes/proton/4.gif differ
diff --git a/bin/assets/themes/proton/5.gif b/bin/assets/themes/proton/5.gif
new file mode 100644
index 0000000..c228b6b
Binary files /dev/null and b/bin/assets/themes/proton/5.gif differ
diff --git a/bin/assets/themes/proton/6.gif b/bin/assets/themes/proton/6.gif
new file mode 100644
index 0000000..006218d
Binary files /dev/null and b/bin/assets/themes/proton/6.gif differ
diff --git a/bin/assets/themes/proton/7.gif b/bin/assets/themes/proton/7.gif
new file mode 100644
index 0000000..8ebf9cd
Binary files /dev/null and b/bin/assets/themes/proton/7.gif differ
diff --git a/bin/assets/themes/proton/8.gif b/bin/assets/themes/proton/8.gif
new file mode 100644
index 0000000..9b2e699
Binary files /dev/null and b/bin/assets/themes/proton/8.gif differ
diff --git a/bin/assets/themes/proton/9.gif b/bin/assets/themes/proton/9.gif
new file mode 100644
index 0000000..3f829cf
Binary files /dev/null and b/bin/assets/themes/proton/9.gif differ
diff --git a/bin/assets/themes/rfck/0.gif b/bin/assets/themes/rfck/0.gif
new file mode 100644
index 0000000..e01ac20
Binary files /dev/null and b/bin/assets/themes/rfck/0.gif differ
diff --git a/bin/assets/themes/rfck/1.gif b/bin/assets/themes/rfck/1.gif
new file mode 100644
index 0000000..c5dfb12
Binary files /dev/null and b/bin/assets/themes/rfck/1.gif differ
diff --git a/bin/assets/themes/rfck/2.gif b/bin/assets/themes/rfck/2.gif
new file mode 100644
index 0000000..e32a7ac
Binary files /dev/null and b/bin/assets/themes/rfck/2.gif differ
diff --git a/bin/assets/themes/rfck/3.gif b/bin/assets/themes/rfck/3.gif
new file mode 100644
index 0000000..72b60f8
Binary files /dev/null and b/bin/assets/themes/rfck/3.gif differ
diff --git a/bin/assets/themes/rfck/4.gif b/bin/assets/themes/rfck/4.gif
new file mode 100644
index 0000000..b3220ce
Binary files /dev/null and b/bin/assets/themes/rfck/4.gif differ
diff --git a/bin/assets/themes/rfck/5.gif b/bin/assets/themes/rfck/5.gif
new file mode 100644
index 0000000..ec96be6
Binary files /dev/null and b/bin/assets/themes/rfck/5.gif differ
diff --git a/bin/assets/themes/rfck/6.gif b/bin/assets/themes/rfck/6.gif
new file mode 100644
index 0000000..a28424c
Binary files /dev/null and b/bin/assets/themes/rfck/6.gif differ
diff --git a/bin/assets/themes/rfck/7.gif b/bin/assets/themes/rfck/7.gif
new file mode 100644
index 0000000..affe337
Binary files /dev/null and b/bin/assets/themes/rfck/7.gif differ
diff --git a/bin/assets/themes/rfck/8.gif b/bin/assets/themes/rfck/8.gif
new file mode 100644
index 0000000..df42c09
Binary files /dev/null and b/bin/assets/themes/rfck/8.gif differ
diff --git a/bin/assets/themes/rfck/9.gif b/bin/assets/themes/rfck/9.gif
new file mode 100644
index 0000000..1866013
Binary files /dev/null and b/bin/assets/themes/rfck/9.gif differ
diff --git a/bin/assets/themes/moe_theme/rule34/0.gif b/bin/assets/themes/rule34/0.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/0.gif
rename to bin/assets/themes/rule34/0.gif
diff --git a/bin/assets/themes/moe_theme/rule34/1.gif b/bin/assets/themes/rule34/1.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/1.gif
rename to bin/assets/themes/rule34/1.gif
diff --git a/bin/assets/themes/moe_theme/rule34/2.gif b/bin/assets/themes/rule34/2.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/2.gif
rename to bin/assets/themes/rule34/2.gif
diff --git a/bin/assets/themes/moe_theme/rule34/3.gif b/bin/assets/themes/rule34/3.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/3.gif
rename to bin/assets/themes/rule34/3.gif
diff --git a/bin/assets/themes/moe_theme/rule34/4.gif b/bin/assets/themes/rule34/4.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/4.gif
rename to bin/assets/themes/rule34/4.gif
diff --git a/bin/assets/themes/moe_theme/rule34/5.gif b/bin/assets/themes/rule34/5.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/5.gif
rename to bin/assets/themes/rule34/5.gif
diff --git a/bin/assets/themes/moe_theme/rule34/6.gif b/bin/assets/themes/rule34/6.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/6.gif
rename to bin/assets/themes/rule34/6.gif
diff --git a/bin/assets/themes/moe_theme/rule34/7.gif b/bin/assets/themes/rule34/7.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/7.gif
rename to bin/assets/themes/rule34/7.gif
diff --git a/bin/assets/themes/moe_theme/rule34/8.gif b/bin/assets/themes/rule34/8.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/8.gif
rename to bin/assets/themes/rule34/8.gif
diff --git a/bin/assets/themes/moe_theme/rule34/9.gif b/bin/assets/themes/rule34/9.gif
similarity index 100%
rename from bin/assets/themes/moe_theme/rule34/9.gif
rename to bin/assets/themes/rule34/9.gif
diff --git a/bin/assets/themes/steambanners/0.gif b/bin/assets/themes/steambanners/0.gif
new file mode 100644
index 0000000..9773838
Binary files /dev/null and b/bin/assets/themes/steambanners/0.gif differ
diff --git a/bin/assets/themes/steambanners/1.gif b/bin/assets/themes/steambanners/1.gif
new file mode 100644
index 0000000..a62a419
Binary files /dev/null and b/bin/assets/themes/steambanners/1.gif differ
diff --git a/bin/assets/themes/steambanners/2.gif b/bin/assets/themes/steambanners/2.gif
new file mode 100644
index 0000000..cd84d6d
Binary files /dev/null and b/bin/assets/themes/steambanners/2.gif differ
diff --git a/bin/assets/themes/steambanners/3.gif b/bin/assets/themes/steambanners/3.gif
new file mode 100644
index 0000000..eaf5250
Binary files /dev/null and b/bin/assets/themes/steambanners/3.gif differ
diff --git a/bin/assets/themes/steambanners/4.gif b/bin/assets/themes/steambanners/4.gif
new file mode 100644
index 0000000..a614f74
Binary files /dev/null and b/bin/assets/themes/steambanners/4.gif differ
diff --git a/bin/assets/themes/steambanners/5.gif b/bin/assets/themes/steambanners/5.gif
new file mode 100644
index 0000000..c87df90
Binary files /dev/null and b/bin/assets/themes/steambanners/5.gif differ
diff --git a/bin/assets/themes/steambanners/6.gif b/bin/assets/themes/steambanners/6.gif
new file mode 100644
index 0000000..629e4f1
Binary files /dev/null and b/bin/assets/themes/steambanners/6.gif differ
diff --git a/bin/assets/themes/steambanners/7.gif b/bin/assets/themes/steambanners/7.gif
new file mode 100644
index 0000000..076c3e9
Binary files /dev/null and b/bin/assets/themes/steambanners/7.gif differ
diff --git a/bin/assets/themes/steambanners/8.gif b/bin/assets/themes/steambanners/8.gif
new file mode 100644
index 0000000..b836654
Binary files /dev/null and b/bin/assets/themes/steambanners/8.gif differ
diff --git a/bin/assets/themes/steambanners/9.gif b/bin/assets/themes/steambanners/9.gif
new file mode 100644
index 0000000..4d8f92a
Binary files /dev/null and b/bin/assets/themes/steambanners/9.gif differ
diff --git a/bin/assets/themes/sthg/0.gif b/bin/assets/themes/sthg/0.gif
new file mode 100644
index 0000000..4e1b728
Binary files /dev/null and b/bin/assets/themes/sthg/0.gif differ
diff --git a/bin/assets/themes/sthg/1.gif b/bin/assets/themes/sthg/1.gif
new file mode 100644
index 0000000..4cc5797
Binary files /dev/null and b/bin/assets/themes/sthg/1.gif differ
diff --git a/bin/assets/themes/sthg/2.gif b/bin/assets/themes/sthg/2.gif
new file mode 100644
index 0000000..413041e
Binary files /dev/null and b/bin/assets/themes/sthg/2.gif differ
diff --git a/bin/assets/themes/sthg/3.gif b/bin/assets/themes/sthg/3.gif
new file mode 100644
index 0000000..419734c
Binary files /dev/null and b/bin/assets/themes/sthg/3.gif differ
diff --git a/bin/assets/themes/sthg/4.gif b/bin/assets/themes/sthg/4.gif
new file mode 100644
index 0000000..a926113
Binary files /dev/null and b/bin/assets/themes/sthg/4.gif differ
diff --git a/bin/assets/themes/sthg/5.gif b/bin/assets/themes/sthg/5.gif
new file mode 100644
index 0000000..b3602e7
Binary files /dev/null and b/bin/assets/themes/sthg/5.gif differ
diff --git a/bin/assets/themes/sthg/6.gif b/bin/assets/themes/sthg/6.gif
new file mode 100644
index 0000000..fc4cf80
Binary files /dev/null and b/bin/assets/themes/sthg/6.gif differ
diff --git a/bin/assets/themes/sthg/7.gif b/bin/assets/themes/sthg/7.gif
new file mode 100644
index 0000000..6c5cfec
Binary files /dev/null and b/bin/assets/themes/sthg/7.gif differ
diff --git a/bin/assets/themes/sthg/8.gif b/bin/assets/themes/sthg/8.gif
new file mode 100644
index 0000000..9cb2870
Binary files /dev/null and b/bin/assets/themes/sthg/8.gif differ
diff --git a/bin/assets/themes/sthg/9.gif b/bin/assets/themes/sthg/9.gif
new file mode 100644
index 0000000..581a708
Binary files /dev/null and b/bin/assets/themes/sthg/9.gif differ
diff --git a/bin/assets/themes/t1/0.svg b/bin/assets/themes/t1/0.svg
deleted file mode 100644
index 70cb461..0000000
--- a/bin/assets/themes/t1/0.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/1.svg b/bin/assets/themes/t1/1.svg
deleted file mode 100644
index c34821b..0000000
--- a/bin/assets/themes/t1/1.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/2.svg b/bin/assets/themes/t1/2.svg
deleted file mode 100644
index 6983a3c..0000000
--- a/bin/assets/themes/t1/2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/3.svg b/bin/assets/themes/t1/3.svg
deleted file mode 100644
index bc5067b..0000000
--- a/bin/assets/themes/t1/3.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/4.svg b/bin/assets/themes/t1/4.svg
deleted file mode 100644
index 966cd26..0000000
--- a/bin/assets/themes/t1/4.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/5.svg b/bin/assets/themes/t1/5.svg
deleted file mode 100644
index 1d23ff8..0000000
--- a/bin/assets/themes/t1/5.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/6.svg b/bin/assets/themes/t1/6.svg
deleted file mode 100644
index 98e8e5f..0000000
--- a/bin/assets/themes/t1/6.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/7.svg b/bin/assets/themes/t1/7.svg
deleted file mode 100644
index 72ad1ac..0000000
--- a/bin/assets/themes/t1/7.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/8.svg b/bin/assets/themes/t1/8.svg
deleted file mode 100644
index 51e522d..0000000
--- a/bin/assets/themes/t1/8.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t1/9.svg b/bin/assets/themes/t1/9.svg
deleted file mode 100644
index f9be6bc..0000000
--- a/bin/assets/themes/t1/9.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/0 黄色.svg b/bin/assets/themes/t2/0 黄色.svg
deleted file mode 100644
index e22900e..0000000
--- a/bin/assets/themes/t2/0 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/1 黄色.svg b/bin/assets/themes/t2/1 黄色.svg
deleted file mode 100644
index 7354859..0000000
--- a/bin/assets/themes/t2/1 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/2 黄色.svg b/bin/assets/themes/t2/2 黄色.svg
deleted file mode 100644
index 3316fde..0000000
--- a/bin/assets/themes/t2/2 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/3 黄色.svg b/bin/assets/themes/t2/3 黄色.svg
deleted file mode 100644
index 570f3a8..0000000
--- a/bin/assets/themes/t2/3 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/4 黄色.svg b/bin/assets/themes/t2/4 黄色.svg
deleted file mode 100644
index d3b3dd6..0000000
--- a/bin/assets/themes/t2/4 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/5 黄色.svg b/bin/assets/themes/t2/5 黄色.svg
deleted file mode 100644
index 6da0e10..0000000
--- a/bin/assets/themes/t2/5 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/6 黄色.svg b/bin/assets/themes/t2/6 黄色.svg
deleted file mode 100644
index fe57837..0000000
--- a/bin/assets/themes/t2/6 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/7 黄色.svg b/bin/assets/themes/t2/7 黄色.svg
deleted file mode 100644
index f5cc797..0000000
--- a/bin/assets/themes/t2/7 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/8 黄色.svg b/bin/assets/themes/t2/8 黄色.svg
deleted file mode 100644
index c9f749c..0000000
--- a/bin/assets/themes/t2/8 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/t2/9 黄色.svg b/bin/assets/themes/t2/9 黄色.svg
deleted file mode 100644
index 48c7953..0000000
--- a/bin/assets/themes/t2/9 黄色.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/bin/assets/themes/tcc/0.gif b/bin/assets/themes/tcc/0.gif
new file mode 100644
index 0000000..e474210
Binary files /dev/null and b/bin/assets/themes/tcc/0.gif differ
diff --git a/bin/assets/themes/tcc/1.gif b/bin/assets/themes/tcc/1.gif
new file mode 100644
index 0000000..7f6769c
Binary files /dev/null and b/bin/assets/themes/tcc/1.gif differ
diff --git a/bin/assets/themes/tcc/2.gif b/bin/assets/themes/tcc/2.gif
new file mode 100644
index 0000000..9b5b830
Binary files /dev/null and b/bin/assets/themes/tcc/2.gif differ
diff --git a/bin/assets/themes/tcc/3.gif b/bin/assets/themes/tcc/3.gif
new file mode 100644
index 0000000..a6ca42a
Binary files /dev/null and b/bin/assets/themes/tcc/3.gif differ
diff --git a/bin/assets/themes/tcc/4.gif b/bin/assets/themes/tcc/4.gif
new file mode 100644
index 0000000..9ae9e09
Binary files /dev/null and b/bin/assets/themes/tcc/4.gif differ
diff --git a/bin/assets/themes/tcc/5.gif b/bin/assets/themes/tcc/5.gif
new file mode 100644
index 0000000..34935fc
Binary files /dev/null and b/bin/assets/themes/tcc/5.gif differ
diff --git a/bin/assets/themes/tcc/6.gif b/bin/assets/themes/tcc/6.gif
new file mode 100644
index 0000000..081c0cf
Binary files /dev/null and b/bin/assets/themes/tcc/6.gif differ
diff --git a/bin/assets/themes/tcc/7.gif b/bin/assets/themes/tcc/7.gif
new file mode 100644
index 0000000..c8dfb36
Binary files /dev/null and b/bin/assets/themes/tcc/7.gif differ
diff --git a/bin/assets/themes/tcc/8.gif b/bin/assets/themes/tcc/8.gif
new file mode 100644
index 0000000..4a33b29
Binary files /dev/null and b/bin/assets/themes/tcc/8.gif differ
diff --git a/bin/assets/themes/tcc/9.gif b/bin/assets/themes/tcc/9.gif
new file mode 100644
index 0000000..250c103
Binary files /dev/null and b/bin/assets/themes/tcc/9.gif differ
diff --git a/bin/core/__init__.py b/bin/core/__init__.py
index d4c17cc..ac042b8 100644
--- a/bin/core/__init__.py
+++ b/bin/core/__init__.py
@@ -1,7 +1,7 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/5
-# @File Name: __init__.py.py
-
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/5
+# @File Name: __init__.py.py
+
diff --git a/bin/core/b64img.py b/bin/core/b64img.py
index 00f672b..3171cc2 100644
--- a/bin/core/b64img.py
+++ b/bin/core/b64img.py
@@ -1,76 +1,65 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/3
-# @File Name: b64img.py
-
-
-import sqlite3
-
-
-def re_sort_number_image(origin_number: str, theme: str) -> list:
- """
- 返回一个排列好的svg base64代码列表
- :param theme:
- :param origin_number:
- :return:
- """
- print(theme)
- if theme == 't1':
- cursor.execute('select * from theme1')
- elif theme == 't2':
- cursor.execute('select * from theme2')
- elif theme == 'gelbooru':
- cursor.execute('select * from gelbooru')
- elif theme == 'gelbooru-h':
- cursor.execute('select * from gelbooruh')
- elif theme == 'moebooru':
- cursor.execute('select * from moebooru')
- elif theme == 'moebooru-h':
- cursor.execute('select * from moebooruh')
- elif theme == 'rule34':
- cursor.execute('select * from rule34')
- else:
- cursor.execute('select * from rule34')
- data = cursor.fetchall()
- temp_dict = {}
- for k, v in data:
- temp_dict.setdefault(k, []).append(v)
- for i, c in zip(temp_dict.keys(), temp_dict.values()):
- temp_dict[i] = c[0]
-
- final_b64_img_code = []
- if origin_number != '0000000000':
- for i in origin_number:
- if i == '0':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '1':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '2':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '3':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '4':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '5':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '6':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '7':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '8':
- final_b64_img_code.append(temp_dict.get(str(i)))
- elif i == '9':
- final_b64_img_code.append(temp_dict.get(str(i)))
-
- return final_b64_img_code
- else:
- for i in range(10):
- final_b64_img_code.append(temp_dict.get(str(0)))
- return final_b64_img_code
-
-
-if __name__ != '__main__':
- conn = sqlite3.connect('./bin/assets/theme.db')
- cursor = conn.cursor()
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/3
+# @File Name: b64img.py
+
+
+import sqlite3
+
+
+def re_sort_number_image(origin_number: str, theme: str) -> list:
+ """
+ 返回一个排列好的svg base64代码列表
+ :param theme:
+ :param origin_number:
+ :return:
+ """
+ try:
+ cursor.execute('select * from %(theme_db)s' % {'theme_db': theme} )
+ except sqlite3.OperationalError:
+ return False
+ width_list = []
+ height_list = []
+ b_64_list = []
+ data = cursor.fetchall()
+ for i in data:
+ width_list.append(i[2])
+ height_list.append(i[3])
+ b_64_list.append(i[1])
+
+ final_b64_img_code = []
+ if origin_number != '0000000000':
+ for i in origin_number:
+ if i == '0':
+ final_b64_img_code.append(b_64_list[0])
+ elif i == '1':
+ final_b64_img_code.append(b_64_list[1])
+ elif i == '2':
+ final_b64_img_code.append(b_64_list[2])
+ elif i == '3':
+ final_b64_img_code.append(b_64_list[3])
+ elif i == '4':
+ final_b64_img_code.append(b_64_list[4])
+ elif i == '5':
+ final_b64_img_code.append(b_64_list[5])
+ elif i == '6':
+ final_b64_img_code.append(b_64_list[6])
+ elif i == '7':
+ final_b64_img_code.append(b_64_list[7])
+ elif i == '8':
+ final_b64_img_code.append(b_64_list[8])
+ elif i == '9':
+ final_b64_img_code.append(b_64_list[9])
+
+ return final_b64_img_code, width_list[0], height_list[0]
+ else:
+ for i in range(10):
+ final_b64_img_code.append(b_64_list[0])
+ return final_b64_img_code, width_list[0], height_list[0]
+
+
+if __name__ != '__main__':
+ conn = sqlite3.connect('./bin/assets/theme.db', check_same_thread=False)
+ cursor = conn.cursor()
diff --git a/bin/core/render_.py b/bin/core/render_.py
index 61a054f..faedea1 100644
--- a/bin/core/render_.py
+++ b/bin/core/render_.py
@@ -1,76 +1,123 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/5
-# @File Name: render_.py
-
-
-from flask import render_template
-
-
-def render_temp_(length: int, name: str, image_list: list, theme: str) -> str:
- """
- 代码很烂写到隐蔽的地方就看不见了
- :param theme:
- :param length:
- :param name:
- :param image_list:
- :return:
- """
- if 'gelbooru' in theme:
- file_name = f'index{length}-spec.html'
- else:
- file_name = f'index{length}.html'
-
- # 自己写的都看不下去了
- if length == 7:
- return render_template(file_name,
- title=name,
- svg_img_0=f'{image_list[0]}',
- svg_img_1=f'{image_list[1]}',
- svg_img_2=f'{image_list[2]}',
- svg_img_3=f'{image_list[3]}',
- svg_img_4=f'{image_list[4]}',
- svg_img_5=f'{image_list[5]}',
- svg_img_6=f'{image_list[6]}'
- )
- elif length == 8:
- return render_template(file_name,
- title=name,
- svg_img_0=f'{image_list[0]}',
- svg_img_1=f'{image_list[1]}',
- svg_img_2=f'{image_list[2]}',
- svg_img_3=f'{image_list[3]}',
- svg_img_4=f'{image_list[4]}',
- svg_img_5=f'{image_list[5]}',
- svg_img_6=f'{image_list[6]}',
- svg_img_7=f'{image_list[7]}'
- )
- elif length == 9:
- return render_template(file_name,
- title=name,
- svg_img_0=f'{image_list[0]}',
- svg_img_1=f'{image_list[1]}',
- svg_img_2=f'{image_list[2]}',
- svg_img_3=f'{image_list[3]}',
- svg_img_4=f'{image_list[4]}',
- svg_img_5=f'{image_list[5]}',
- svg_img_6=f'{image_list[6]}',
- svg_img_7=f'{image_list[7]}',
- svg_img_8=f'{image_list[8]}',
- )
- elif length == 10:
- return render_template(file_name,
- title=name,
- svg_img_0=f'{image_list[0]}',
- svg_img_1=f'{image_list[1]}',
- svg_img_2=f'{image_list[2]}',
- svg_img_3=f'{image_list[3]}',
- svg_img_4=f'{image_list[4]}',
- svg_img_5=f'{image_list[5]}',
- svg_img_6=f'{image_list[6]}',
- svg_img_7=f'{image_list[7]}',
- svg_img_8=f'{image_list[8]}',
- svg_img_9=f'{image_list[9]}'
- )
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/5
+# @File Name: render_.py
+
+
+from flask import render_template
+
+
+def render_temp_(length: int, name: str, image_list: list, width: int, height: int) -> str:
+ """
+ 代码很烂写到隐蔽的地方就看不见了
+ :param height:
+ :param width:
+ :param length:
+ :param name:
+ :param image_list:
+ :return:
+ """
+ position_list = []
+ for i in range(0, length):
+ position_list.append(i * width)
+ file_name = f'index{length}.html'
+
+ # 自己写的都看不下去了
+ if length == 7:
+ return render_template(file_name,
+ title=name,
+ g_width=length * width,
+ width=width,
+ height=height,
+ x_position_0=position_list[0],
+ x_position_1=position_list[1],
+ x_position_2=position_list[2],
+ x_position_3=position_list[3],
+ x_position_4=position_list[4],
+ x_position_5=position_list[5],
+ x_position_6=position_list[6],
+ svg_img_0=f'{image_list[0]}',
+ svg_img_1=f'{image_list[1]}',
+ svg_img_2=f'{image_list[2]}',
+ svg_img_3=f'{image_list[3]}',
+ svg_img_4=f'{image_list[4]}',
+ svg_img_5=f'{image_list[5]}',
+ svg_img_6=f'{image_list[6]}'
+ )
+ elif length == 8:
+ return render_template(file_name,
+ title=name,
+ g_width=length * width,
+ width=width,
+ height=height,
+ x_position_0=position_list[0],
+ x_position_1=position_list[1],
+ x_position_2=position_list[2],
+ x_position_3=position_list[3],
+ x_position_4=position_list[4],
+ x_position_5=position_list[5],
+ x_position_6=position_list[6],
+ x_position_7=position_list[7],
+ svg_img_0=f'{image_list[0]}',
+ svg_img_1=f'{image_list[1]}',
+ svg_img_2=f'{image_list[2]}',
+ svg_img_3=f'{image_list[3]}',
+ svg_img_4=f'{image_list[4]}',
+ svg_img_5=f'{image_list[5]}',
+ svg_img_6=f'{image_list[6]}',
+ svg_img_7=f'{image_list[7]}'
+ )
+ elif length == 9:
+ return render_template(file_name,
+ title=name,
+ g_width=length * width,
+ width=width,
+ height=height,
+ x_position_0=position_list[0],
+ x_position_1=position_list[1],
+ x_position_2=position_list[2],
+ x_position_3=position_list[3],
+ x_position_4=position_list[4],
+ x_position_5=position_list[5],
+ x_position_6=position_list[6],
+ x_position_7=position_list[7],
+ x_position_8=position_list[8],
+ svg_img_0=f'{image_list[0]}',
+ svg_img_1=f'{image_list[1]}',
+ svg_img_2=f'{image_list[2]}',
+ svg_img_3=f'{image_list[3]}',
+ svg_img_4=f'{image_list[4]}',
+ svg_img_5=f'{image_list[5]}',
+ svg_img_6=f'{image_list[6]}',
+ svg_img_7=f'{image_list[7]}',
+ svg_img_8=f'{image_list[8]}',
+ )
+ elif length == 10:
+ return render_template(file_name,
+ title=name,
+ g_width=length * width,
+ width=width,
+ height=height,
+ x_position_0=position_list[0],
+ x_position_1=position_list[1],
+ x_position_2=position_list[2],
+ x_position_3=position_list[3],
+ x_position_4=position_list[4],
+ x_position_5=position_list[5],
+ x_position_6=position_list[6],
+ x_position_7=position_list[7],
+ x_position_8=position_list[8],
+ x_position_9=position_list[9],
+ svg_img_0=f'{image_list[0]}',
+ svg_img_1=f'{image_list[1]}',
+ svg_img_2=f'{image_list[2]}',
+ svg_img_3=f'{image_list[3]}',
+ svg_img_4=f'{image_list[4]}',
+ svg_img_5=f'{image_list[5]}',
+ svg_img_6=f'{image_list[6]}',
+ svg_img_7=f'{image_list[7]}',
+ svg_img_8=f'{image_list[8]}',
+ svg_img_9=f'{image_list[9]}'
+ )
diff --git a/bin/tests/__init__.py b/bin/tests/__init__.py
index b37b178..05bafe1 100644
--- a/bin/tests/__init__.py
+++ b/bin/tests/__init__.py
@@ -1,11 +1,11 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/3
-# @File Name: __init__.py.py
-
-import sys
-
-sys.stdout.write('\033[1;31m请不要调用此目录下的任何文件! 此目录文件仅作测试用!\033[0m')
-sys.exit(-1)
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/3
+# @File Name: __init__.py.py
+
+import sys
+
+sys.stdout.write('\033[1;31m请不要调用此目录下的任何文件! 此目录文件仅作测试用!\033[0m')
+sys.exit(-1)
diff --git a/bin/tests/base2img.py b/bin/tests/base2img.py
index 6cbe0dd..2214ff4 100644
--- a/bin/tests/base2img.py
+++ b/bin/tests/base2img.py
@@ -1,42 +1,42 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/3
-# @File Name: base2img.py
-
-import base64
-import os
-
-
-def convert_single() -> None:
- """
-
- :return:
- """
- # image转base64
- with open(f'../../static/example.png', 'rb') as f:
- base64_data = base64.b64encode(f.read())
- base64_code = 'data:image/jpeg;base64,' + base64_data.decode('utf-8')
- print(base64_code)
-
-
-def convert_multi() -> None:
- """
-
- :return:
- """
- file_list = os.listdir('../res/images')
- dict_count = 0
- img_dict = {}
- for i in file_list:
- with open(f'../res/images/theme2{i}', 'rb') as f:
- base64_data = base64.b64encode(f.read())
- base64_code = 'data:image/svg+xml;base64,' + base64_data.decode('utf-8')
- img_dict[str(dict_count)] = base64_code
- dict_count += 1
-
- print(img_dict)
-
-
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/3
+# @File Name: base2img.py
+
+import base64
+import os
+
+
+def convert_single() -> None:
+ """
+
+ :return:
+ """
+ # image转base64
+ with open(f'../../static/example.png', 'rb') as f:
+ base64_data = base64.b64encode(f.read())
+ base64_code = 'data:image/jpeg;base64,' + base64_data.decode('utf-8')
+ print(base64_code)
+
+
+def convert_multi() -> None:
+ """
+
+ :return:
+ """
+ file_list = os.listdir('../res/images')
+ dict_count = 0
+ img_dict = {}
+ for i in file_list:
+ with open(f'../res/images/theme2{i}', 'rb') as f:
+ base64_data = base64.b64encode(f.read())
+ base64_code = 'data:image/svg+xml;base64,' + base64_data.decode('utf-8')
+ img_dict[str(dict_count)] = base64_code
+ dict_count += 1
+
+ print(img_dict)
+
+
convert_multi()
\ No newline at end of file
diff --git a/bin/tests/db_test.py b/bin/tests/db_test.py
new file mode 100644
index 0000000..4d9cf48
--- /dev/null
+++ b/bin/tests/db_test.py
@@ -0,0 +1,7 @@
+import sqlite3
+
+conn = sqlite3.connect('../assets/theme.db')
+cursor = conn.cursor()
+cursor.execute('select * from sqlite_master where type="table"')
+data = cursor.fetchall()
+print(data)
diff --git a/bin/tests/download_img.py b/bin/tests/download_img.py
index dbb1694..f015535 100644
--- a/bin/tests/download_img.py
+++ b/bin/tests/download_img.py
@@ -1,6 +1,31 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/8
-# @File Name: download_img.py
\ No newline at end of file
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/8
+# @File Name: download_img.py
+
+import os
+import requests
+import threading
+
+proxies = {
+ 'http': '127.0.0.1:8889',
+ 'https': '127.0.0.1:8889'
+}
+
+
+def thread_(i, main_url, dir):
+ res = requests.get(f'{main_url}/{i}.gif', proxies=proxies)
+ with open(f'../assets/themes/{dir}/{i}.gif', 'wb') as f:
+ f.write(res.content)
+
+
+while True:
+ url = input('->')
+ url = url.replace('https://', '|')
+ url = ''.join(url.split('/')[:-2]).replace('|', 'https://') + '/counter'
+ dir = url.split('.')[0].split('//')[-1]
+ os.mkdir(f'../assets/themes/{dir}')
+ for i in range(0, 10):
+ threading.Thread(target=thread_, args=(i, url, dir)).start()
diff --git a/bin/tests/dump_theme_db.py b/bin/tests/dump_theme_db.py
index 4c30b9a..fb6fd08 100644
--- a/bin/tests/dump_theme_db.py
+++ b/bin/tests/dump_theme_db.py
@@ -1,29 +1,29 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/7
-# @File Name: dump_theme_db.py
-
-
-import os
-import base64
-import sqlite3
-
-conn = sqlite3.connect('../assets/theme.db')
-cursor = conn.cursor()
-
-
-dir_name = 'gelbooru-h'
-file_list = os.listdir(f'../assets/themes/moe_theme/{dir_name}')
-dict_count = 0
-img_dict = {}
-for i in file_list:
- with open(f'../assets/themes/moe_theme/{dir_name}/{i}', 'rb') as f:
- base64_data = base64.b64encode(f.read())
- base64_code = f'data:image/jpeg;base64,' + base64_data.decode('utf-8')
- img_dict[str(dict_count)] = base64_code
- dict_count += 1
-for k, v in zip(img_dict.keys(), img_dict.values()):
- cursor.execute("insert into gelbooruh values(?, ?)", (k, v))
- conn.commit()
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/7
+# @File Name: dump_theme_db.py
+
+
+import os
+import base64
+import sqlite3
+
+conn = sqlite3.connect('../assets/theme.db')
+cursor = conn.cursor()
+
+
+dir_name = 'gelbooru-h'
+file_list = os.listdir(f'../assets/themes/moe_theme/{dir_name}')
+dict_count = 0
+img_dict = {}
+for i in file_list:
+ with open(f'../assets/themes/moe_theme/{dir_name}/{i}', 'rb') as f:
+ base64_data = base64.b64encode(f.read())
+ base64_code = f'data:image/jpeg;base64,' + base64_data.decode('utf-8')
+ img_dict[str(dict_count)] = base64_code
+ dict_count += 1
+for k, v in zip(img_dict.keys(), img_dict.values()):
+ cursor.execute("insert into gelbooruh values(?, ?)", (k, v))
+ conn.commit()
diff --git a/bin/tests/img_size.py b/bin/tests/img_size.py
index 6725e00..8ff23a2 100644
--- a/bin/tests/img_size.py
+++ b/bin/tests/img_size.py
@@ -1,6 +1,30 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/8
-# @File Name: img_size.py
\ No newline at end of file
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/8
+# @File Name: img_size.py
+
+import os
+from PIL import Image
+import sqlite3
+
+
+def get_info(path, file):
+ for i in path:
+ img = Image.open(f'../assets/themes/{path}/{file}')
+ imgSize = img.size
+ w = img.width
+ h = img.height
+ f = img.format
+ print(imgSize)
+ print(w, h, f)
+
+
+file_list = os.listdir('../assets/themes/')
+for p in file_list:
+ lst = os.listdir(f'../assets/themes/{p}')
+ for i in lst:
+ get_info(p, i)
+
+
diff --git a/bin/tests/init_db.py b/bin/tests/init_db.py
index b0be68a..3d19af6 100644
--- a/bin/tests/init_db.py
+++ b/bin/tests/init_db.py
@@ -1,26 +1,26 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/5
-# @File Name: init_db.py
-
-import os
-import sqlite3
-import sys
-
-if __name__ == '__main__':
- while True:
- yes_or_no = input('该操作会将数据库初始化输入y继续:')
- if yes_or_no == 'y':
- os.remove('../../db/data.db')
- conn = sqlite3.connect('../../db/data.db')
- cursor = conn.cursor()
- cursor.execute('create table ReqCount (name text primary key, times integer )')
- sys.exit(0)
- elif yes_or_no == 'n':
- print('已取消')
- sys.exit(0)
- else:
- print('请输入y继续或n退出')
- continue
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/5
+# @File Name: init_db.py
+
+import os
+import sqlite3
+import sys
+
+if __name__ == '__main__':
+ while True:
+ yes_or_no = input('该操作会将数据库初始化输入y继续:')
+ if yes_or_no == 'y':
+ os.remove('../../db/data.db')
+ conn = sqlite3.connect('../../db/data.db')
+ cursor = conn.cursor()
+ cursor.execute('create table ReqCount (name text primary key, times integer )')
+ sys.exit(0)
+ elif yes_or_no == 'n':
+ print('已取消')
+ sys.exit(0)
+ else:
+ print('请输入y继续或n退出')
+ continue
diff --git a/bin/tests/numberlen.py b/bin/tests/numberlen.py
index 723c237..6701da9 100644
--- a/bin/tests/numberlen.py
+++ b/bin/tests/numberlen.py
@@ -1,16 +1,16 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/3
-# @File Name: numberlen.py
-
-
-number = 1576451745
-
-if len(str(number)) <= 10:
- zero_count = 10 - len(str(number))
- final_str = '0' * zero_count + str(number)
- print(final_str[9])
-else:
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/3
+# @File Name: numberlen.py
+
+
+number = 1576451745
+
+if len(str(number)) <= 10:
+ zero_count = 10 - len(str(number))
+ final_str = '0' * zero_count + str(number)
+ print(final_str[9])
+else:
print('Too much to count')
\ No newline at end of file
diff --git a/bin/tests/resp_test.py b/bin/tests/resp_test.py
index 96f0d64..b275b68 100644
--- a/bin/tests/resp_test.py
+++ b/bin/tests/resp_test.py
@@ -1,33 +1,33 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/3
-# @File Name: resp_test.py
-
-import requests
-import random
-
-
-def request_test() -> None:
- """
- 请求测试
- :return:
- """
- for i in range(100):
- resp = requests.get(f'http://127.0.0.1:8000/API?name={i}')
- print(resp)
-
-
-def download_test() -> None:
- """
- 下载测试
- :return:
- """
-
- resp = requests.get('https://count.getloli.com/get/@Moe-counter.github')
- with open('download_test.html', 'wb') as fp:
- fp.write(resp.content)
-
-
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/3
+# @File Name: resp_test.py
+
+import requests
+import random
+
+
+def request_test() -> None:
+ """
+ 请求测试
+ :return:
+ """
+ for i in range(100):
+ resp = requests.get(f'http://127.0.0.1:8000/API?name={i}')
+ print(resp)
+
+
+def download_test() -> None:
+ """
+ 下载测试
+ :return:
+ """
+
+ resp = requests.get('https://count.getloli.com/get/@Moe-counter.github')
+ with open('download_test.html', 'wb') as fp:
+ fp.write(resp.content)
+
+
request_test()
\ No newline at end of file
diff --git a/bin/tests/stress_test.py b/bin/tests/stress_test.py
index fecd0c1..a0574a7 100644
--- a/bin/tests/stress_test.py
+++ b/bin/tests/stress_test.py
@@ -1,13 +1,13 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/7
-# @File Name: stress_test.py
-
-
-import requests
-
-
-for i in range(100):
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/7
+# @File Name: stress_test.py
+
+
+import requests
+
+
+for i in range(100):
print(requests.get('http://127.0.0.1:5000/API?name=89999&length=10&theme=t2').elapsed.microseconds)
\ No newline at end of file
diff --git a/bin/tests/timetest.py b/bin/tests/timetest.py
index 3865b4c..12d7340 100644
--- a/bin/tests/timetest.py
+++ b/bin/tests/timetest.py
@@ -1,11 +1,11 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/4
-# @File Name: timetest.py
-
-import time
-
-
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/4
+# @File Name: timetest.py
+
+import time
+
+
print(time.ctime())
\ No newline at end of file
diff --git a/db/__init__.py b/db/__init__.py
index c022d54..840fd69 100644
--- a/db/__init__.py
+++ b/db/__init__.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/4
-# @File Name: __init__.py.py
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/4
+# @File Name: __init__.py.py
diff --git a/db/data.db b/db/data.db
index 57be2e2..a31fd28 100644
Binary files a/db/data.db and b/db/data.db differ
diff --git a/db/db.py b/db/db.py
index c6f234c..19aed4c 100644
--- a/db/db.py
+++ b/db/db.py
@@ -1,67 +1,67 @@
-#!/usr/bin/env python3
-# -- coding:utf-8 --
-# @Author: markushammered@gmail.com
-# @Development Tool: PyCharm
-# @Create Time: 2022/2/4
-# @File Name: db.py
-
-import sqlite3
-
-"""
-使用python3自带的Sqlite3进行数据库操作
-"""
-
-
-def insert_data(name: str):
- """
- 插入数据
- :param name:
- :return:
- """
- cursor.execute('insert into ReqCount values(?, ?)', (name, 1))
- conn.commit()
-
-
-def fetch_data(name: str) -> int:
- """
- 获取数据
- :param name:
- :return:
- """
- cursor.execute('select * from ReqCount')
- conn.commit()
- data = cursor.fetchall()
-
- # 将返回的元组转换为字典
- temp_dict = {}
- for k, v in data:
- temp_dict.setdefault(k, []).append(v)
- # 上方代码将元组转换为字典后字典的值会变成只有一个值的列表, 用下面两行代码去除
- for i, c in zip(temp_dict.keys(), temp_dict.values()):
- temp_dict[i] = c[0]
-
- if name in temp_dict.keys():
- count = temp_dict[name] # 获取原数字 为 整型
- update_data(name, count)
- return count
- else:
- # 新建用户数据
- insert_data(name)
- return 0
-
-
-def update_data(name: str, times: int):
- """
- 更新数据
- :param name:
- :param times:
- :return:
- """
- times += 1
- cursor.execute('update ReqCount set times=? where name=?', (times, name))
- conn.commit()
-
-
-if __name__ != '__main__':
- conn = sqlite3.connect('./db/data.db', check_same_thread=False)
- cursor = conn.cursor()
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2022/2/4
+# @File Name: db.py
+
+import sqlite3
+
+"""
+使用python3自带的Sqlite3进行数据库操作
+"""
+
+
+def insert_data(name: str):
+ """
+ 插入数据
+ :param name:
+ :return:
+ """
+ cursor.execute('insert into ReqCount values(?, ?)', (name, 1))
+ conn.commit()
+
+
+def fetch_data(name: str) -> int:
+ """
+ 获取数据
+ :param name:
+ :return:
+ """
+ cursor.execute('select * from ReqCount')
+ conn.commit()
+ data = cursor.fetchall()
+
+ # 将返回的元组转换为字典
+ temp_dict = {}
+ for k, v in data:
+ temp_dict.setdefault(k, []).append(v)
+ # 上方代码将元组转换为字典后字典的值会变成只有一个值的列表, 用下面两行代码去除
+ for i, c in zip(temp_dict.keys(), temp_dict.values()):
+ temp_dict[i] = c[0]
+
+ if name in temp_dict.keys():
+ count = temp_dict[name] # 获取原数字 为 整型
+ update_data(name, count)
+ return count
+ else:
+ # 新建用户数据
+ insert_data(name)
+ return 0
+
+
+def update_data(name: str, times: int):
+ """
+ 更新数据
+ :param name:
+ :param times:
+ :return:
+ """
+ times += 1
+ cursor.execute('update ReqCount set times=? where name=?', (times, name))
+ conn.commit()
+
+
+if __name__ != '__main__':
+ conn = sqlite3.connect('./db/data.db', check_same_thread=False)
+ cursor = conn.cursor()
diff --git a/docs/LICENSE b/docs/LICENSE
index 7ba1b9a..3b718db 100644
--- a/docs/LICENSE
+++ b/docs/LICENSE
@@ -1,201 +1,201 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [RTAkland] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [RTAkland] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
limitations under the License.
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
index 0a2fb6e..9ee833f 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,162 +1,162 @@
-# 这里是Request Counter的文档
-> 虽然说项目很小根本不需要文档
-
-# 灵感来源
-[Moe-Counter](https://github.com/MarkusJoe/Moe-counter)
-> 看到这个项目感觉挺有意思就用Python写了一个 此项目中添加了原项目中没有的功能 `Length` `设置长度`
-
-# 工作原理
-使用Flask建立服务器接收请求分析获取到的数据写入数据库
-
-# 部署
-> 在部署之前你需要先安装`python3.9.x`以上的版本
-## 部署到本地服务器
- ```shell
- $ git clone https://github.com/MarkusJoe/RequestCounter.git
- $ cd RequestCounter
- $ pip3 install -r requirements.txt
- $ python3 app.py
- ```
-
-
-# 基本信息
-- Python版本: `3.9.9`
-- 请求方法: `GET` `POST`
-- 请求地址: `/API`
-- 请求参数: `name` : `str`
- - 可选参数: `length` : `int`
- - 可选参数: `theme` : `str`
-
-
-# 注意事项
-- Python版能最新版就最新版
-- 项目使用了标准库`Sqlite3`进行了数据库操作某些可以部署项目的服务器可能不支持例如`vercel`(可能是我不会)
-
-
-# 快速响应
-测试用代码如下
-```python
-import requests
-
-for i in range(100):
- res = requests.get('http://127.0.0.1/API?name=2&length=10&theme=t2').elapsed.microseconds
- print(res) # 返回响应速度 单位: 微秒
-```
->在`AMD Athlon(tm) X4 830 Quad Core Processor 2.99 GHz` `4G` 内存的电脑上运行项目
-> 在本机上使用`Requests`库`GET`方法请求`100`次 (名称为`2`长度为`10`主题为`t2`)
-> 使用`elapsed.microseconds`属性 获取响应速度返回的值如下
-
-单位: 微秒
-参考: 1秒(second)(s) = 1000毫秒(millisecond)(ms) = 1000000微秒(microseconds)(us)
-61764
-22125
-25059
-16524
-13396
-12787
-20579
-18987
-25500
-14910
-11303
-11787
-16949
-17094
-15264
-10934
-10526
-11943
-16967
-17205
-12887
-11386
-11547
-17743
-18625
-17208
-14763
-12858
-12708
-18598
-16879
-16216
-14655
-12089
-11588
-17287
-20115
-14403
-12857
-11596
-15006
-18246
-18013
-13623
-10673
-12064
-17838
-16651
-16483
-13522
-13231
-15624
-11043
-10765
-16317
-17200
-13250
-11230
-11533
-16727
-16781
-16253
-14658
-13762
-13194
-17700
-17933
-15686
-12051
-10904
-17163
-16591
-16464
-15271
-12405
-17173
-26737
-15964
-12363
-12653
-12893
-17524
-20084
-14165
-12037
-13427
-17245
-18652
-18438
-14811
-14233
-14555
-17998
-16949
-16445
-12120
-11695
-14257
-17557
-16587
-
-
-
-# 关于
-## 开源
-- 本项目以Apache-2.0许可开源, 即:
- - 你可以直接使用该项目提供的功能, 无需任何授权
- - 你可以在**注明来源版权信息**的情况下对源代码进行任意分发和修改以及衍生
-
-## 关于此页面
-此文档由 [docsify](https://github.com/docsifyjs/docsify) 生成. docsify 是一个动态生成文档网站的工具。不同于 GitBook、Hexo 的地方是它不会生成将 .md 转成 .html 文件,所有转换工作都是在运行时进行。
-
\ No newline at end of file
+# 这里是Request Counter的文档
+> 虽然说项目很小根本不需要文档
+
+# 灵感来源
+[Moe-Counter](https://github.com/MarkusJoe/Moe-counter)
+> 看到这个项目感觉挺有意思就用Python写了一个 此项目中添加了原项目中没有的功能 `Length` `设置长度`
+
+# 工作原理
+使用Flask建立服务器接收请求分析获取到的数据写入数据库
+
+# 部署
+> 在部署之前你需要先安装`python3.9.x`以上的版本
+## 部署到本地服务器
+ ```shell
+ $ git clone https://github.com/MarkusJoe/RequestCounter.git
+ $ cd RequestCounter
+ $ pip3 install -r requirements.txt
+ $ python3 app.py
+ ```
+
+
+# 基本信息
+- Python版本: `3.9.9`
+- 请求方法: `GET` `POST`
+- 请求地址: `/API`
+- 请求参数: `name` : `str`
+ - 可选参数: `length` : `int`
+ - 可选参数: `theme` : `str`
+
+
+# 注意事项
+- Python版能最新版就最新版
+- 项目使用了标准库`Sqlite3`进行了数据库操作某些可以部署项目的服务器可能不支持例如`vercel`(可能是我不会)
+
+
+# 快速响应
+测试用代码如下
+```python
+import requests
+
+for i in range(100):
+ res = requests.get('http://127.0.0.1/API?name=2&length=10&theme=t2').elapsed.microseconds
+ print(res) # 返回响应速度 单位: 微秒
+```
+>在`AMD Athlon(tm) X4 830 Quad Core Processor 2.99 GHz` `4G` 内存的电脑上运行项目
+> 在本机上使用`Requests`库`GET`方法请求`100`次 (名称为`2`长度为`10`主题为`t2`)
+> 使用`elapsed.microseconds`属性 获取响应速度返回的值如下
+
+单位: 微秒
+参考: 1秒(second)(s) = 1000毫秒(millisecond)(ms) = 1000000微秒(microseconds)(us)
+61764
+22125
+25059
+16524
+13396
+12787
+20579
+18987
+25500
+14910
+11303
+11787
+16949
+17094
+15264
+10934
+10526
+11943
+16967
+17205
+12887
+11386
+11547
+17743
+18625
+17208
+14763
+12858
+12708
+18598
+16879
+16216
+14655
+12089
+11588
+17287
+20115
+14403
+12857
+11596
+15006
+18246
+18013
+13623
+10673
+12064
+17838
+16651
+16483
+13522
+13231
+15624
+11043
+10765
+16317
+17200
+13250
+11230
+11533
+16727
+16781
+16253
+14658
+13762
+13194
+17700
+17933
+15686
+12051
+10904
+17163
+16591
+16464
+15271
+12405
+17173
+26737
+15964
+12363
+12653
+12893
+17524
+20084
+14165
+12037
+13427
+17245
+18652
+18438
+14811
+14233
+14555
+17998
+16949
+16445
+12120
+11695
+14257
+17557
+16587
+
+
+
+# 关于
+## 开源
+- 本项目以Apache-2.0许可开源, 即:
+ - 你可以直接使用该项目提供的功能, 无需任何授权
+ - 你可以在**注明来源版权信息**的情况下对源代码进行任意分发和修改以及衍生
+
+## 关于此页面
+此文档由 [docsify](https://github.com/docsifyjs/docsify) 生成. docsify 是一个动态生成文档网站的工具。不同于 GitBook、Hexo 的地方是它不会生成将 .md 转成 .html 文件,所有转换工作都是在运行时进行。
+
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
index 48956df..3048442 100644
--- a/docs/_coverpage.md
+++ b/docs/_coverpage.md
@@ -1,13 +1,13 @@
-
-
-# RequestCounter
-
-> Python版的计数器
-
-> 使用Python Flask 库完成的访问的次数计数器
-
-* 响应速度快
-* 使用Sqlite3数据库操作
-
-[GitHub](https://github.com/MarkusJoe/RequestCounter.git)
+
+
+# RequestCounter
+
+> Python版的计数器
+
+> 使用Python Flask 库完成的访问的次数计数器
+
+* 响应速度快
+* 使用Sqlite3数据库操作
+
+[GitHub](https://github.com/MarkusJoe/RequestCounter.git)
[Get Started](#部署)
\ No newline at end of file
diff --git a/docs/icon.svg b/docs/icon.svg
index 67aee43..c727b4c 100644
--- a/docs/icon.svg
+++ b/docs/icon.svg
@@ -1,10 +1,10 @@
-