├── .gitignore ├── LICENSE ├── README-ja.md ├── README.md ├── dart ├── __init__.py ├── analyzer.py ├── generator.py ├── logits_processor.py ├── settings.py └── utils.py ├── images ├── sample-1-w.jpg ├── sample-1-wo.jpg ├── sample-2-w.jpg ├── sample-2-wo.jpg ├── sample-3-w.jpg ├── sample-3-wo.jpg ├── sample-4-w.jpg ├── sample-4-wo.jpg ├── screenshot-1.jpg ├── screenshot-2.jpg ├── variation-normal-1.jpg ├── variation-normal-2.jpg ├── variation-normal-3.jpg ├── variation-unvaried-1.jpg ├── variation-unvaried-2.jpg ├── variation-unvaried-3.jpg ├── variation-varied-1.jpg ├── variation-varied-2.jpg ├── variation-varied-3.jpg ├── variation-very_unvaried-1.jpg ├── variation-very_unvaried-2.jpg ├── variation-very_unvaried-3.jpg ├── variation-very_varied-1.jpg ├── variation-very_varied-2.jpg └── variation-very_varied-3.jpg ├── install.py ├── localizations └── ja_JP.json ├── metadata.ini ├── scripts └── dart_upsampler.py ├── tags ├── character.txt ├── copyright.txt └── quality.txt └── tests └── test_utils.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | #.idea/ 161 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README-ja.md: -------------------------------------------------------------------------------- 1 | # sd-danbooru-tags-upsampler 2 | 3 | English version is [here](./README.md). 4 | 5 | これは軽量な LLM を利用して danbooru タグを生成/補完することで、プロンプトをアップサンプルすることができる Stable Diffusion WebUI 向けの拡張機能です。 6 | 7 | 長いプロンプトを考えたくない場合や、何も考えないで**多様**かつ**自然**で**高品質**な画像を見ていたいという場合に便利です。 8 | 9 | ## 更新履歴 10 | 11 | - 2024/2/29: v0.2.0。新機能: 生成オプション、多様性レベル、範囲禁止タグの実装。 12 | - 2024/2/25: v0.1.1。シード値の処理、括弧のエスケープ処理、軽微な不具合が修正されました。 13 | - 2024/2/23: 最初のバージョンである v0.1.0 をリリースしました 14 | 15 | ## 使い方 16 | 17 | 拡張機能のスクリーンショット 18 | 19 | `Danbooru Tags Upsampler` と書かれたアコーディオンを開き、`Enabled` チェックボックスにチェックをいれることで拡張機能を有効化できます。 20 | 21 | パラメーターの説明: 22 | 23 | | パラメーター名 | 説明 | 例 | 24 | | -------------- | ----------- | ------------- | 25 | | **Total tag length** | これは **タグの補完後のプロンプト内のタグの総量を指定します**。 補完するタグの量ではありません。 `very short` は「タグ10個以下」, `short` は「タグ20個以下」, `long` は「タグ40個以下」、 `very long` は「それよりも多い」を意味します。 | 推奨は `long` です | 26 | | **Ban tags** | ここで指定された全てのタグは補完時に出現しなくなります。出てきて欲しくないタグがあるときに便利です。`*` は全ての文字列にマッチします。(例: `* background` は `simple background`、`white background` 等にマッチします) | `official alternate costume, english text, * background, ...` | 27 | | **Seed for upsampling tags** | この値とポジティブプロンプトが固定された場合、補完されるタグも固定されます。`-1` は毎回ことなるシードで補完することを意味します。 | 毎回異なる補完をしてほしい場合は `-1` に設定します。 | 28 | | **Upsampling timing** | sd-dynamic-prompts や webui の styles 機能などの、他のプロンプト加工処理が実行される前にアップサンプルするか、後にアップサンプルするかどうかです。 | `After applying other prompt processing` | 29 | | **Variety level** | このパラメーターは `Generation config` のプリセットです。アップサンプルされるタグの多様度を指定できます。 | `varied` | 30 | | **Generation config** | タグの生成に利用される LLM のパラメーターです。言語モデルの生成パラメーターに詳しくない場合は触らず、 `Variety level` を使うことをおすすめします。 || 31 | 32 | ## ショーケース 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 79 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
入力のプロンプトアップサンプルなしアップサンプルあり
1girl, solo, cowboy shot (seed: 2396487241) 43 | Sample image 1 generated without upsampling 44 | Sample image 1 generated with upsampling
(最終的なプロンプト) 1girl, solo, cowboy shot1girl, solo, cowboy shot, ahoge, animal ears, bare shoulders, blue hair, blush, closed mouth, collarbone, collared shirt, dress, eyelashes, fox ears, fox girl, fox tail, hair between eyes, heart, long hair, long sleeves, looking at viewer, neck ribbon, ribbon, shirt, simple background, sleeves past wrists, smile, tail, white background, white dress, white shirt, yellow eyes
3girls (seed: 684589178) 55 | Sample image 2 generated without upsampling 56 | Sample image 2 generated with upsampling
(最終的なプロンプト) 3girls3girls, black footwear, black hair, black thighhighs, boots, bow, bowtie, chibi, closed mouth, collared shirt, flower, grey hair, hair between eyes, hair flower, hair ornament, long hair, long sleeves, looking at viewer, multiple girls, purple eyes, red eyes, shirt, short hair, sitting, smile, thighhighs, vest, white shirt, white skirt
no humans, scenery (seed: 3702717413) 67 | Sample image 3 generated without upsampling 68 | Sample image 3 generated with upsampling
(最終的なプロンプト) no humans, sceneryno humans, scenery, animal, animal focus, bird, blue eyes, cat, dog, flower, grass, leaf, nature, petals, shadow, sitting, star (sky), sunflower, tree
1girl, frieren, sousou no frieren 78 | (seed: 787304393) 80 | Sample image 4 generated without upsampling 81 | Sample image 4 generated with upsampling
(最終的なプロンプト) 1girl, frieren, sousou no frieren1girl, frieren, sousou no frieren, black pantyhose, cape, closed mouth, elf, fingernails, green eyes, grey hair, hair between eyes, long hair, long sleeves, looking at viewer, pantyhose, pointy ears, simple background, skirt, solo, twintails, white background, white skirt
90 | 91 | 生成設定: 92 | 93 | - モデル: [AnimagineXL 3.0](https://huggingface.co/cagliostrolab/animagine-xl-3.0) 94 | - ネガティブプロンプト (animaginexl 3.0 公式の推奨設定と同じ): 95 | 96 | ``` 97 | nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name 98 | ``` 99 | 100 | アップサンプル設定: 101 | 102 | - Total tag length: `long` 103 | - Ban tags: 指定なし 104 | - Seed: `-1` 105 | - When to perform the process: `Before applying styles` 106 | 107 | ### 多様性レベル 108 | 109 | (シードは同じではないです。) 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
入力プロンプトVery unvariedUnvariedNormalVariedVery varied
1girl, solo, from sideVariation sample image 1; very unvariedVariation sample image 1; unvariedVariation sample image 1; normalVariation sample image 1; variedVariation sample image 1; very varied
1girl, frieren, sousou no frieren,Variation sample image 2; very unvariedVariation sample image 2; unvariedVariation sample image 2; normalVariation sample image 2; variedVariation sample image 2; very varied
no humans, sceneryVariation sample image 3; very unvariedVariation sample image 3; unvariedVariation sample image 3; normalVariation sample image 3; variedVariation sample image 3; very varied
145 | 146 | `Very unvaried`, `Unvaried` は多様性が低いことを意味しますが、同時に入力プロンプトに忠実であり、比較的無難なタグを生成します。また、`Very varied`, `Varied` はより多様なタグが生成されますが、入力プロンプトに従わなかったり不自然な生成になったりしやすくなります。 147 | 148 | ## モデルへのアクセス 149 | 150 | この拡張機能では次のモデルを使用しています: 151 | 152 | - `p1atdev/dart-v1-sft`: [🤗 HuggingFace](https://huggingface.co/p1atdev/dart-v1-sft) 153 | 154 | ## Stable Diffusion WebUI なしで使いたいですか? 155 | 156 | 🤗 Space 上にデモがあるのでインストール不要で試すことができます: 157 | 158 | デモ: https://huggingface.co/spaces/p1atdev/danbooru-tags-transformer 159 | 160 | ## デフォルト値を変更するには? 161 | 162 | `[webui のルート]/ui-config.json` を開き、`customscript/dart_upsampler.py/` で始まるパラメーターを探して編集してください。 163 | 164 | もしデフォルト値が壊れていると感じたら、それらのパラメータを削除することでデフォルト値をリセットできます。 165 | 166 | ## 謝辞 167 | 168 | このプロジェクトは以下のプロジェクトや研究の影響を受けています。 これらのプロジェクトの開発者および貢献者に敬意と感謝の意を表します: 169 | 170 | - succinctly/text2image-prompt-generator: https://huggingface.co/succinctly/text2image-prompt-generator 171 | - Gustavosta/MagicPrompt-Stable-Diffusion: https://huggingface.co/Gustavosta/MagicPrompt-Stable-Diffusion 172 | - FredZhang7/anime-anything-promptgen-v2: https://huggingface.co/FredZhang7/anime-anything-promptgen-v2 173 | - sd-dynamic-prompts: https://github.com/adieyal/sd-dynamic-prompts 174 | - DALL-E 3: https://cdn.openai.com/papers/dall-e-3.pdf 175 | - caption-upsampling: https://github.com/sayakpaul/caption-upsampling 176 | - StableDiffusionWebUI: https://github.com/AUTOMATIC1111/stable-diffusion-webui とその派生物 177 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sd-danbooru-tags-upsampler 2 | 3 | 日本語は[こちら](./README-ja.md)へ 4 | 5 | An extension for Stable Diffusion Web UI that upsamples prompts by generating or completing danbooru tags using lightweight LLM. 6 | 7 | It's useful for people who don't want think about long prompt or want to see **diverse**, **natural** and **high quality** images without any thinking. 8 | 9 | ## Upsates 10 | 11 | - 2024/2/29: v0.2.0 has been released. New features; generation options, variety level and range ban tags. 12 | - 2024/2/25: v0.1.1 has been released. Handling of seeds, escaping processing of brackets and many bugs are fixed. 13 | - 2024/2/23: First version v0.1.0 has been released. 14 | 15 | ## Usage 16 | 17 | Scrennshot of this extension 18 | 19 | Open the `Danbooru Tags Upsampler` accordion and check the `Enabled` checkbox to enable this extension. 20 | 21 | Explanation of parameters: 22 | 23 | | Parameter name | Description | Example value | 24 | | -------------- | ----------- | ------------- | 25 | | **Total tag length** | This parameter can specify the amount of **total tags after completing the positive prompt**. Not the amount of completing tags. `very short` means "less than 10 tags", `short` means "less than 20 tags", `long` means "less than 40 tags" and `very long` is more than that. | `long` is recommended | 26 | | **Ban tags** | All tags in this field will never appear in completion tags. It's useful when you don't want to contain some specific tags. Using `*` maches to any character. (e.g. `* background` matches to `simple background`, `white background`, ...) | `official alternate costume, english text, * background, ...` | 27 | | **Seed for upsampling tags** | If this number and the positive prompt are fixed, the completion tags are also fixed. `-1` means "generates tags using random seed every time" | If you want to generate images with different final prompts every time, set to `-1`. | 28 | | **Upsampling timing** | When to upsample, before or after other prompt processing (e.g. sd-dynamic-prompts or webui's styles feature) are applied. | `After applying other prompt processings` | 29 | | **Variety level** | These parameters are presets of the `Generation config`. This can change the variety of upsampled tags. | `varied` | 30 | | **Generation config** | LLM parameters of generating tags. It's recommended not to touch if you are not familiar with language model's generation parameters, and use `Variety level` option instead. || 31 | 32 | Scrennshot of generation config options 33 | 34 | 35 | ## Showcases 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 82 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 |
Input promptWithout upsamplingWith upsampling
1girl, solo, cowboy shot (seed: 2396487241) 46 | Sample image 1 generated without upsampling 47 | Sample image 1 generated with upsampling
(prompts used to generate) 1girl, solo, cowboy shot1girl, solo, cowboy shot, ahoge, animal ears, bare shoulders, blue hair, blush, closed mouth, collarbone, collared shirt, dress, eyelashes, fox ears, fox girl, fox tail, hair between eyes, heart, long hair, long sleeves, looking at viewer, neck ribbon, ribbon, shirt, simple background, sleeves past wrists, smile, tail, white background, white dress, white shirt, yellow eyes
3girls (seed: 684589178) 58 | Sample image 2 generated without upsampling 59 | Sample image 2 generated with upsampling
(prompts used to generate) 3girls3girls, black footwear, black hair, black thighhighs, boots, bow, bowtie, chibi, closed mouth, collared shirt, flower, grey hair, hair between eyes, hair flower, hair ornament, long hair, long sleeves, looking at viewer, multiple girls, purple eyes, red eyes, shirt, short hair, sitting, smile, thighhighs, vest, white shirt, white skirt
no humans, scenery (seed: 3702717413) 70 | Sample image 3 generated without upsampling 71 | Sample image 3 generated with upsampling
(prompts used to generate) no humans, sceneryno humans, scenery, animal, animal focus, bird, blue eyes, cat, dog, flower, grass, leaf, nature, petals, shadow, sitting, star (sky), sunflower, tree
1girl, frieren, sousou no frieren 81 | (seed: 787304393) 83 | Sample image 4 generated without upsampling 84 | Sample image 4 generated with upsampling
(prompts used to generate) 1girl, frieren, sousou no frieren1girl, frieren, sousou no frieren, black pantyhose, cape, closed mouth, elf, fingernails, green eyes, grey hair, hair between eyes, long hair, long sleeves, looking at viewer, pantyhose, pointy ears, simple background, skirt, solo, twintails, white background, white skirt
93 | 94 | 95 | Generation settings: 96 | 97 | - Model: [AnimagineXL 3.0](https://huggingface.co/cagliostrolab/animagine-xl-3.0) 98 | - Negative prompt (same as the recommended settings of animaginexl 3.0): 99 | 100 | ``` 101 | nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name 102 | ``` 103 | 104 | Upsampling settings: 105 | 106 | - Total tag length: `long` 107 | - Ban tags: none 108 | - Seed: `-1` 109 | - When to perform the process: `Before applying styles` 110 | 111 | ### Variation levels 112 | 113 | (The seeds are not the same.) 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 |
Input promptVery unvariedUnvariedNormalVariedVery varied
1girl, solo, from sideVariation sample image 1; very unvariedVariation sample image 1; unvariedVariation sample image 1; normalVariation sample image 1; variedVariation sample image 1; very varied
1girl, frieren, sousou no frieren,Variation sample image 2; very unvariedVariation sample image 2; unvariedVariation sample image 2; normalVariation sample image 2; variedVariation sample image 2; very varied
no humans, sceneryVariation sample image 3; very unvariedVariation sample image 3; unvariedVariation sample image 3; normalVariation sample image 3; variedVariation sample image 3; very varied
149 | 150 | `Very unvaried` and `Unvaried` mean less variety, but at the same time, faithful to the input prompt and generate relatively acceptable tags. Also, `Very varied` and `Varied` mean more variety, but tend to ignore the input prompt and often generate weird tags. 151 | 152 | ## Access to the model weights 153 | 154 | This extension uses the following model: 155 | 156 | - `p1atdev/dart-v1-sft`: [🤗 HuggingFace](https://huggingface.co/p1atdev/dart-v1-sft) 157 | 158 | ## Want to use without sd webui? 159 | 160 | A demo on 🤗 Space is avaiable, so you can try upsampling tags without installing this extension: 161 | 162 | Demo: https://huggingface.co/spaces/p1atdev/danbooru-tags-transformer 163 | 164 | ## How to change default values? 165 | 166 | Open `[webui's root directory]/ui-config.json`, then find parameters staring with `customscript/dart_upsampler.py/` and edit them. 167 | 168 | If you feel that the default values are broken, you can delete parameters staring with `customscript/dart_upsampler.py/txt2img/` to reset the default values. 169 | 170 | ## Acknowledgements 171 | 172 | This project has been influenced by the following projects and researches. We express our respect and gratitude to the developers and contributors of these projects: 173 | 174 | - succinctly/text2image-prompt-generator: https://huggingface.co/succinctly/text2image-prompt-generator 175 | - Gustavosta/MagicPrompt-Stable-Diffusion: https://huggingface.co/Gustavosta/MagicPrompt-Stable-Diffusion 176 | - FredZhang7/anime-anything-promptgen-v2: https://huggingface.co/FredZhang7/anime-anything-promptgen-v2 177 | - sd-dynamic-prompts: https://github.com/adieyal/sd-dynamic-prompts 178 | - DALL-E 3: https://cdn.openai.com/papers/dall-e-3.pdf 179 | - caption-upsampling: https://github.com/sayakpaul/caption-upsampling 180 | - StableDiffusionWebUI: https://github.com/AUTOMATIC1111/stable-diffusion-webui and its derivatives 181 | -------------------------------------------------------------------------------- /dart/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/dart/__init__.py -------------------------------------------------------------------------------- /dart/analyzer.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from pathlib import Path 3 | from dataclasses import dataclass 4 | 5 | from modules.extra_networks import parse_prompt 6 | from modules.prompt_parser import parse_prompt_attention 7 | from modules.shared import opts 8 | 9 | from dart.settings import parse_options 10 | from dart.utils import ( 11 | escape_webui_special_symbols, 12 | unescape_webui_special_symbols, 13 | ) 14 | 15 | logger = logging.getLogger(__name__) 16 | 17 | 18 | DART_RATING_GENERAL = "rating:general" 19 | DART_RATING_SENSITIVE = "rating:sensitive" 20 | DART_RATING_QUESTIONABLE = "rating:questionable" 21 | DART_RATING_EXPLICIT = "rating:explicit" 22 | 23 | INPUT_RATING_GENERAL = DART_RATING_GENERAL 24 | INPUT_RATING_SENSITIVE = DART_RATING_SENSITIVE 25 | INPUT_RATING_QUESTIONABLE = DART_RATING_QUESTIONABLE 26 | INPUT_RATING_EXPLICIT = DART_RATING_EXPLICIT 27 | 28 | DART_RATING_SFW = "rating:sfw" 29 | DART_RATING_NSFW = "rating:nsfw" 30 | 31 | INPUT_RATING_SFW = "sfw" 32 | INPUT_RATING_NSFW = "nsfw" 33 | 34 | ALL_INPUT_RATING_TAGS = [ 35 | INPUT_RATING_GENERAL, 36 | INPUT_RATING_SENSITIVE, 37 | INPUT_RATING_QUESTIONABLE, 38 | INPUT_RATING_EXPLICIT, 39 | INPUT_RATING_SFW, 40 | INPUT_RATING_NSFW, 41 | ] 42 | 43 | RATING_TAG_PRIORITY = { 44 | INPUT_RATING_GENERAL: 0, 45 | INPUT_RATING_SENSITIVE: 1, 46 | INPUT_RATING_QUESTIONABLE: 2, 47 | INPUT_RATING_EXPLICIT: 3, 48 | } 49 | 50 | RATING_PARENT_TAG_PRIORITY = {INPUT_RATING_SFW: 0, INPUT_RATING_NSFW: 1} 51 | 52 | DART_RATING_DEFAULT_PAIR = DART_RATING_SFW, DART_RATING_GENERAL 53 | 54 | 55 | def get_rating_tag_pair(tag: str) -> tuple[str, str]: 56 | if tag == INPUT_RATING_NSFW: # nsfw 57 | return DART_RATING_NSFW, DART_RATING_EXPLICIT 58 | 59 | elif tag == INPUT_RATING_SFW: # sfw 60 | return DART_RATING_DEFAULT_PAIR 61 | 62 | elif tag == INPUT_RATING_GENERAL: # rating:general 63 | return DART_RATING_DEFAULT_PAIR 64 | 65 | elif tag == INPUT_RATING_SENSITIVE: # rating:general 66 | return DART_RATING_SFW, DART_RATING_SENSITIVE 67 | 68 | elif tag == INPUT_RATING_QUESTIONABLE: # rating:questionable 69 | return DART_RATING_NSFW, DART_RATING_QUESTIONABLE 70 | 71 | elif tag == INPUT_RATING_EXPLICIT: # rating:explicit 72 | return DART_RATING_NSFW, DART_RATING_EXPLICIT 73 | 74 | else: 75 | raise Exception(f"Unkown rating tag: {tag}") 76 | 77 | 78 | def get_strongest_rating_tag(tags: list[str]) -> str: 79 | strongest_tag = INPUT_RATING_GENERAL 80 | for tag in tags: 81 | if RATING_TAG_PRIORITY[tag] > RATING_TAG_PRIORITY[strongest_tag]: 82 | strongest_tag = tag 83 | return strongest_tag 84 | 85 | 86 | def normalize_rating_tags(tags: list[str]) -> tuple[str, str]: 87 | """ 88 | Returns [Parent Rating Tag, Child Rating Tag or None] 89 | """ 90 | 91 | if len(tags) == 0: 92 | # default 93 | return DART_RATING_DEFAULT_PAIR 94 | 95 | # only one tag 96 | if len(tags) == 1: 97 | tag = tags[0] 98 | 99 | return get_rating_tag_pair(tag) 100 | 101 | # len(tags) >= 2 102 | 103 | # if all of tags are parent tag 104 | if all([tag in RATING_PARENT_TAG_PRIORITY.keys() for tag in tags]): 105 | logger.warning( 106 | 'Both "sfw" and "nsfw" are specified in positive image prompt! Rating tag fell back to "sfw" for upsampling.' 107 | ) 108 | return DART_RATING_DEFAULT_PAIR 109 | 110 | # one of the tag is parent tag 111 | if any([tag in RATING_PARENT_TAG_PRIORITY.keys() for tag in tags]): 112 | parent_tag = INPUT_RATING_SFW # sfw or nsfw 113 | child_tags = [] 114 | for tag in tags: 115 | if tag in RATING_PARENT_TAG_PRIORITY: 116 | if ( 117 | RATING_PARENT_TAG_PRIORITY[tag] 118 | > RATING_PARENT_TAG_PRIORITY[parent_tag] 119 | ): 120 | parent_tag = tag 121 | else: 122 | child_tags.append(tag) 123 | 124 | # pick strongest tag 125 | child_tag = get_strongest_rating_tag(child_tags) 126 | 127 | fallback_pair = get_rating_tag_pair(parent_tag) 128 | if child_tag != fallback_pair[1]: 129 | # e.g. rating:general, nsfw 130 | logger.warning( 131 | f'Specified rating tag "{child_tag}" mismatches to "{parent_tag}". "{fallback_pair[1]}" will be used for upsampling instead.' 132 | ) 133 | return fallback_pair 134 | return parent_tag, child_tag 135 | 136 | # remains are child tag 137 | # give priority to the strong 138 | strongest_tag = get_strongest_rating_tag(tags) 139 | return get_rating_tag_pair(strongest_tag) 140 | 141 | 142 | def load_tags_in_file(path: Path): 143 | if not path.exists(): 144 | logger.error(f"File not found: {path}") 145 | return [] 146 | 147 | with open(path, "r", encoding="utf-8") as file: 148 | tags = [tag.strip() for tag in file.readlines() if tag.strip() != ""] 149 | 150 | return tags 151 | 152 | 153 | @dataclass 154 | class ImagePromptAnalyzingResult: 155 | """A class of the result of analyzing tags""" 156 | 157 | rating_parent: str 158 | rating_child: str | None 159 | copyright: str 160 | character: str 161 | general: str 162 | quality: str 163 | unknown: str 164 | 165 | 166 | class DartAnalyzer: 167 | """A class for analyzing provided prompt and composing prompt for upsampling""" 168 | 169 | def __init__(self, extension_dir: str, vocab: list[str], special_vocab: list[str]): 170 | self.options = parse_options(opts) 171 | if self.options["debug_logging"]: 172 | logger.setLevel(logging.DEBUG) 173 | 174 | self.tags_dir = Path(extension_dir) / "tags" 175 | 176 | self.rating_tags = ALL_INPUT_RATING_TAGS 177 | 178 | self.copyright_tags = load_tags_in_file(self.tags_dir / "copyright.txt") 179 | self.character_tags = load_tags_in_file(self.tags_dir / "character.txt") 180 | self.quality_tags = load_tags_in_file(self.tags_dir / "quality.txt") 181 | 182 | self.vocab = vocab 183 | self.special_vocab = special_vocab 184 | 185 | if self.options["escape_input_brackets"]: 186 | logger.debug("Allows tags with escaped brackets") 187 | self.copyright_tags += escape_webui_special_symbols(self.copyright_tags) 188 | self.character_tags += escape_webui_special_symbols(self.character_tags) 189 | self.vocab += escape_webui_special_symbols(self.vocab) 190 | 191 | def split_tags(self, image_prompt: str) -> list[str]: 192 | return [tag.strip() for tag in image_prompt.split(",") if tag.strip() != ""] 193 | 194 | def extract_tags(self, input_tags: list[str], extract_tag_list: list[str]): 195 | matched: list[str] = [] 196 | not_matched: list[str] = [] 197 | 198 | for input_tag in input_tags: 199 | if input_tag in extract_tag_list: 200 | matched.append(input_tag) 201 | else: 202 | not_matched.append(input_tag) 203 | 204 | return matched, not_matched 205 | 206 | def preprocess_tags(self, tags: list[str]) -> str: 207 | """Preprocess tags to pass to dart model.""" 208 | 209 | # \(\) -> () 210 | if self.options["escape_output_brackets"]: 211 | tags = unescape_webui_special_symbols(tags) 212 | 213 | return ", ".join(tags) 214 | 215 | def analyze(self, image_prompt: str) -> ImagePromptAnalyzingResult: 216 | input_tags = self.split_tags(",".join([x[0] for x in parse_prompt_attention(parse_prompt(image_prompt)[0])])) 217 | 218 | input_tags = list(set(input_tags)) # unique 219 | 220 | rating_tags, input_tags = self.extract_tags(input_tags, self.rating_tags) 221 | copyright_tags, input_tags = self.extract_tags(input_tags, self.copyright_tags) 222 | character_tags, input_tags = self.extract_tags(input_tags, self.character_tags) 223 | quality_tags, input_tags = self.extract_tags(input_tags, self.quality_tags) 224 | 225 | # escape special tags 226 | _special_tags, input_tags = self.extract_tags(input_tags, self.special_vocab) 227 | 228 | # general tags and unknown tags 229 | other_tags, unknown_tags = self.extract_tags(input_tags, self.vocab) 230 | 231 | rating_parent, rating_child = normalize_rating_tags(rating_tags) 232 | 233 | return ImagePromptAnalyzingResult( 234 | rating_parent=rating_parent, 235 | rating_child=rating_child, 236 | copyright=self.preprocess_tags(copyright_tags), 237 | character=self.preprocess_tags(character_tags), 238 | general=self.preprocess_tags(other_tags), 239 | quality=self.preprocess_tags(quality_tags), 240 | unknown=self.preprocess_tags(unknown_tags), 241 | ) 242 | -------------------------------------------------------------------------------- /dart/generator.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | import time 4 | import re 5 | 6 | import torch 7 | from transformers import ( 8 | AutoTokenizer, 9 | AutoModelForCausalLM, 10 | PreTrainedModel, 11 | PreTrainedTokenizer, 12 | PreTrainedTokenizerFast, 13 | LogitsProcessorList, 14 | ) 15 | from optimum.onnxruntime import ORTModelForCausalLM 16 | 17 | from modules.shared import opts 18 | 19 | from dart.settings import MODEL_BACKEND_TYPE, parse_options 20 | from dart.utils import ( 21 | escape_webui_special_symbols, 22 | get_valid_tag_list, 23 | get_patterns_from_tag_list, 24 | ) 25 | from dart.logits_processor import UnbatchedClassifierFreeGuidanceLogitsProcessor 26 | 27 | logger = logging.getLogger(__name__) 28 | logger.setLevel(logging.INFO) 29 | 30 | 31 | class DartGenerator: 32 | """A class for generating danbooru tags""" 33 | 34 | dart_model: PreTrainedModel | ORTModelForCausalLM | None = None 35 | dart_tokenizer: PreTrainedTokenizer | PreTrainedTokenizerFast | None = None 36 | 37 | def __init__( 38 | self, 39 | model_name: str, 40 | tokenizer_name: str, 41 | model_backend: str, 42 | model_device: str = "cpu", 43 | ): 44 | self.options = parse_options(opts) 45 | 46 | self.model_name = model_name 47 | self.tokenizer_name = tokenizer_name 48 | 49 | assert model_backend in list( 50 | MODEL_BACKEND_TYPE.values() 51 | ), f"Unknown model type: {model_backend}" 52 | self.model_backend = model_backend 53 | self.model_device = model_device 54 | 55 | if self.options["debug_logging"]: 56 | logger.setLevel(logging.DEBUG) 57 | 58 | def _load_dart_model( 59 | self, 60 | ): 61 | if self.model_backend == MODEL_BACKEND_TYPE["ORIGINAL"]: 62 | self.dart_model = AutoModelForCausalLM.from_pretrained(self.model_name) 63 | else: 64 | self.dart_model = ORTModelForCausalLM.from_pretrained( 65 | self.model_name, 66 | file_name=( 67 | "model_quantized.onnx" 68 | if self.model_backend == MODEL_BACKEND_TYPE["ONNX_QUANTIZED"] 69 | else None 70 | ), 71 | ) 72 | logger.info(f"Dart model backend is {self.model_backend }") 73 | 74 | assert self.dart_model is not None 75 | 76 | self.dart_model.to(self.model_device) # type: ignore 77 | 78 | def _load_dart_tokenizer(self): 79 | self.dart_tokenizer = AutoTokenizer.from_pretrained( 80 | self.tokenizer_name, trust_remote_code=True 81 | ) 82 | 83 | def _check_model_avaiable(self): 84 | return self.dart_model is not None 85 | 86 | def _check_tokenizer_avaiable(self): 87 | return self.dart_tokenizer is not None 88 | 89 | def load_model_if_needed(self): 90 | if not self._check_model_avaiable(): 91 | self._load_dart_model() 92 | 93 | def load_tokenizer_if_needed(self): 94 | if not self._check_tokenizer_avaiable(): 95 | self._load_dart_tokenizer() 96 | 97 | def get_vocab_list(self) -> list[str]: 98 | self.load_tokenizer_if_needed() 99 | 100 | return list(self.dart_tokenizer.vocab.keys()) # type: ignore 101 | 102 | def get_special_vocab_list(self) -> list[str]: 103 | self.load_tokenizer_if_needed() 104 | 105 | return list(self.dart_tokenizer.get_added_vocab().values()) # type: ignore 106 | 107 | def compose_prompt( 108 | self, rating: str, copyright: str, character: str, general: str, length: str 109 | ): 110 | # self.load_tokenizer_if_needed() 111 | # assert self.dart_tokenizer is not None 112 | 113 | # sadly webui's transformers version is very old and apply_chat_template method deos not exist 114 | # return self.dart_tokenizer.apply_chat_template( 115 | # { 116 | # "rating": rating, 117 | # "copyright": copyright, 118 | # "character": character, 119 | # "general": general, 120 | # "length": length, 121 | # }, 122 | # tokenize=True, 123 | # ) 124 | 125 | return f"<|bos|>{rating}{copyright}{character}{length}{general}<|input_end|>" 126 | 127 | def get_bad_words_ids(self, tag_text: str) -> list[list[int]] | None: 128 | if tag_text.strip() == "": 129 | return None 130 | 131 | self.load_tokenizer_if_needed() 132 | assert self.dart_tokenizer is not None 133 | 134 | self.dart_tokenizer.sanitize_special_tokens() 135 | 136 | # get ban tag pattern by regex 137 | ban_tags = get_valid_tag_list(tag_text) 138 | ban_tag_patterns = get_patterns_from_tag_list(ban_tags) 139 | 140 | # filter matched tokens from vocab 141 | ban_words_ids: list[int] = [] 142 | for pattern in ban_tag_patterns: 143 | for tag, id in self.dart_tokenizer.vocab.items(): # type:ignore 144 | if pattern.match(tag): 145 | ban_words_ids.append(id) 146 | 147 | # dedup 148 | ban_words_ids = list(set(ban_words_ids)) 149 | 150 | # return type should be list[list[int]] 151 | return [[id] for id in ban_words_ids] 152 | 153 | @torch.no_grad() 154 | def generate( 155 | self, 156 | prompt: str, 157 | max_new_tokens: int = 128, 158 | min_new_tokens: int = 0, 159 | do_sample: bool = True, 160 | temperature: float = 1.0, 161 | top_p: float = 1, 162 | top_k: int = 20, 163 | num_beams: int = 1, 164 | bad_words_ids: list[list[int]] | None = None, 165 | negative_prompt: str | None = None, 166 | cfg_scale: float = 1.5, 167 | ) -> str: 168 | """Upsamples prompt""" 169 | 170 | start_time = time.time() 171 | 172 | self.load_tokenizer_if_needed() 173 | self.load_model_if_needed() 174 | 175 | assert self.dart_tokenizer is not None 176 | assert self.dart_model is not None 177 | 178 | input_ids = self.dart_tokenizer.encode_plus( 179 | prompt, return_tensors="pt" 180 | ).input_ids 181 | negative_prompt_ids = ( 182 | self.dart_tokenizer.encode_plus( 183 | negative_prompt, 184 | return_tensors="pt", 185 | ).input_ids 186 | if negative_prompt is not None 187 | else None 188 | ) 189 | 190 | # output_ids is list[list[int]] 191 | output_ids = self.dart_model.generate( 192 | input_ids, 193 | max_new_tokens=max_new_tokens, 194 | min_new_tokens=min_new_tokens, 195 | do_sample=do_sample, 196 | temperature=temperature, 197 | top_p=top_p, 198 | top_k=top_k, 199 | num_beams=num_beams, 200 | bad_words_ids=bad_words_ids, 201 | no_repeat_ngram_size=1, 202 | logits_processor=( 203 | LogitsProcessorList( 204 | [ 205 | UnbatchedClassifierFreeGuidanceLogitsProcessor( 206 | guidance_scale=cfg_scale, 207 | model=self.dart_model, 208 | unconditional_ids=negative_prompt_ids, 209 | ) 210 | ] 211 | ) 212 | if negative_prompt_ids is not None 213 | else None 214 | ), 215 | ) 216 | 217 | decoded = self.dart_tokenizer.decode( 218 | output_ids[0][len(input_ids[0]) :], 219 | skip_special_tokens=True, 220 | ) 221 | logger.debug(f"Generated tags: {decoded}") 222 | 223 | escaped = ", ".join(escape_webui_special_symbols(decoded.split(", "))) 224 | 225 | end_time = time.time() 226 | logger.info(f"Upsampling tags has taken {end_time-start_time:.2f} seconds") 227 | 228 | return escaped 229 | -------------------------------------------------------------------------------- /dart/logits_processor.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | # Copyright 2020 The HuggingFace Inc. team 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | import logging 17 | from typing import Optional 18 | 19 | import torch 20 | 21 | from transformers.generation import LogitsProcessor 22 | 23 | logger = logging.Logger(__name__) 24 | 25 | 26 | # Copied from transformers.generation.logits_processor.UnbatchedClassifierFreeGuidanceLogitsProcessor 27 | class UnbatchedClassifierFreeGuidanceLogitsProcessor(LogitsProcessor): 28 | r""" 29 | Logits processor for Classifier-Free Guidance (CFG). The processors computes a weighted average across scores 30 | from prompt conditional and prompt unconditional (or negative) logits, parameterized by the `guidance_scale`. 31 | The unconditional scores are computed internally by prompting `model` with the `unconditional_ids` branch. 32 | 33 | See [the paper](https://arxiv.org/abs/2306.17806) for more information. 34 | 35 | Args: 36 | guidance_scale (`float`): 37 | The guidance scale for classifier free guidance (CFG). CFG is enabled by setting `guidance_scale != 1`. 38 | Higher guidance scale encourages the model to generate samples that are more closely linked to the input 39 | prompt, usually at the expense of poorer quality. A value smaller than 1 has the opposite effect, while 40 | making the negative prompt provided with negative_prompt_ids (if any) act as a positive prompt. 41 | model (`PreTrainedModel`): 42 | The model computing the unconditional scores. Supposedly the same as the one computing the conditional 43 | scores. Both models must use the same tokenizer. 44 | unconditional_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): 45 | Indices of input sequence tokens in the vocabulary for the unconditional branch. If unset, will default to 46 | the last token of the prompt. 47 | unconditional_attention_mask (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): 48 | Attention mask for unconditional_ids. 49 | use_cache (`bool`, *optional*, defaults to `True`): 50 | Whether to cache key/values during the negative prompt forward pass. 51 | 52 | 53 | Examples: 54 | 55 | ```python 56 | >>> from transformers import AutoTokenizer, AutoModelForCausalLM 57 | 58 | >>> model = AutoModelForCausalLM.from_pretrained("openai-community/gpt2") 59 | >>> tokenizer = AutoTokenizer.from_pretrained("openai-community/gpt2") 60 | >>> inputs = tokenizer(["Today, a dragon flew over Paris, France,"], return_tensors="pt") 61 | >>> out = model.generate(inputs["input_ids"], guidance_scale=1.5) 62 | >>> tokenizer.batch_decode(out, skip_special_tokens=True)[0] 63 | 'Today, a dragon flew over Paris, France, killing at least 50 people and injuring more than 100' 64 | 65 | >>> # with a negative prompt 66 | >>> neg_inputs = tokenizer(["A very happy event happened,"], return_tensors="pt") 67 | >>> out = model.generate(inputs["input_ids"], guidance_scale=2, negative_prompt_ids=neg_inputs["input_ids"]) 68 | >>> tokenizer.batch_decode(out, skip_special_tokens=True)[0] 69 | 'Today, a dragon flew over Paris, France, killing at least 130 people. French media reported that' 70 | 71 | >>> # with a positive prompt 72 | >>> neg_inputs = tokenizer(["A very happy event happened,"], return_tensors="pt") 73 | >>> out = model.generate(inputs["input_ids"], guidance_scale=0, negative_prompt_ids=neg_inputs["input_ids"]) 74 | >>> tokenizer.batch_decode(out, skip_special_tokens=True)[0] 75 | "Today, a dragon flew over Paris, France, and I'm very happy to be here. I" 76 | ``` 77 | """ 78 | 79 | def __init__( 80 | self, 81 | guidance_scale: float, 82 | model, 83 | unconditional_ids: Optional[torch.LongTensor] = None, 84 | unconditional_attention_mask: Optional[torch.LongTensor] = None, 85 | use_cache: Optional[bool] = True, 86 | ): 87 | self.guidance_scale = guidance_scale 88 | self.model = model 89 | self.unconditional_context = { 90 | "input_ids": unconditional_ids, 91 | "attention_mask": unconditional_attention_mask, 92 | "use_cache": use_cache, 93 | "past_key_values": None, 94 | "first_pass": True, 95 | } 96 | 97 | def get_unconditional_logits(self, input_ids): 98 | if self.unconditional_context["first_pass"]: 99 | if self.unconditional_context["input_ids"] is None: 100 | self.unconditional_context["input_ids"] = input_ids[:, -1:] 101 | if self.unconditional_context["attention_mask"] is None: 102 | self.unconditional_context["attention_mask"] = torch.ones_like( 103 | self.unconditional_context["input_ids"], dtype=torch.long 104 | ) 105 | input_ids = self.unconditional_context["input_ids"] 106 | attention_mask = self.unconditional_context["attention_mask"] 107 | self.unconditional_context["first_pass"] = False 108 | else: 109 | attention_mask = torch.cat( 110 | [ 111 | self.unconditional_context["attention_mask"], 112 | torch.ones_like(input_ids[:, -1:], dtype=torch.long), 113 | ], 114 | dim=1, 115 | ) 116 | if not self.unconditional_context["use_cache"]: 117 | input_ids = torch.cat( 118 | [self.unconditional_context["input_ids"], input_ids[:, -1:]], dim=1 119 | ) 120 | else: 121 | input_ids = input_ids[:, -1:] 122 | self.unconditional_context["input_ids"] = input_ids 123 | self.unconditional_context["attention_mask"] = attention_mask 124 | 125 | out = self.model( 126 | input_ids, 127 | attention_mask=attention_mask, 128 | use_cache=self.unconditional_context["use_cache"], 129 | past_key_values=self.unconditional_context["past_key_values"], 130 | ) 131 | self.unconditional_context["past_key_values"] = out.get("past_key_values", None) 132 | 133 | return out.logits 134 | 135 | def __call__(self, input_ids, scores): 136 | scores = torch.nn.functional.log_softmax(scores, dim=-1) 137 | if self.guidance_scale == 1: 138 | return scores 139 | 140 | logits = self.get_unconditional_logits(input_ids) 141 | 142 | unconditional_logits = torch.nn.functional.log_softmax(logits[:, -1], dim=-1) 143 | out = ( 144 | self.guidance_scale * (scores - unconditional_logits) + unconditional_logits 145 | ) 146 | return out 147 | -------------------------------------------------------------------------------- /dart/settings.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from typing import Literal, Any 3 | 4 | import gradio as gr 5 | 6 | from modules import shared 7 | from modules.options import Options 8 | 9 | logger = logging.getLogger(__name__) 10 | 11 | 12 | MODEL_BACKEND_TYPE = { 13 | "ORIGINAL": "Original", 14 | "ONNX": "ONNX", 15 | "ONNX_QUANTIZED": "ONNX (Quantized)", 16 | } 17 | 18 | OPTION_NAME = Literal[ 19 | "model_name", 20 | "tokenizer_name", 21 | "model_backend_type", 22 | "model_device", 23 | "debug_logging", 24 | "escape_input_brackets", 25 | "escape_output_brackets", 26 | ] 27 | 28 | DEFAULT_VALUES: dict[OPTION_NAME, Any] = { 29 | "model_name": "p1atdev/dart-v1-sft", 30 | "tokenizer_name": "p1atdev/dart-v1-sft", 31 | "model_backend_type": MODEL_BACKEND_TYPE["ONNX_QUANTIZED"], 32 | "model_device": "cpu", 33 | "escape_input_brackets": True, 34 | "escape_output_brackets": True, 35 | "debug_logging": False, 36 | } 37 | 38 | 39 | def parse_options(opts: Options | None) -> dict[OPTION_NAME, Any]: 40 | 41 | def get_value(key: OPTION_NAME): 42 | assert opts is not None 43 | # fallback if the key doest not exist 44 | return opts.__getattr__(key) if hasattr(opts, key) else DEFAULT_VALUES[key] 45 | 46 | return { 47 | "model_name": get_value("model_name"), 48 | "tokenizer_name": get_value("tokenizer_name"), 49 | "model_backend_type": get_value("model_backend_type"), 50 | "model_device": get_value("model_device"), 51 | "escape_input_brackets": get_value("escape_input_brackets"), 52 | "escape_output_brackets": get_value("escape_output_brackets"), 53 | "debug_logging": get_value("debug_logging"), 54 | } 55 | 56 | 57 | def on_ui_settings(): 58 | section = ("dart_upsampler", "Danbooru Tags Upsampler") 59 | shared.opts.add_option( 60 | key="model_name", 61 | info=shared.OptionInfo( 62 | default=DEFAULT_VALUES["model_name"], 63 | label="The model to use for upsampling danbooru tags.", 64 | component=gr.Dropdown, 65 | component_args={"choices": ["p1atdev/dart-v1-sft"]}, 66 | section=section, 67 | ), 68 | ) 69 | shared.opts.add_option( 70 | key="tokenizer_name", 71 | info=shared.OptionInfo( 72 | default=DEFAULT_VALUES["tokenizer_name"], 73 | label="The tokenizer for the upsampling model.", 74 | component=gr.Dropdown, 75 | component_args={"choices": ["p1atdev/dart-v1-sft"]}, 76 | section=section, 77 | ), 78 | ) 79 | shared.opts.add_option( 80 | key="model_backend_type", 81 | info=shared.OptionInfo( 82 | default=DEFAULT_VALUES["model_backend_type"], 83 | label="The type of model backend.", 84 | component=gr.Dropdown, 85 | component_args={"choices": list(MODEL_BACKEND_TYPE.values())}, 86 | section=section, 87 | ).info( 88 | "Original = inefficient computation; ONNX = efficient computing but the model size is very large; ONNX (Quantized) = efficient computation, smallest model file size, and fastest" 89 | ), 90 | ) 91 | shared.opts.add_option( 92 | key="model_device", 93 | info=shared.OptionInfo( 94 | default=DEFAULT_VALUES["model_device"], 95 | label="The device to run upsampling model on.", 96 | component=gr.Textbox, 97 | section=section, 98 | ), 99 | ) 100 | shared.opts.add_option( 101 | key="escape_input_brackets", 102 | info=shared.OptionInfo( 103 | default=DEFAULT_VALUES["escape_input_brackets"], 104 | label="Allow escaped brackets in input prompt.", 105 | component=gr.Checkbox, 106 | section=section, 107 | ), 108 | ) 109 | shared.opts.add_option( 110 | key="escape_output_brackets", 111 | info=shared.OptionInfo( 112 | default=DEFAULT_VALUES["escape_output_brackets"], 113 | label="Escape brackets in upsampled tags.", 114 | component=gr.Checkbox, 115 | section=section, 116 | ), 117 | ) 118 | shared.opts.add_option( 119 | key="debug_logging", 120 | info=shared.OptionInfo( 121 | default=DEFAULT_VALUES["debug_logging"], 122 | label="Enblae debug logging.", 123 | component=gr.Checkbox, 124 | section=section, 125 | ), 126 | ) 127 | -------------------------------------------------------------------------------- /dart/utils.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import random 3 | import re 4 | 5 | from typing import TYPE_CHECKING, Any 6 | 7 | if TYPE_CHECKING: 8 | from modules.processing import ( 9 | StableDiffusionProcessingTxt2Img, 10 | StableDiffusionProcessingImg2Img, 11 | ) 12 | 13 | StableDiffusionProcessing = ( 14 | StableDiffusionProcessingTxt2Img | StableDiffusionProcessingImg2Img 15 | ) 16 | else: 17 | StableDiffusionProcessing = Any 18 | 19 | 20 | logger = logging.getLogger(__name__) 21 | 22 | SEED_MIN = 0 23 | SEED_MAX = 2**32 - 1 24 | 25 | # special symbols in webui prompt syntax 26 | SPECIAL_SYMBOL_PATTERN = re.compile(r"([()])") 27 | 28 | # escaped and unescaped symbols pair to unescaping processing 29 | ESCAPED_SYMBOL_PATTERNS = {re.compile(r"\\\("): "(", re.compile(r"\\\)"): ")"} 30 | 31 | # a pttern of escaping special symbols in regex 32 | TAG_ESCAPE_SYMBOL_PATTERN = re.compile(r"[\\^${}[\]()?+|]") 33 | 34 | 35 | def get_random_seed(): 36 | return random.randint(SEED_MIN, SEED_MAX) 37 | 38 | 39 | # ref: https://github.com/adieyal/sd-dynamic-prompts/blob/main/sd_dynamic_prompts/helpers.py 40 | def get_upmsapling_seeds( 41 | p: StableDiffusionProcessing, 42 | num_seeds: int, 43 | custom_seed: int, 44 | ) -> list[int]: 45 | if p.subseed_strength != 0: 46 | subseed = int(p.all_subseeds[0]) 47 | else: 48 | subseed = int(p.subseed) 49 | 50 | if subseed == -1: 51 | subseed = get_random_seed() 52 | 53 | if custom_seed != -1: 54 | # if custom_seed is specified, use the same seeds for prompts 55 | all_subseeds = [int(custom_seed)] * num_seeds 56 | else: 57 | # increase randomness by adding images' seeds 58 | all_subseeds = [ 59 | (int(p.seed) + subseed + i) % SEED_MAX for i in range(num_seeds) 60 | ] 61 | 62 | return all_subseeds 63 | 64 | 65 | def escape_webui_special_symbols(tags: list[str]) -> list[str]: 66 | """Returns tags only which has brackets escaped.""" 67 | 68 | escaped_tags = [SPECIAL_SYMBOL_PATTERN.sub(r"\\\1", tag) for tag in tags] 69 | 70 | return escaped_tags 71 | 72 | 73 | def unescape_webui_special_symbols(tags: list[str]) -> list[str]: 74 | """Returns all tags after unescaping.""" 75 | unescaped_tags = [] 76 | 77 | for tag in tags: 78 | for pattern, replace_to in ESCAPED_SYMBOL_PATTERNS.items(): 79 | tag = pattern.sub(replace_to, tag) 80 | 81 | unescaped_tags.append(tag) 82 | 83 | return unescaped_tags 84 | 85 | 86 | def _get_tag_pattern(tag: str) -> re.Pattern: 87 | """Returns a regex pattern of a tag""" 88 | 89 | if "*" in tag: 90 | tag = tag.replace("*", ".*") 91 | tag = TAG_ESCAPE_SYMBOL_PATTERN.sub(lambda m: "\\" + m.group(0), tag) 92 | else: 93 | # escape all 94 | tag = re.escape(tag) 95 | 96 | return re.compile(tag) 97 | 98 | 99 | def get_patterns_from_tag_list(tags: list[str]) -> list[re.Pattern]: 100 | """Returns regex patterns from tag list""" 101 | return [_get_tag_pattern(tag) for tag in tags] 102 | 103 | 104 | def get_valid_tag_list(tag_text: str) -> list[str]: 105 | """Returns a list of non-empty tags from a tag text""" 106 | return [tag.strip() for tag in tag_text.split(",") if tag.strip() != ""] 107 | -------------------------------------------------------------------------------- /images/sample-1-w.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/sample-1-w.jpg -------------------------------------------------------------------------------- /images/sample-1-wo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/sample-1-wo.jpg -------------------------------------------------------------------------------- /images/sample-2-w.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/sample-2-w.jpg -------------------------------------------------------------------------------- /images/sample-2-wo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/sample-2-wo.jpg -------------------------------------------------------------------------------- /images/sample-3-w.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/sample-3-w.jpg -------------------------------------------------------------------------------- /images/sample-3-wo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/sample-3-wo.jpg -------------------------------------------------------------------------------- /images/sample-4-w.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/sample-4-w.jpg -------------------------------------------------------------------------------- /images/sample-4-wo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/sample-4-wo.jpg -------------------------------------------------------------------------------- /images/screenshot-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/screenshot-1.jpg -------------------------------------------------------------------------------- /images/screenshot-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/screenshot-2.jpg -------------------------------------------------------------------------------- /images/variation-normal-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-normal-1.jpg -------------------------------------------------------------------------------- /images/variation-normal-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-normal-2.jpg -------------------------------------------------------------------------------- /images/variation-normal-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-normal-3.jpg -------------------------------------------------------------------------------- /images/variation-unvaried-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-unvaried-1.jpg -------------------------------------------------------------------------------- /images/variation-unvaried-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-unvaried-2.jpg -------------------------------------------------------------------------------- /images/variation-unvaried-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-unvaried-3.jpg -------------------------------------------------------------------------------- /images/variation-varied-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-varied-1.jpg -------------------------------------------------------------------------------- /images/variation-varied-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-varied-2.jpg -------------------------------------------------------------------------------- /images/variation-varied-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-varied-3.jpg -------------------------------------------------------------------------------- /images/variation-very_unvaried-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-very_unvaried-1.jpg -------------------------------------------------------------------------------- /images/variation-very_unvaried-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-very_unvaried-2.jpg -------------------------------------------------------------------------------- /images/variation-very_unvaried-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-very_unvaried-3.jpg -------------------------------------------------------------------------------- /images/variation-very_varied-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-very_varied-1.jpg -------------------------------------------------------------------------------- /images/variation-very_varied-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-very_varied-2.jpg -------------------------------------------------------------------------------- /images/variation-very_varied-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p1atdev/sd-danbooru-tags-upsampler/2a2ec1d8a4529806e9bef4a3290d478bacc4386a/images/variation-very_varied-3.jpg -------------------------------------------------------------------------------- /install.py: -------------------------------------------------------------------------------- 1 | import launch 2 | 3 | if not launch.is_installed("optimum"): 4 | launch.run_pip( 5 | "install optimum[onnxruntime]", "requirements for Danbooru Tags Upsampler" 6 | ) 7 | 8 | 9 | if not launch.is_installed("onnxruntime"): 10 | launch.run_pip( 11 | "install optimum[onnxruntime]", "requirements for Danbooru Tags Upsampler" 12 | ) 13 | 14 | 15 | if launch.is_installed("tensorflow"): 16 | show_result = launch.run( 17 | f'"{launch.python}" -m pip show tensorflow', 18 | ) 19 | if "2.15.1" not in show_result: 20 | launch.run_pip( 21 | "install -U tensorflow==2.15.1", 22 | "tensorflow for Danbooru Tags Upsampler to avoid the error with transformers==4.30.2", 23 | ) 24 | -------------------------------------------------------------------------------- /localizations/ja_JP.json: -------------------------------------------------------------------------------- 1 | { 2 | "Danbooru Tags Upsampler": "Danbooru タグアップサンプラー", 3 | "Enabled": "有効にする", 4 | "Total tag length": "タグの合計長", 5 | "very short": "とても短い", 6 | "short": "短い", 7 | "long": "長い", 8 | "very long": "とても長い", 9 | "Ban tags": "禁止タグ", 10 | "Separate with comma. Using `*` matches to any character (e.g. `* ears` matches to `animal ears`, `cat ears`, ...)": "カンマで区切ります。 `*` は全ての文字列にマッチします。(例: `* ears` は `animal ears`, `cat ears` 等にマッチします)", 11 | "Seed for upsampling tags": "タグのアップサンプリング用シード値", 12 | "Randomize": "ランダム化", 13 | "Shuffle": "シャッフル", 14 | "Upsampling timing": "アップサンプルのタイミング", 15 | "Before applying other prompt processings": "他のプロンプト加工処理の実行前", 16 | "After applying other prompt processings": "他のプロンプト加工処理の実行後", 17 | "_Prompt upsampling will be applied to **only the first image in batch**, **before** sd-dynamic-promps and the webui's styles feature are applied_": "_アップサンプリングは sd-dynamic-prompts や webui の styles が適用される**前**に、**バッチの一番最初の画像のみ**に対して適用されます_", 18 | "_Prompt upsampling will be applied to **all images in batch**, **after** sd-dynamic-promps and the webui's styles feature are applied_": "_アップサンプリングは sd-dynamic-prompts や webui の styles が適用された**後**に、**バッチのすべての画像**に対して適用されます_", 19 | "Variety level": "多様性レベル", 20 | "Just easy presets of generation config below": "下の生成オプションのプリセットです。", 21 | "very unvaried": "非常に単調", 22 | "unvaried": "単調", 23 | "normal": "普通", 24 | "varied": "多様", 25 | "very varied": "非常に多様", 26 | "Generation config": "生成オプション", 27 | "← less random | more random →": "← 低ランダム性 | 高ランダム性 →", 28 | "← more random, less computation | less random, more computation →": "← 低ランダム性, 少計算量 | 高ランダム性, 多計算量 →", 29 | "The model to use for upsampling danbooru tags.": "Danbooru タグのアップサンプルに利用するモデル", 30 | "The tokenizer for the upsampling model.": "アップサンプルモデルで使うトークナイザー", 31 | "The type of model backend.": "モデルのバックエンド", 32 | "Original = inefficient computation; ONNX = efficient computing but the model size is very large; ONNX (Quantized) = efficient computation, smallest model file size, and fastest": "Original = 計算効率よくない; ONNX = 計算効率良いがモデルサイズが大きい; ONNX (Quantized) = 計算効率が良く、モデルサイズも小さく、最速", 33 | "Original": "オリジナル", 34 | "ONNX (Quantized)": "ONNX (量子化)", 35 | "The device to run upsampling model on.": "アップサンプルモデルを実行するデバイス", 36 | "Allow escaped brackets in input prompt.": "入力プロンプト中のエスケープされた括弧を許容する", 37 | "Escape brackets in upsampled tags.": "出力されるタグの括弧をエスケープする", 38 | "Enable debug logging.": "デバッグログを有効にする" 39 | } 40 | -------------------------------------------------------------------------------- /metadata.ini: -------------------------------------------------------------------------------- 1 | # This section contains information about the extension itself. 2 | # This section is optional. 3 | [Extension] 4 | 5 | # A canonical name of the extension. 6 | # Only lowercase letters, numbers, dashes and underscores are allowed. 7 | # This is a unique identifier of the extension, and the loader will refuse to 8 | # load two extensions with the same name. If the name is not supplied, the 9 | # name of the extension directory is used. Other extensions can use this 10 | # name to refer to this extension in the file. 11 | Name = sd-danbooru-tags-upsampler 12 | 13 | # A comma-or-space-separated list of extensions that this extension requires 14 | # to be installed and enabled. 15 | # The loader will generate a warning if any of the extensions in this list is 16 | # not installed or disabled. 17 | ; Requires = another-extension, yet-another-extension 18 | 19 | # Declaring relationships of folders 20 | # 21 | # This section declares relations of all files in `scripts` directory. 22 | # By changing the section name, it can also be used on other directories 23 | # walked by `load_scripts` function (for example `javascript` and `localization`). 24 | # This section is optional. 25 | [scripts] 26 | 27 | # A comma-or-space-separated list of extensions that files in this folder requires 28 | # to be present. 29 | # It is only allowed to specify an extension here. 30 | # The loader will generate a warning if any of the extensions in this list is 31 | # not installed or disabled. 32 | ; Requires = another-extension, yet-another-extension 33 | 34 | # A comma-or-space-separated list of extensions that files in this folder wants 35 | # to be loaded before. 36 | # It is only allowed to specify an extension here. 37 | # The loading order of all files in the specified folder will be moved so that 38 | # the files in the current extension are loaded before the files in the same 39 | # folder in the listed extension. 40 | ; Before = another-extension, yet-another-extension 41 | 42 | # A comma-or-space-separated list of extensions that files in this folder wants 43 | # to be loaded after. 44 | # Other details are the same as `Before` key. 45 | After = sd-dynamic-prompts 46 | 47 | # Declaring relationships of a specific file 48 | # 49 | # This section declares relations of a specific file to files in the same 50 | # folder of other extensions. 51 | # By changing the section name, it can also be used on other directories 52 | # walked by `load_scripts` function (for example `javascript` and `localization`). 53 | # This section is optional. 54 | ; [scripts/another-script.py] 55 | 56 | # A comma-or-space-separated list of extensions/files that this file requires 57 | # to be present. 58 | # The `Requires` key in the folder section will be prepended to this list. 59 | # The loader will generate a warning if any of the extensions/files in this list is 60 | # not installed or disabled. 61 | # It is allowed to specify either an extension or a specific file. 62 | # When referencing a file, the folder name must be omitted. 63 | # 64 | # For example, the `yet-another-extension/another-script.py` item refers to 65 | # `scripts/another-script.py` in `yet-another-extension`. 66 | ; Requires = another-extension, yet-another-extension/another-script.py, xyz_grid.py 67 | 68 | # A comma-or-space-separated list of extensions that this file wants 69 | # to be loaded before. 70 | # The `Before` key in the folder section will be prepended to this list. 71 | # The loading order of this file will be moved so that this file is 72 | # loaded before the referenced file in the list. 73 | ; Before = another-extension, yet-another-extension/another-script.py, xyz_grid.py 74 | 75 | # A comma-or-space-separated list of extensions that this file wants 76 | # to be loaded after. 77 | # Other details are the same as `Before` key. 78 | ; After = another-extension, yet-another-extension/another-script.py, xyz_grid.py 79 | -------------------------------------------------------------------------------- /scripts/dart_upsampler.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | 4 | import gradio as gr 5 | from transformers import set_seed 6 | 7 | from modules import script_callbacks 8 | import modules.scripts as scripts 9 | from modules.scripts import basedir 10 | from modules.processing import ( 11 | StableDiffusionProcessingTxt2Img, 12 | StableDiffusionProcessingImg2Img, 13 | ) 14 | from modules.shared import opts 15 | 16 | from dart.generator import DartGenerator 17 | from dart.analyzer import DartAnalyzer 18 | from dart.settings import on_ui_settings, parse_options 19 | import dart.utils as utils 20 | from dart.utils import SEED_MAX 21 | 22 | logger = logging.getLogger(__name__) 23 | logger.setLevel(logging.INFO) 24 | 25 | 26 | TOTAL_TAG_LENGTH = { 27 | "VERY_SHORT": "very short", 28 | "SHORT": "short", 29 | "LONG": "long", 30 | "VERY_LONG": "very long", 31 | } 32 | 33 | TOTAL_TAG_LENGTH_TAGS = { 34 | TOTAL_TAG_LENGTH["VERY_SHORT"]: "<|very_short|>", 35 | TOTAL_TAG_LENGTH["SHORT"]: "<|short|>", 36 | TOTAL_TAG_LENGTH["LONG"]: "<|long|>", 37 | TOTAL_TAG_LENGTH["VERY_LONG"]: "<|very_long|>", 38 | } 39 | 40 | PROCESSING_TIMING = { 41 | "BEFORE": "Before applying other prompt processings", 42 | "AFTER": "After applying other prompt processings", 43 | } 44 | 45 | VARIETY_OPTIONS = { 46 | "VERY_UNVARIED": "very unvaried", 47 | "UNVARIED": "unvaried", 48 | "NORMAL": "normal", 49 | "VARIED": "varied", 50 | "VERY_VARIED": "very varied", 51 | } 52 | # value: kye 53 | VARIETY_OPTIONS_VK = {v: k for k, v in VARIETY_OPTIONS.items()} 54 | 55 | VARIETY_PRESETS = { 56 | # [temperature, top_p, top_k, num_beams] 57 | "VERY_UNVARIED": [0.85, 0.9, 20, 2], 58 | "UNVARIED": [0.9, 0.95, 20, 1], 59 | "NORMAL": [1.0, 1, 30, 1], 60 | "VARIED": [1.5, 1, 50, 1], 61 | "VERY_VARIED": [2.0, 0.9, 100, 1], 62 | } 63 | 64 | extension_dir = basedir() 65 | 66 | 67 | def _join_texts(prefix: str, suffix: str) -> str: 68 | return ", ".join([part for part in [prefix, suffix] if part.strip() != ""]) 69 | 70 | 71 | def _concatnate_texts(prefix: list[str], suffix: list[str]) -> list[str]: 72 | return [_join_texts(prompt, suffix[i]) for i, prompt in enumerate(prefix)] 73 | 74 | 75 | class DartUpsampleScript(scripts.Script): 76 | generator: DartGenerator 77 | analyzer: DartAnalyzer 78 | 79 | def __init__(self): 80 | super().__init__() 81 | 82 | self.options = parse_options(opts) 83 | if self.options["debug_logging"]: 84 | logger.setLevel(logging.DEBUG) 85 | 86 | self.generator = DartGenerator( 87 | self.options["model_name"], 88 | self.options["tokenizer_name"], 89 | self.options["model_backend_type"], 90 | ) 91 | self.analyzer = DartAnalyzer( 92 | extension_dir, 93 | self.generator.get_vocab_list(), 94 | self.generator.get_special_vocab_list(), 95 | ) 96 | 97 | script_callbacks.on_ui_settings(on_ui_settings) 98 | 99 | def title(self): 100 | return "Danbooru Tags Upsampler" 101 | 102 | def show(self, is_img2img): 103 | return scripts.AlwaysVisible 104 | 105 | def ui(self, is_img2img): 106 | with gr.Accordion(open=False, label=self.title()): 107 | with gr.Column(): 108 | enabled_check = gr.Checkbox(label="Enabled", value=False) 109 | 110 | tag_length_radio = gr.Radio( 111 | label="Total tag length", 112 | choices=list(TOTAL_TAG_LENGTH.values()), 113 | value=TOTAL_TAG_LENGTH["LONG"], 114 | ) 115 | ban_tags_textbox = gr.Textbox( 116 | label="Ban tags", 117 | info="Separate with comma. Using `*` matches to any character (e.g. `* ears` matches to `animal ears`, `cat ears`, ...)", 118 | value="", 119 | placeholder="umbrella, official *, * text, * background, ...", 120 | ) 121 | 122 | with gr.Group(): 123 | with gr.Row(): 124 | seed_num_input = gr.Number( 125 | label="Seed for upsampling tags", 126 | minimum=-1, 127 | maximum=SEED_MAX, 128 | step=1, 129 | scale=4, 130 | value=-1, 131 | ) 132 | seed_random_btn = gr.Button(value="Randomize") 133 | seed_shuffle_btn = gr.Button(value="Shuffle") 134 | 135 | def click_random_seed_btn(): 136 | return -1 137 | 138 | seed_random_btn.click( 139 | click_random_seed_btn, outputs=[seed_num_input] 140 | ) 141 | 142 | def click_shuffle_seed_btn(): 143 | return utils.get_random_seed() 144 | 145 | seed_shuffle_btn.click( 146 | click_shuffle_seed_btn, outputs=[seed_num_input] 147 | ) 148 | 149 | with gr.Group(): 150 | process_timing_dropdown = gr.Dropdown( 151 | label="Upsampling timing", 152 | choices=list(PROCESSING_TIMING.values()), 153 | value=PROCESSING_TIMING["AFTER"], 154 | ) 155 | 156 | def on_process_timing_dropdown_changed(timing: str): 157 | if timing == PROCESSING_TIMING["BEFORE"]: 158 | return "_Prompt upsampling will be applied to **only the first image in batch**, **before** sd-dynamic-promps and the webui's styles feature are applied_" 159 | elif timing == PROCESSING_TIMING["AFTER"]: 160 | return "_Prompt upsampling will be applied to **all images in batch**, **after** sd-dynamic-promps and the webui's styles feature are applied_" 161 | raise Exception(f"Unknown timing: {timing}") 162 | 163 | process_timing_md = gr.Markdown( 164 | on_process_timing_dropdown_changed( 165 | process_timing_dropdown.value 166 | ) 167 | ) 168 | 169 | process_timing_dropdown.change( 170 | on_process_timing_dropdown_changed, 171 | inputs=[process_timing_dropdown], 172 | outputs=[process_timing_md], 173 | ) 174 | 175 | with gr.Group(): 176 | variety_preset_radio = gr.Radio( 177 | label="Variety level", 178 | info="Just easy presets of generation config below", 179 | choices=list(VARIETY_OPTIONS.values()), 180 | value=VARIETY_OPTIONS["NORMAL"], 181 | ) 182 | 183 | with gr.Accordion(label="Generation config", open=False): 184 | do_cfg_check = gr.Checkbox( 185 | label="Do CFG", 186 | info="Enables classifier-free guidance, this takes double of computation", 187 | visible=False, 188 | ) 189 | negative_prompt_textbox = gr.Textbox( 190 | label="Negative tags", 191 | placeholder="simple background, ...", 192 | value="", 193 | visible=False, 194 | ) 195 | cfg_scale_slider = gr.Slider( 196 | label="CFG scale", 197 | minimum=0.1, 198 | maximum=3.0, 199 | value=1.5, 200 | step=0.1, 201 | visible=False, 202 | ) 203 | 204 | temperature_slider = gr.Slider( 205 | label="Temperature", 206 | info="← less random | more random →", 207 | maximum=4.0, 208 | minimum=0.1, 209 | step=0.01, 210 | value=1.0, 211 | ) 212 | top_p_slider = gr.Slider( 213 | label="Top p", 214 | info="← less random | more random →", 215 | maximum=1.0, 216 | minimum=0.0, 217 | step=0.01, 218 | value=1.0, 219 | ) 220 | top_k_slider = gr.Slider( 221 | label="Top k", 222 | info="← less random | more random →", 223 | maximum=1000, 224 | minimum=10, 225 | step=1, 226 | value=20, 227 | ) 228 | 229 | num_beams_slider = gr.Slider( 230 | label="Num beams", 231 | info="← more random, less computation | less random, more computation →", 232 | maximum=20, 233 | minimum=1, 234 | step=1, 235 | value=1, 236 | ) 237 | 238 | # update generation config when the preset is changed 239 | def on_variety_preset_radio_change(level: str): 240 | if level in VARIETY_OPTIONS.values(): 241 | return VARIETY_PRESETS[VARIETY_OPTIONS_VK[level]] 242 | else: 243 | raise Exception(f"Unknown variety level: {level}") 244 | 245 | variety_preset_radio.change( 246 | on_variety_preset_radio_change, 247 | inputs=[variety_preset_radio], 248 | outputs=[ 249 | temperature_slider, 250 | top_p_slider, 251 | top_k_slider, 252 | num_beams_slider, 253 | ], 254 | ) 255 | 256 | return [ 257 | enabled_check, 258 | tag_length_radio, 259 | ban_tags_textbox, 260 | seed_num_input, 261 | process_timing_dropdown, 262 | # generation config 263 | do_cfg_check, 264 | negative_prompt_textbox, 265 | cfg_scale_slider, 266 | temperature_slider, 267 | top_p_slider, 268 | top_k_slider, 269 | num_beams_slider, 270 | ] 271 | 272 | def process( 273 | self, 274 | p: StableDiffusionProcessingTxt2Img | StableDiffusionProcessingImg2Img, 275 | is_enabled: bool, 276 | tag_length: str, 277 | ban_tags: str, 278 | seed_num: int, 279 | process_timing: str, 280 | # generation config 281 | do_cfg: bool, 282 | negative_prompt: str, 283 | cfg_scale: float, 284 | temperature: float, 285 | top_p: float, 286 | top_k: int, 287 | num_bemas: int, 288 | ): 289 | """This method will be called after sd-dynamic-prompts and the styles are applied.""" 290 | 291 | if not is_enabled: 292 | return 293 | 294 | if process_timing != PROCESSING_TIMING["AFTER"]: 295 | return 296 | 297 | analyzing_results = [self.analyzer.analyze(prompt) for prompt in p.all_prompts] 298 | logger.debug(f"Analyzed: {analyzing_results}") 299 | 300 | upsampling_prompt = [ 301 | self.generator.compose_prompt( 302 | rating=f"{result.rating_parent}, {result.rating_child}", 303 | copyright=result.copyright, 304 | character=result.character, 305 | general=result.general, 306 | length=TOTAL_TAG_LENGTH_TAGS[tag_length], 307 | ) 308 | for result in analyzing_results 309 | ] 310 | logger.debug(f"Upsampling prompt: {upsampling_prompt}") 311 | bad_words_ids = self.generator.get_bad_words_ids(ban_tags) 312 | 313 | upsampling_negative_prompts = [] 314 | if do_cfg and negative_prompt is not None: 315 | negative_analyzing_result = self.analyzer.analyze(negative_prompt) 316 | logger.debug(f"Analyzed (negative): {negative_analyzing_result}") 317 | 318 | for analyzing_result in analyzing_results: 319 | upsampling_negative_prompt = self.generator.compose_prompt( 320 | rating=f"{analyzing_result.rating_parent}, {analyzing_result.rating_child}", 321 | copyright=_join_texts( 322 | analyzing_result.copyright, negative_analyzing_result.copyright 323 | ), 324 | character=_join_texts( 325 | analyzing_result.character, negative_analyzing_result.character 326 | ), 327 | general=negative_analyzing_result.general, 328 | length=TOTAL_TAG_LENGTH_TAGS[tag_length], 329 | ) 330 | upsampling_negative_prompts.append(upsampling_negative_prompt) 331 | 332 | num_images = p.n_iter * p.batch_size 333 | upsampling_seeds = utils.get_upmsapling_seeds( 334 | p, 335 | num_images, 336 | custom_seed=seed_num, 337 | ) 338 | 339 | # this list has only 1 item 340 | upsampled_tags = self._upsample_tags( 341 | upsampling_prompt, 342 | seeds=upsampling_seeds, 343 | temperature=float(temperature), 344 | top_p=float(top_p), 345 | top_k=int(top_k), 346 | num_bemas=int(num_bemas), 347 | bad_words_ids=bad_words_ids, 348 | negative_prompts=upsampling_negative_prompts if do_cfg else None, 349 | cfg_scale=float(cfg_scale), 350 | ) 351 | logger.debug(f"Upsampled tags: {upsampled_tags}") 352 | 353 | # set new prompts 354 | p.all_prompts = _concatnate_texts(p.all_prompts, upsampled_tags) 355 | 356 | def before_process( 357 | self, 358 | p: StableDiffusionProcessingTxt2Img | StableDiffusionProcessingImg2Img, 359 | is_enabled: bool, 360 | tag_length: str, 361 | ban_tags: str, 362 | seed_num: int, 363 | process_timing: str, 364 | # generation config 365 | do_cfg: bool, 366 | negative_prompt: str, 367 | cfg_scale: float, 368 | temperature: float, 369 | top_p: float, 370 | top_k: int, 371 | num_bemas: int, 372 | ): 373 | """This method will be called before sd-dynamic-prompts and the styles are applied.""" 374 | 375 | if not is_enabled: 376 | return 377 | 378 | if process_timing != PROCESSING_TIMING["BEFORE"]: 379 | return 380 | 381 | analyzing_result = self.analyzer.analyze(p.prompt) 382 | logger.debug(f"Analyzed: {analyzing_result}") 383 | 384 | upsampling_prompt = self.generator.compose_prompt( 385 | rating=f"{analyzing_result.rating_parent}, {analyzing_result.rating_child}", 386 | copyright=analyzing_result.copyright, 387 | character=analyzing_result.character, 388 | general=analyzing_result.general, 389 | length=TOTAL_TAG_LENGTH_TAGS[tag_length], 390 | ) 391 | logger.debug(f"Upsampling prompt: {upsampling_prompt}") 392 | bad_words_ids = self.generator.get_bad_words_ids(ban_tags) 393 | 394 | upsampling_negative_prompt = None 395 | if do_cfg and negative_prompt is not None: 396 | negative_analyzing_result = self.analyzer.analyze(p.prompt) 397 | logger.debug(f"Analyzed (negative): {analyzing_result}") 398 | 399 | upsampling_negative_prompt = self.generator.compose_prompt( 400 | rating=f"{analyzing_result.rating_parent}, {analyzing_result.rating_child}", 401 | copyright=_join_texts( 402 | analyzing_result.copyright, negative_analyzing_result.copyright 403 | ), 404 | character=_join_texts( 405 | analyzing_result.character, negative_analyzing_result.character 406 | ), 407 | general=negative_analyzing_result.general, 408 | length=TOTAL_TAG_LENGTH_TAGS[tag_length], 409 | ) 410 | 411 | upsampling_seeds = utils.get_upmsapling_seeds( 412 | p, 413 | num_seeds=1, # only for the first prompt 414 | custom_seed=seed_num, 415 | ) 416 | 417 | # this list has only 1 item 418 | upsampled_tags = self._upsample_tags( 419 | [upsampling_prompt], 420 | seeds=upsampling_seeds, 421 | temperature=float(temperature), 422 | top_p=float(top_p), 423 | top_k=int(top_k), 424 | num_bemas=int(num_bemas), 425 | bad_words_ids=bad_words_ids, 426 | negative_prompts=( 427 | [upsampling_negative_prompt] 428 | if upsampling_negative_prompt is not None 429 | else None 430 | ), 431 | cfg_scale=float(cfg_scale), 432 | ) 433 | logger.debug(f"Upsampled tags: {upsampled_tags}") 434 | 435 | # set a new prompt 436 | p.prompt = _concatnate_texts([p.prompt], upsampled_tags)[0] 437 | 438 | def _upsample_tags( 439 | self, 440 | prompts: list[str], 441 | seeds: list[int], 442 | temperature: float = 1.0, 443 | top_p: float = 1.0, 444 | top_k: int = 20, 445 | num_bemas: int = 1, 446 | bad_words_ids: list[list[int]] | None = None, 447 | negative_prompts: list[str] | None = None, 448 | cfg_scale: float = 1.5, 449 | ) -> list[str]: 450 | """Upsamples tags using provided prompts and returns added tags.""" 451 | 452 | if len(prompts) == 1 and len(prompts) != len(seeds): 453 | prompts = prompts * len(seeds) 454 | 455 | upsampled_tags = [] 456 | for i, (prompt, seed) in enumerate(zip(prompts, seeds, strict=True)): 457 | set_seed(seed) 458 | upsampled_tags.append( 459 | self.generator.generate( 460 | prompt, 461 | temperature=temperature, 462 | top_p=top_p, 463 | top_k=top_k, 464 | num_beams=num_bemas, 465 | bad_words_ids=bad_words_ids, 466 | negative_prompt=( 467 | negative_prompts[i] if negative_prompts is not None else None 468 | ), 469 | cfg_scale=cfg_scale, 470 | ) 471 | ) 472 | return upsampled_tags 473 | -------------------------------------------------------------------------------- /tags/copyright.txt: -------------------------------------------------------------------------------- 1 | kamen rider dcd 2 | idolmaster 2 3 | immaterial and missing power 4 | chikanoko 5 | cream lemon 6 | sengoku otome 7 | vampire (game) 8 | suigetsu 9 | suicide squad 10 | youkai watch 11 | the witcher 3 12 | kinnikuman 13 | toriko (series) 14 | bokutachi wa benkyou ga dekinai 15 | mahou sensei negima! 16 | guilty gear 2 17 | bra-ban! 18 | trigun stampede 19 | luck & logic 20 | pretty rhythm 21 | elona 22 | splatoon 3 23 | maou-jou de oyasumi 24 | otona no moeoh 25 | taiko no tatsujin 26 | getbackers 27 | pop-up story 28 | transformers animated 29 | strike witches zero 30 | the legend of zelda: breath of the wild 31 | kotoura-san 32 | dragon's dogma 33 | five star stories 34 | bubblegum crisis 35 | kaifuku jutsushi no yarinaoshi ~sokushi mahou to skill copy no chouetsu heal~ 36 | annie mei project 37 | tsukuyomi moonphase 38 | tsunderia 39 | girls bravo 40 | magus tale 41 | baccano! 42 | karakuri pierrot (vocaloid) 43 | kiznaiver 44 | tales of arise 45 | shoujo kakumei utena 46 | shining nikki 47 | ashita no kimi to au tame ni 48 | mayo chiki! 49 | super robot wars og saga mugen no frontier 50 | kaiten muten-maru 51 | umayuru 52 | scryed 53 | idolmaster cinderella girls u149 54 | nijisanji en 55 | goblin slayer! 56 | pixiv fate/grand order contest 1 57 | scp foundation 58 | lawson 59 | yu-gi-oh! gx 60 | hanshin tigers 61 | pokemon xy (anime) 62 | dead or alive 5 63 | .flow 64 | zero kara hajimeru mahou no sho 65 | pokemon (classic anime) 66 | turn a gundam 67 | kimi ga shine 68 | splatoon 2 69 | futari wa precure splash star 70 | seiken densetsu 2 71 | xenosaga 72 | gakkou de seishun! 73 | murenase! shiiton gakuen 74 | saibou shinkyoku 75 | fantastic beasts and where to find them 76 | ryuu ga gotoku 0 77 | mushihime-sama 78 | tokimeki memorial 2 79 | kingdom hearts 80 | macross zero 81 | ichigo 100 percent 82 | tsuritama 83 | the hobbit 84 | call of duty 85 | unfinished dream of all living ghost 86 | chunithm 87 | shinsougumi 88 | comic anthurium 89 | words worth 90 | addams family 91 | sweet home 92 | warframe 93 | waku waku 7 94 | kusari hime: euthanasia 95 | black lagoon 96 | panty & stocking with garterbelt 97 | sayonara zetsubou sensei 98 | princess principal 99 | muv-luv total eclipse 100 | elfen lied 101 | tales of phantasia 102 | iron saga 103 | nissin 104 | yuba no shirushi 105 | sangatsu no lion 106 | #compass 107 | iya na kao sare nagara opantsu misete moraitai 108 | final fantasy xi 109 | sd gundam g-generation 110 | zero no kiseki 111 | nyantype 112 | kakyuusei 113 | dengeki hime 114 | dog days 115 | xenoblade chronicles: future connected 116 | mega man legends 117 | team fortress 2 118 | 22/7 119 | batman (series) 120 | love hina 121 | to heart 2 ad 122 | senjou no valkyria 2 123 | ef 124 | mugen no fantasia 125 | hourou musuko 126 | ultra seven (series) 127 | white album (series) 128 | wixoss 129 | sengoku basara 130 | toaru majutsu no index 131 | nier 132 | a song of ice and fire 133 | nyan koi! 134 | kyu-kurarin (cevio) 135 | lobotomy corporation 136 | bleach: sennen kessen-hen 137 | rou-kyuu-bu! 138 | koumajou densetsu 2 139 | shino to ren 140 | bravely default: flying fairy 141 | fire emblem: thracia 776 142 | kimetsu gakuen 143 | djmax 144 | ginga eiyuu densetsu 145 | castlevania: symphony of the night 146 | warcraft 147 | monster hunter 3 g 148 | medaka box 149 | akarui kioku soushitsu 150 | tayutama 151 | captain america (series) 152 | hajimete no gal 153 | lord of heroes 154 | xenosaga episode i 155 | uber eats 156 | mega man 2 157 | shimoneta to iu gainen ga sonzai shinai taikutsu na sekai 158 | stardew valley 159 | dragon quest ix 160 | valkyrie drive -mermaid- 161 | sekaiju no meikyuu 162 | pixiv fantasia 1 163 | marvel cinematic universe 164 | hoshikuzu telepath 165 | kemono jihen 166 | berserk 167 | sketchbook full colors 168 | dairoku ryouhei 169 | mitsuboshi colors 170 | maji de watashi ni koi shinasai! 171 | capsule servant 172 | cuddly octopus 173 | hyakka ryouran samurai girls 174 | touhou cannonball 175 | maburaho 176 | hellsing 177 | sayonara wo oshiete 178 | mirai akari project 179 | azur lane 180 | tiny evil 181 | koi suru kanojo no bukiyou na butai 182 | kara no kyoukai 183 | grappler baki 184 | amakano ~second season~ 185 | yes! precure 5 gogo! 186 | mahou shoujo lyrical nanoha a's 187 | simoun 188 | ring dream 189 | beast wars 190 | medarot 191 | iosys 192 | chloris garden 193 | beast wars: transformers 194 | ai yori aoshi 195 | me!me!me! 196 | legend of mana 197 | gen'ei wo kakeru taiyou 198 | with you 199 | super robot wars z 200 | tales of destiny 201 | nu carnival 202 | venus blade 203 | ishuzoku reviewers 204 | cinderella 205 | cardcaptor sakura 206 | disneyland 207 | genshiken 208 | danna ga nani wo itte iru ka wakaranai ken 209 | propro production 210 | kodomo no jikan 211 | hanikami kanojo 212 | kairaku historie 213 | suzume no tojimari 214 | bungou to alchemist 215 | crazy raccoon 216 | god of war 217 | toaru kagaku no mental out 218 | gainax 219 | crypton future media 220 | eden's zero 221 | animedia 222 | akazukin chacha 223 | fate/extella 224 | assassin's creed 225 | black bullet 226 | shinrabanshou 227 | touken ranbu 228 | blade & soul 229 | hinako note 230 | bacchikoi! 231 | lost technology 232 | dance dance revolution 233 | pretty rhythm rainbow live 234 | guilty gear 235 | the tale of food 236 | sengoku collection 237 | girls' frontline 238 | re:zero kara hajimeru isekai seikatsu 239 | ys 240 | overlord (maruyama) 241 | blazblue: continuum shift 242 | oshi no ko 243 | suzumiya haruhi no yuuutsu 244 | devilman 245 | another eidos-r 246 | sister princess 247 | reminiscence 248 | atelier ayesha 249 | namiuchigiwa no muromi-san 250 | disgaea 251 | taimanin (series) 252 | the legend of korra 253 | cookie run 254 | flcl 255 | kirakira precure a la mode 256 | tokimeki memorial girl's side 4th heart 257 | shining blade 258 | star ocean integrity and faithlessness 259 | lotte no omocha! 260 | blue lock 261 | girls und panzer senshadou daisakusen! 262 | gravity daze 2 263 | citrus (saburouta) 264 | incise soul 265 | tales of xillia 266 | gyee 267 | destiny (game) 268 | pikmin 4 269 | shin sakura taisen 270 | odd taxi 271 | ragnarok masters 272 | final fantasy xv 273 | puyopuyo~n 274 | super heroine boy 275 | final fantasy vii ever crisis 276 | hololive indonesia 277 | ensemble girls! 278 | tokimeki memorial 1 279 | fullmetal alchemist 280 | avengers (series) 281 | manatsu no yo no inmu 282 | black rock shooter 283 | queen's blade grimoire 284 | kekkai sensen 285 | teen titans 286 | dark souls ii 287 | idolmaster movie 288 | metroid 289 | squid game 290 | watashi ni tenshi ga maiorita! 291 | cryamore 292 | crawling dreams 293 | metal gear solid v: the phantom pain 294 | starless 295 | gundam narrative 296 | after (game) 297 | kidou senkan nadesico - prince of darkness 298 | dewprism 299 | star ocean till the end of time 300 | sengoku bushouki muramasa 301 | kamen rider ooo (series) 302 | bloodborne 303 | spider-man: across the spider-verse 304 | pokemon the movie: the power of us 305 | omega strikers 306 | rojiura satsuki: chapter heroine sanctuary 307 | mega man legends (series) 308 | shin megami tensei v 309 | comiket 103 310 | vanguard princess 311 | monsterverse 312 | star ocean first departure 313 | shinkai no valkyrie 314 | tengen toppa gurren lagann: parallel works 315 | voltron (series) 316 | houchi shoujo 317 | gintama 318 | street fighter ex (series) 319 | puyopuyo 7 320 | pacific racing team 321 | powerpuff girls z 322 | overwatch 323 | ganbare goemon 324 | tenkuu no craft fleet 325 | shadow hearts 326 | the legend of zelda: a link between worlds 327 | happy tree friends 328 | burger king 329 | bakuretsu tenshi 330 | houseki no kuni 331 | comiket 102 332 | ice cream kanojo 333 | genmu senki leda 334 | hidan no aria 335 | sen'yuu. 336 | kamen rider den-o (series) 337 | shantae and the pirate's curse 338 | fire emblem: new mystery of the emblem 339 | beyblade 340 | kizumonogatari 341 | mahou girls precure! 342 | shakugan no shana 343 | bayonetta 1 344 | getting over it 345 | la pucelle 346 | million arthur (series) 347 | nitroplus 348 | warioware 349 | shingeki no bahamut 350 | high school dxd pi 351 | from argonavis 352 | arc system works 353 | senran kagura new wave 354 | downtown no gaki no tsukai ya arahende!! 355 | mario kart 8 356 | eureka seven (series) 357 | harlock saga 358 | sakura trick 359 | stellula eques 360 | heybot! 361 | maken-ki! 362 | bible black 363 | demi-chan wa kataritai 364 | bravely default (series) 365 | monster hunter x 366 | mystic square 367 | black surge night 368 | wild arms 2 369 | kakyuusei 2 370 | liz to aoi tori 371 | comic rin 372 | moyashimon 373 | marvel vs. capcom 3 374 | kawaii dake ja nai shikimori-san 375 | ushio to tora 376 | made in abyss 377 | tenchuu 378 | ar tonelico 379 | mujin wakusei survive 380 | 7th dragon (series) 381 | arc the lad iii 382 | soccer spirits 383 | oboro muramasa 384 | ijiranaide nagatoro-san 385 | ben-tou 386 | oekaki musume 387 | kokoro iroduku koi ga shitai 388 | bakemonogatari 389 | tokyo mew mew 390 | street fighter iii (series) 391 | sansha san'you 392 | gorillaz 393 | pokemon masters ex 394 | skullgirls 395 | uq holder! 396 | avengers: infinity war 397 | pizza hut 398 | justice gakuen 399 | granblue fantasy versus 400 | pretty series 401 | hyrule warriors: age of calamity 402 | shoukan yuusha to f-kei kareshi 403 | kenkon no washi 404 | sengoku rance 405 | vsinger 406 | sweet devil (vocaloid) 407 | silent hill 2 408 | 2014 fifa world cup 409 | rumble roses 410 | xenoblade chronicles (series) 411 | bayonetta (series) 412 | high school dxd born 413 | the seven deadly sins 414 | mother 2 415 | kemomimi oukoku kokuei housou 416 | pokemon heroes: latios & latias 417 | go! princess precure 418 | assassin's creed ii 419 | animage 420 | sengoku musou 421 | yatagarasu (game) 422 | gotcha! 423 | hibike! euphonium 424 | gekkan shoujo nozaki-kun 425 | ninja slayer 426 | internet explorer 427 | ranma 1/2 428 | makai senki disgaea 4 429 | queen's blade rebellion 430 | doki doki literature club 431 | muse dash 432 | pokemon lgpe 433 | xenoblade chronicles 2 434 | beelzebub (manga) 435 | tenshi souzou re-boot! 436 | fortnite 437 | houkago teibou nisshi 438 | baka to test to shoukanjuu 439 | queen's blade unlimited 440 | jiggly girls 441 | kyoukai no kanata 442 | bishoujo mangekyou 443 | meshimase idol 444 | fate/grand order arcade 445 | shining wind 446 | brave witches 447 | null-meta 448 | crusaders quest 449 | fairy tail 450 | to heart (series) 451 | jojolion 452 | romeo to cinderella (vocaloid) 453 | pokemon sleep 454 | dodonpachi 455 | school girl strikers 456 | shigoto neko 457 | tennis no ouji-sama 458 | ookami (game) 459 | washio sumi wa yuusha de aru 460 | street fighter zero (series) 461 | gundam 462 | tekken 8 463 | azure striker gunvolt 2 464 | mega man x: command mission 465 | yuri kuma arashi 466 | dengeki moeou 467 | pokemon (anime) 468 | atelier meruru 469 | shining resonance 470 | brown dust 2 471 | sword art online the movie: ordinal scale 472 | dissidia final fantasy 473 | gundam zz 474 | pac-man (game) 475 | futaba channel 476 | touhou 477 | promare 478 | uta no prince-sama 479 | oounabara to wadanohara 480 | gundam 08th ms team 481 | darling in the franxx 482 | tsuyokiss 483 | pokemon sm 484 | cyborg 009 485 | ib 486 | star ocean the last hope 487 | one piece: strong world 488 | fallout 3 489 | noir (anime) 490 | soulcalibur iv 491 | akb48 492 | huion 493 | the road to el dorado 494 | silver rain 495 | boku no hero academia 496 | avatar 2.0 project 497 | command and conquer 498 | greaseberries 499 | tenka touitsu chronicle 500 | another 501 | busou shoujo machiavellism 502 | ruri dragon 503 | suki! yuki! maji magic (vocaloid) 504 | akebi-chan no serafuku 505 | gachimuchi 506 | panzer waltz 507 | pokemon: the electric tale of pikachu 508 | gundam thunderbolt 509 | 86 -eightysix- 510 | re leaf 511 | arcane: league of legends 512 | sekirei 513 | comic exe 514 | snk heroines: tag team frenzy 515 | shin megami tensei iv 516 | 30 minutes sisters 517 | captain america: the winter soldier 518 | rainbow six siege 519 | lupin iii 520 | key (company) 521 | terminator (series) 522 | inazuma eleven (series) 523 | sekaiju no meikyuu 4 524 | advent cirno 525 | mega man battle network (series) 526 | mahou shoujo madoka magica 527 | kid icarus uprising 528 | kagerou project 529 | beastars 530 | warhammer fantasy 531 | fate/prototype 532 | mario kart 533 | robot girls z 534 | ace attorney investigations 2 535 | shirobako 536 | mobile suit gundam 537 | pixiv fantasia t 538 | superman (series) 539 | tanaka the wizard 540 | hades (series) 541 | nanatsu no taizai 542 | five nights at freddy's 543 | honest axe 544 | watashi ga motenai no wa dou kangaetemo omaera ga warui! 545 | macross frontier: sayonara no tsubasa 546 | psycho-pass 547 | kokuhaku jikkou iinkai 548 | mother 3 549 | cafe stella to shinigami no chou 550 | shaft 551 | vanquished queens 552 | shukufuku no campanella 553 | fate/hollow ataraxia 554 | alien (1979) 555 | kono bijutsubu niwa mondai ga aru! 556 | amazon (company) 557 | aerisdies 558 | god eater 559 | project x zone 560 | tales of innocence 561 | peace@pieces 562 | kurano kun chi no futago jijou 563 | re:act 564 | arms (game) 565 | athena (series) 566 | pokemon gsc 567 | amnesia (idea factory) 568 | hollow knight 569 | pixiv fantasia new world 570 | gunxsword 571 | lord of vermilion 572 | devil may cry 3 573 | kaiji 574 | pokemon ranger 575 | roman (sound horizon) 576 | non non biyori 577 | little nuns (diva) 578 | fire emblem: mystery of the emblem 579 | harukana receive 580 | slow loop 581 | dragon quest iii 582 | yes! precure 5 583 | deltarune 584 | metal gear solid: peace walker 585 | dororon enma-kun 586 | barbie (live action) 587 | fire emblem warriors 588 | super robot wars judgement 589 | neo-porte 590 | galaxy angel rune 591 | final fantasy xii 592 | comiket 99 593 | studio ghibli 594 | gundam build fighters 595 | cevio 596 | maria-sama ga miteru 597 | devil may cry (series) 598 | gundam hathaway's flash 599 | gochuumon wa usagi desu ka? 600 | samurai spirits 601 | pokemon rse (anime) 602 | cosmic break 603 | metal gear solid 2: sons of liberty 604 | mad max 605 | dungeon and fighter 606 | sakura musubi 607 | senren banka 608 | rwby 609 | pokemon unite 610 | sora no method 611 | persona 2 tsumi 612 | majo to hyakkihei 613 | bastard!! 614 | the shining 615 | seikimatsu occult gakuin 616 | tower records 617 | selector wixoss 618 | kemono friends pavilion 619 | junketsu duelion 620 | nora cat channel 621 | sensha otoko 622 | toki wo kakeru shoujo 623 | phantasmagoria of dim.dream 624 | kamihime project 625 | pokemon conquest 626 | unconnected marketeers 627 | omc 628 | maerchen (album) 629 | koukaku no pandora 630 | doraemon 631 | niconico 632 | nippon professional baseball 633 | bravely second: end layer 634 | bomberman 635 | meiji (brand) 636 | mato seihei no slave 637 | kmnz 638 | mahou shoujo oriko magica 639 | chucolala 640 | sangoku infinity 641 | senjou no valkyria 1 642 | choukou sennin haruka 643 | omniscient reader's viewpoint 644 | suisei no gargantia 645 | toeto (vocaloid) 646 | gundam f91 647 | busou renkin 648 | kanokon 649 | flying witch 650 | sword art online: alicization - war of underworld 651 | luigi's mansion 652 | ultra series 653 | seiken densetsu 3 654 | godzilla (series) 655 | borderlands (series) 656 | xxxholic 657 | persona 3 portable 658 | ryuu ga gotoku 7 659 | street fighter 6 660 | the legend of zelda: spirit tracks 661 | d.gray-man 662 | kaze no klonoa 663 | pokemon platinum 664 | baby princess 665 | iriam 666 | fire emblem: shadow dragon and the blade of light 667 | choujigen game neptune mk2 668 | yoru no yatterman 669 | yu-gi-oh! go rush!! 670 | tales of xillia 2 671 | pia carrot (series) 672 | kamen rider hibiki (series) 673 | emil chronicle online 674 | paper mario: the thousand year door 675 | force of will 676 | mc axis 677 | comic aun 678 | rokka no yuusha 679 | pokemon dppt (anime) 680 | the legend of zelda: a link to the past 681 | ao no kanata no four rhythm 682 | nandemo iu koto wo kiite kureru akane-chan (voiceroid) 683 | comiket 97 684 | drag-on dragoon 3 685 | pop'n music 686 | otomedius 687 | hachigatsu no cinderella nine 688 | summon night 3 689 | smite 690 | digimon card game 691 | brand new animal 692 | no more heroes 693 | mighty morphin power rangers 694 | shokugeki no souma 695 | jigokuraku 696 | pita ten 697 | elf-san wa yaserarenai. 698 | shadowverse 699 | genshin impact 700 | mononoke 701 | renri no chigiri wo kimi to shiru 702 | atomic heart 703 | tales of hearts 704 | umamusume 705 | kannazuki no miko 706 | robotics;notes 707 | ojisan to marshmallow 708 | milihime taisen 709 | the king of fighters all-stars 710 | gekitotsu! joshikousei oiroke sensha gundan 711 | han'you no yashahime 712 | danganronpa another episode: ultra despair girls 713 | fate/prototype: fragments of blue and silver 714 | green lantern (series) 715 | wanmei shijie 716 | samsung 717 | manaria friends 718 | maria holic 719 | macross frontier: itsuwari no utahime 720 | one-punch man 721 | link! like! love live! 722 | lotus land story 723 | collar x malice 724 | sword art online: hollow fragment 725 | comic girls 726 | ninin ga shinobuden 727 | pixiv fantasia 728 | mega man (series) 729 | full metal jacket 730 | mega man 11 731 | lineage 2 732 | maoyuu maou yuusha 733 | the ring 734 | ai tenshi densetsu wedding peach 735 | cube x cursed x curious 736 | mahoraba 737 | shinryaku! ikamusume 738 | djmax portable 739 | yakitate!! japan 740 | morinaga (brand) 741 | gag manga biyori 742 | fukumoto mahjong 743 | arifureta shokugyou de sekai saikyou 744 | hinabita 745 | star ocean anamnesis 746 | lycoris recoil 747 | samurai champloo 748 | sankarea 749 | kamikaze kaitou jeanne 750 | fallout 4 751 | borderlands 2 752 | drifters 753 | dead by daylight 754 | saijaku muhai no bahamut 755 | comic party 756 | synthesizer v 757 | mamonomusume to no seikatsu ~ramia no baai~ 758 | juusan kihei bouei ken 759 | danganronpa (series) 760 | mahou shoujo (raita) 761 | sen no kiseki 762 | pokemon mystery dungeon 763 | sekaiju no meikyuu 5 764 | super robot wars og saga mugen no frontier exceed 765 | jigoku shoujo 766 | blazblue remix heart 767 | isekai ojisan 768 | breath of fire i 769 | super mario galaxy 770 | mother 1 771 | clover theater 772 | maison ikkoku 773 | highly responsive to prayers 774 | persona 5 scramble: the phantom strikers 775 | muv-luv alternative (anime) 776 | mitsudomoe 777 | mad max: fury road 778 | air gear 779 | fate/apocrypha 780 | yoake mae yori ruri iro na 781 | kono subarashii sekai ni bakuen wo! 782 | wrestle angels survivor 783 | dragon nest 784 | jibaku shounen hanako-kun 785 | kamitsubaki studio 786 | goodsmile company 787 | escape from tarkov 788 | ganbare douki-chan 789 | aikatsu! 790 | yu yu hakusho 791 | transformers: generation 1 792 | eternal arcadia 793 | kodoku no gourmet 794 | the moon studio 795 | kiratto pri chan 796 | monster (manga) 797 | tetsuwan birdy decode 798 | utawarerumono 799 | atelier (series) 800 | wild arms 1 801 | milgram 802 | endro! 803 | mishiranu joshikousei ni kankin sareta mangaka no hanashi 804 | capcom 805 | yu-gi-oh! 806 | aikatsu on parade! 807 | aoi hana 808 | absolute duo 809 | toaru majutsu no index: new testament 810 | punch-out!! 811 | 2022 fifa world cup 812 | senran kagura estival versus 813 | uchuu senkan yamato 2199 814 | dragon ball heroes 815 | gatchaman crowds 816 | new super mario bros. u deluxe 817 | touran-sai 818 | blazblue variable heart 819 | wrestle angels survivor 2 820 | bakuman 821 | hello kitty 822 | umi monogatari 823 | ga-rei zero 824 | mega man zx 825 | zone of the enders 2 826 | kamen rider build (series) 827 | bunny and fox world 828 | fire emblem: genealogy of the holy war 829 | strike the blood 830 | just be friends (vocaloid) 831 | ousama ranking 832 | haibane renmei 833 | final fantasy vi 834 | no game no life 835 | strike witches: katayoku no majo-tachi 836 | dragon ball super super hero 837 | aogiri koukou 838 | eternal return: black survival 839 | cinderella series 840 | chaos online 841 | idolmaster million live! theater days 842 | yuusha de aru 843 | rakudai kishi no cavalry 844 | reverse:1999 845 | mabinogi 846 | sisters ~natsu no saigo no hi~ 847 | honkai impact 3rd 848 | super mario bros. 1 849 | comic hotmilk 850 | critical role 851 | shirokami project 852 | kamen rider blade (series) 853 | gridman universe 854 | virtual on 855 | taimanin murasaki 856 | winged fusiliers 857 | genmukan 858 | bamboo blade 859 | utawarerumono: lost flag 860 | dragon quest x 861 | king (vocaloid) 862 | madan no ou to vanadis 863 | pokemon rgby (prototype) 864 | diablo 865 | last period 866 | animal crossing 867 | kingdom hearts i 868 | yuri!!! on ice 869 | comiket 90 870 | mon-musu quest! 871 | hataraku saibou 872 | who framed roger rabbit 873 | flowers (innocent grey) 874 | w tails cat 875 | sekaiju no meikyuu 2 876 | blood-c 877 | final fantasy v 878 | aku no meshitsukai (vocaloid) 879 | anyamal tantei kirumin zoo 880 | yu-gi-oh! sevens 881 | banjo-kazooie 882 | dragon quest v 883 | toy story 884 | monster hunter 3 885 | shoujo shuumatsu ryokou 886 | girlfriend (kari) 887 | f-ism 888 | kage no jitsuryokusha ni naritakute! 889 | perfect cherry blossom 890 | kaleido star 891 | comiket 91 892 | pastel chime 893 | yami to boushi to hon no tabibito 894 | power rangers 895 | ayakashi triangle 896 | lovely x cation 2 897 | kami nomi zo shiru sekai 898 | senki zesshou symphogear xd unlimited 899 | dead or alive 900 | lovely x cation 901 | ikazuchi no senshi raidy 902 | boku dake ga inai machi 903 | ore no nounai sentakushi ga gakuen love-comedy wo zenryoku de jama shiteiru 904 | shounen jump 905 | sword girls 906 | asobi ni iku yo! 907 | cyber v 908 | hori-san to miyamura-kun 909 | my life as a teenage robot 910 | dirty pair 911 | the king of fighters xv 912 | zom 100: zombie ni naru made ni shitai 100 no koto 913 | kill bill 914 | kamen rider w 915 | strike witches: aurora no majo 916 | escalation heroines 917 | atelier sophie 918 | chain chronicle 919 | pokemon legends: arceus 920 | sekaiju no meikyuu 1 921 | aikatsu stars! 922 | fortune arterial 923 | plants vs zombies 924 | alice: madness returns 925 | sen no kiseki iii 926 | dorei to no seikatsu ~teaching feeling~ 927 | metal slug attack 928 | pixiv fantasia last saga 929 | chihayafuru 930 | madou monogatari 931 | crayon shin-chan 932 | h2o footprints in the sand 933 | portal (series) 934 | joukamachi no dandelion 935 | slayers 936 | winnie the pooh 937 | touhou sangetsusei 938 | mahou tsukai no yoru 939 | kimi kiss 940 | illustration.media 941 | gate - jieitai ka no chi nite kaku tatakaeri 942 | vivy: fluorite eye's song 943 | watashi no tame ni nuginasai! 944 | sentou mecha xabungle 945 | renkin san-kyuu magical pokaan 946 | tensui no sakuna-hime 947 | ryuu ga gotoku 1 948 | wonder egg priority 949 | ange vierge 950 | eiyuu densetsu 951 | playerunknown's battlegrounds 952 | terraria 953 | nanashi inc. 954 | monster musume no iru nichijou 955 | resident evil 3 (remake) 956 | musunde hiraite rasetsu to mukuro (vocaloid) 957 | log horizon 958 | kouya no kotobuki hikoutai 959 | transformers prime 960 | grisaia (series) 961 | ghost in the shell stand alone complex 962 | xianjian qixia zhuan 963 | holostars english 964 | yu-gi-oh! duel monsters 965 | accel world 966 | dungeon travelers 2 967 | blazblue: central fiction 968 | rance 10 969 | harukanaru toki no naka de 970 | saga frontier 2 971 | shigatsu wa kimi no uso 972 | tactics ogre 973 | princess principal game of mission 974 | voms 975 | nekomonogatari 976 | 2010 fifa world cup 977 | yatterman 978 | musuko ga kawaikute shikatanai mazoku no hahaoya 979 | resident evil 3: nemesis 980 | full metal panic! 981 | noble works 982 | modao zushi 983 | etotama 984 | t.m.revolution 985 | dragon ball gt 986 | wild arms 4 987 | sola 988 | kanpani girls 989 | umamusume: cinderella gray 990 | love live! sunshine!! the school idol movie over the rainbow 991 | go-toubun no hanayome 992 | atelier escha & logy 993 | shenmue 994 | onii-chan dakedo ai sae areba kankeinai yo ne 995 | new game! 996 | momoiro taisen pairon 997 | nora to oujo to noraneko heart 998 | goddess of victory: nikke 999 | final fantasy ix 1000 | star wars: the force awakens 1001 | school rumble 1002 | phoenix wright: ace attorney - justice for all 1003 | sengoku musou 2 1004 | arc the lad ii 1005 | pixiv fantasia revenge of the darkness 1006 | cthulhu mythos 1007 | halo (series) 1008 | cross edge 1009 | luo xiaohei zhanji 1010 | saihate (vocaloid) 1011 | needy girl overdose 1012 | tokyo necro 1013 | wild arms 1014 | sonic the hedgehog (archie comics) 1015 | uchuu no stellvia 1016 | aquarion evol 1017 | star trek 1018 | star ocean the second story 1019 | puzzle & dragons 1020 | bioshock infinite 1021 | kuroshitsuji 1022 | comic penguin club 1023 | devil summoner 1024 | mana khemia (series) 1025 | rune factory 1026 | pokemon sv 1027 | dragon quest xi 1028 | kamippoina (vocaloid) 1029 | pia carrot e youkoso!! g.o. 1030 | bokusatsu tenshi dokuro-chan 1031 | hopeless masquerade 1032 | hypnosis mic 1033 | kamen rider kabuto (series) 1034 | taiho shichauzo 1035 | crisis core final fantasy vii 1036 | tokyo 7th sisters 1037 | olympics 1038 | kamen rider (1st series) 1039 | witches of africa 1040 | eve online 1041 | ai the somnium files 1042 | megido72 1043 | sleeping beauty 1044 | given 1045 | mazinger z 1046 | melt (vocaloid) 1047 | melty blood: type lumina 1048 | shuffle! 1049 | soredemo machi wa mawatteiru 1050 | pui pui molcar 1051 | kamen rider black (series) 1052 | production kawaii 1053 | resort boin 1054 | trinity seven 1055 | sekiro: shadows die twice 1056 | wild flower 1057 | hyakko 1058 | souzou forest (vocaloid) 1059 | rabi-ribi 1060 | tell your world (vocaloid) 1061 | benghuai xueyuan 1062 | backrooms (creepypasta) 1063 | monobeno 1064 | kono yuusha ga ore tueee kuse ni shinchou sugiru 1065 | love live! sunshine!! 1066 | to heart 1067 | hanasaku iroha 1068 | daitoshokan no hitsujikai 1069 | valkyrie drive -siren- 1070 | grisaia no kajitsu 1071 | slime taoshite 300 nen shiranai uchi ni level max ni nattemashita 1072 | taimadou gakuen 35 shiken shoutai 1073 | fate/unlimited blade works 1074 | family guy 1075 | project diva (series) 1076 | the hunchback of notre dame 1077 | wario land 1078 | a.i. voice 1079 | megami magazine 1080 | zoids genesis 1081 | nekopara 1082 | jurassic world 1083 | dark souls (series) 1084 | final fantasy ii 1085 | kemono friends 1086 | idolmaster starlit season 1087 | ssss.dynazenon 1088 | jet set radio 1089 | hatsune miku happy 16th birthday -dear creators- 1090 | closers 1091 | holostars 1092 | fantasista doll 1093 | city hunter 1094 | kaze no tani no nausicaa 1095 | qurare magic library 1096 | dlsite.com 1097 | taimanin rpgx 1098 | avatar legends 1099 | i-chu 1100 | wily beast and weakest creature 1101 | hunie (series) 1102 | omamori himari 1103 | fire emblem heroes 1104 | mon-musu quest: paradox 1105 | dr. mario (game) 1106 | my little pony: friendship is magic 1107 | violet evergarden (series) 1108 | atelier lulua 1109 | scarlet weather rhapsody 1110 | spider-man: into the spider-verse 1111 | street fighter ii (series) 1112 | cross ange 1113 | kuroinu ~kedakaki seijo wa hakudaku ni somaru~ 1114 | kyouran kazoku nikki 1115 | darkest dungeon 1116 | dive to zone 1117 | zoids 1118 | super robot wars the lord of elemental 1119 | gundam g no reconguista 1120 | ghost trick 1121 | suicide boy 1122 | xenoblade chronicles 3: future redeemed 1123 | splatoon (manga) 1124 | yuuki yuuna wa yuusha de aru 1125 | tear ring saga 1126 | i want you 1127 | precure all stars 1128 | pocketland 1129 | super mario 3d world 1130 | 100 percent orange juice 1131 | scooby-doo 1132 | danganronpa v3: killing harmony 1133 | hakuouki shinsengumi kitan 1134 | hoshikuzu witch meruru 1135 | aria (manga) 1136 | shinza bansho series 1137 | nyanko daisensou 1138 | seitokai no ichizon 1139 | seishun buta yarou 1140 | kirby and the forgotten land 1141 | makai tenshi djibril 1142 | tales of eternia 1143 | owarimonogatari 1144 | nisekoi 1145 | xenogears 1146 | zozotown 1147 | persona 4: dancing all night 1148 | the legend of zelda: ocarina of time 1149 | toaru majutsu no index: endymion no kiseki 1150 | company of heroes 1151 | girls und panzer ribbon no musha 1152 | ore twintail ni narimasu 1153 | wizarding world 1154 | neon genesis evangelion 1155 | project diva 2nd 1156 | fresh precure! 1157 | sky: children of the light 1158 | jikkyou powerful pro yakyuu 1159 | demonbane 1160 | black clover 1161 | mahoutsukai no yakusoku 1162 | square live 1163 | the adventures of sherlock holmes 1164 | touhou gouyoku ibun 1165 | kingdom hearts ii 1166 | yuni channel 1167 | kurogane no linebarrel 1168 | justice league 1169 | bishoujo senshi sailor moon crystal 1170 | nippon ichi 1171 | persona dancing 1172 | marvel 1173 | ensemble stars! 1174 | paper mario 64 1175 | apex legends 1176 | macintosh 1177 | nurarihyon no mago 1178 | kuro no kiseki 1179 | macross 1180 | nazo no kanojo x 1181 | kanon 1182 | titanic (movie) 1183 | summon night 5 1184 | tokimeki memorial 4 1185 | majutsushi orphen 1186 | eromanga sensei 1187 | tamako market 1188 | masters of the universe 1189 | azure striker gunvolt 1190 | mikakunin de shinkoukei 1191 | death stranding 1192 | phantasmagoria of flower view 1193 | gj-bu 1194 | majo no tabitabi 1195 | sonic adventure 1196 | touhou hisoutensoku 1197 | assassin's creed (series) 1198 | golden sun 1199 | kirby: star allies 1200 | strike witches 1201 | resident evil 0 1202 | high score girl 1203 | chrono crusade 1204 | owari no seraph 1205 | pixiv fantasia wizard and knight 1206 | dance in the vampire bund 1207 | xenoblade chronicles 1 1208 | the evil within 1209 | sony 1210 | evolution championship series 1211 | gundam seed astray 1212 | yozakura quartet 1213 | persona 2 1214 | love live! school idol project 1215 | dead space 1216 | idolmaster side-m 1217 | kamisama ni natta hi 1218 | dragon quest yuusha abel densetsu 1219 | ultraman (1st series) 1220 | shadow of the colossus 1221 | hitsugi no chaika 1222 | gunslinger stratos 1223 | osu! tatakae! ouendan 1224 | majestic prince 1225 | fate/kaleid liner prisma illya 1226 | fault!! 1227 | mahou shoujo lyrical nanoha reflection 1228 | puniru wa kawaii slime 1229 | dream c club 1230 | asobi asobase 1231 | occultic;nine 1232 | friday the 13th 1233 | formation girls 1234 | tasogare otome x amnesia 1235 | sunoharasou no kanrinin-san 1236 | pokemon emerald 1237 | kill la kill 1238 | kaibutsu oujo 1239 | guardian tales 1240 | zero no tsukaima 1241 | world of warships 1242 | kumo desu ga nani ka? 1243 | to love-ru 1244 | princess royale 1245 | toaru majutsu no index: old testament 1246 | final fantasy x-2 1247 | yagate kimi ni naru 1248 | the legend of zelda 1249 | gundam 00 a wakening of the trailblazer 1250 | summer pockets 1251 | blazblue phase 0 1252 | wcdonald's 1253 | akatsuki records 1254 | megami tensei 1255 | embodiment of scarlet devil 1256 | detective pikachu (movie) 1257 | kami-sama no memo-chou 1258 | atelier rorona 1259 | sword art online 1260 | kirby super star 1261 | atelier live 1262 | sora no otoshimono 1263 | the loud house 1264 | atelier ryza 2 1265 | drag-on dragoon 1 1266 | dragon quest dai no daibouken 1267 | uzaki-chan wa asobitai! 1268 | the lion king 1269 | criminal girls 1270 | idolmaster 1 1271 | pokemon hgss 1272 | pixiv fantasia mountain of heaven 1273 | castlevania: portrait of ruin 1274 | vocaloid 1275 | ikkitousen great guardians 1276 | gamers! 1277 | frame arms girl 1278 | ano ko wa toshi densetsu 1279 | haiiro teien 1280 | inazuma eleven go 1281 | blazblue: cross tag battle 1282 | food fantasy 1283 | pretty (series) 1284 | prism magical 1285 | shachiku succubus no hanashi 1286 | kemomimi refle! 1287 | casshern (series) 1288 | rune factory 4 1289 | jigoku sensei nube 1290 | nijiura maids 1291 | yama no susume 1292 | dokidoki sister aoi-chan 1293 | strike witches: suomus misfits squadron 1294 | hitoribocchi no marumaru seikatsu 1295 | high school dxd infinity 1296 | fire emblem: three houses 1297 | bunnystein fantasy 1298 | napoli no otokotachi 1299 | shuumatsu no harem 1300 | resident evil 4 (remake) 1301 | pokemon adventures 1302 | zenless zone zero 1303 | border break 1304 | professor layton 1305 | futsuu no joshikousei ga locodol yattemita 1306 | dancouga (series) 1307 | dragon ball super 1308 | dota 2 1309 | shinkyoku soukai polyphonica 1310 | girl cafe gun 1311 | blame! 1312 | seirei tsukai no blade dance 1313 | grimm's fairy tales 1314 | toradora! 1315 | wake up girls! stage no tenshi 1316 | aa megami-sama 1317 | stellive 1318 | five nights at freddy's: security breach 1319 | gensou suikoden 1320 | arms note 1321 | tenshi no inai 12-gatsu 1322 | shadows house 1323 | ukagaka 1324 | senran kagura peach beach splash 1325 | fl studio 1326 | koe no katachi 1327 | gundam 0083 1328 | the amazing world of gumball 1329 | reitaisai 1330 | mahou shoujo lyrical nanoha a's portable: the gears of destiny 1331 | qualidea code 1332 | imperishable night 1333 | heartcatch precure! 1334 | real drive 1335 | precure 1336 | xblaze 1337 | four goddesses online: cyber dimension neptune 1338 | star wars: the clone wars 1339 | kamen rider 1340 | splatoon 2: octo expansion 1341 | hyrule warriors 1342 | seikai no senki 1343 | sennen sensou aigis 1344 | ca (maeda koutarou) 1345 | axis powers hetalia 1346 | highschool of the dead 1347 | snow white and the seven dwarfs 1348 | tensei oujo to tensai reijou no mahou kakumei 1349 | hajimari no kiseki 1350 | comiket 93 1351 | acchi kocchi 1352 | summon night 1353 | vanillaware 1354 | kamichu! 1355 | space dandy 1356 | tom and jerry 1357 | dmm 1358 | idolmaster cinderella girls starlight stage 1359 | diamond wa kudakenai 1360 | hai to gensou no grimgar 1361 | saber marionette j 1362 | hentai key 1363 | cowboy bebop 1364 | ghost in the shell 1365 | ookiku furikabutte 1366 | disgaea rpg 1367 | himehina channel 1368 | sonic rush 1369 | muv-luv alternative 1370 | mekakucity actors 1371 | adachi to shimamura 1372 | nogi wakaba wa yuusha de aru 1373 | ongeki 1374 | haiyore! nyaruko-san 1375 | ben 10 1376 | kaizoku sentai gokaiger 1377 | la corda d'oro 1378 | prismplus 1379 | senyoku no sigrdrifa 1380 | shuumatsu nani shitemasu ka? 1381 | katekyo hitman reborn! 1382 | 2018 fifa world cup 1383 | kawaikereba hentai demo suki ni natte kuremasu ka? 1384 | hitomi sensei no hokenshitsu 1385 | choujin x 1386 | rokudenashi majutsu koushi to akashic record 1387 | gakkou gurashi! 1388 | senjou no valkyria 3 1389 | koumajou densetsu 1390 | pokemon: twilight wings 1391 | the king of fighters 1392 | sentouin hakenshimasu! 1393 | the king of fighters xiv 1394 | little red riding hood 1395 | dolls in pseudo paradise 1396 | pikmin (series) 1397 | planetarian 1398 | the amazing digital circus 1399 | love live! school idol festival all stars 1400 | masterwork apocalypse 1401 | sword art online: alicization 1402 | fate/samurai remnant 1403 | taishou yakyuu musume 1404 | casshern sins 1405 | tetris 1406 | yu-gi-oh! the dark side of dimensions 1407 | code geass: boukoku no akito 1408 | dimension w 1409 | one - kagayaku kisetsu e 1410 | tiger & bunny 1411 | shigofumi 1412 | high school dxd hero 1413 | ar tonelico i 1414 | guardians of the galaxy 1415 | initial d 1416 | fate/requiem 1417 | neptune (series) 1418 | aether gazer 1419 | tropical kiss 1420 | charlotte (anime) 1421 | dragon ball fighterz 1422 | gal gamer ni homeraretai 1423 | dungeon meshi 1424 | viprpg 1425 | love lab 1426 | gensou suikoden i 1427 | bayonetta 3 1428 | tekken 1429 | pokemon rse 1430 | taimanin asagi kessen arena 1431 | pokemon bw 1432 | soukou kihei votoms 1433 | senran kagura new link 1434 | dagashi kashi 1435 | destiny child 1436 | microsoft windows 1437 | senjou no valkyria 4 1438 | phantasy star portable 2 1439 | clockwork rabbit 1440 | pokemon 1441 | princess lover 1442 | the big o 1443 | undefined fantastic object 1444 | bakusou kyoudai let's & go!! 1445 | artery gear 1446 | fire emblem engage 1447 | gundam seed 1448 | angel chromosome xx 1449 | scott pilgrim takes off 1450 | pixiv fantasia age of starlight 1451 | the bible 1452 | toaru kagaku no railgun 1453 | mayoi neko overrun! 1454 | metal gear solid 3: snake eater 1455 | rinne no lagrange 1456 | fire emblem cipher 1457 | riot music 1458 | tianguan cifu 1459 | marl kingdom 1460 | tokyo mirage sessions fe 1461 | world masterpiece theater 1462 | urusei yatsura 1463 | chou shittou caduceus 1464 | matryoshka (vocaloid) 1465 | gensou suikoden ii 1466 | project moon 1467 | c2 kikan 1468 | the legend of zelda: tears of the kingdom 1469 | ring fit adventure 1470 | magician's aerial dream 1471 | idolmaster live for you! 1472 | code vein 1473 | girlish number 1474 | gugure! kokkuri-san 1475 | tears of themis 1476 | idolmaster side-m growing stars 1477 | nisoku hokou (vocaloid) 1478 | zaregoto series 1479 | tomb raider 1480 | valkyrie no densetsu 1481 | tales of legendia 1482 | atelier ryza 3 1483 | miracle nikki 1484 | nhk ni youkoso! 1485 | microsoft 1486 | mcdonald's 1487 | resident evil 4 1488 | koufuku graffiti 1489 | phantom blood 1490 | learning with manga! fgo 1491 | ai shite! homun 1492 | kud wafter 1493 | monster hunter: world 1494 | sanoba witch 1495 | queen (band) 1496 | calvin klein 1497 | un-go 1498 | shingeki no bahamut: genesis 1499 | honey come chatka!! 1500 | versailles no bara 1501 | onegai my melody 1502 | phantasy star portable 2 infinity 1503 | sousou no frieren 1504 | mahou senki lyrical nanoha force 1505 | vee (vtuber) 1506 | 7th dragon 2020 1507 | rance (series) 1508 | fate/stay night 1509 | hikaru no go 1510 | fairy fencer f 1511 | indie utaite 1512 | tekken tag tournament 2 1513 | dark souls i 1514 | fatal frame 3 1515 | g gundam 1516 | little busters! 1517 | danshi koukousei no nichijou 1518 | the iron of yin and yang 1519 | onegai teacher 1520 | devil survivor 1521 | neko musume michikusa nikki 1522 | ssss.gridman 1523 | curiosities of lotus asia 1524 | mona lisa 1525 | hapymaher 1526 | dankira!!! 1527 | sonic the hedgehog (classic) 1528 | black rock shooter (game) 1529 | sono bisque doll wa koi wo suru 1530 | culture japan 1531 | tenshinranman 1532 | isekai maou to shoukan shoujo no dorei majutsu 1533 | virtua fighter 1534 | tenki no ko 1535 | hiroshima touyou carp 1536 | kai-ri-sei million arthur 1537 | a hat in time 1538 | koishi komeiji's heart-throbbing adventure 1539 | artwhirl mahou gakuen no otome-tachi 1540 | magic: the gathering 1541 | kishuku gakkou no juliet 1542 | world cup 1543 | joshi kousei rich thots 1544 | sora wo kakeru shoujo 1545 | monster musume no oisha-san 1546 | dirge of cerberus final fantasy vii 1547 | cu-no 1548 | kagerou days (vocaloid) 1549 | cyphers 1550 | final fantasy 1551 | steampunk (liarsoft) 1552 | seiren 1553 | marvel vs. capcom 1554 | tsuki ni yorisou otome no sahou 1555 | osomatsu-kun 1556 | r-type 1557 | idolmaster poplinks 1558 | twisted wonderland 1559 | the legend of zelda: link's awakening 1560 | zhu xian 1561 | strawberry panic! 1562 | voiceroid 1563 | sonic adventure 2 1564 | danganronpa kirigiri 1565 | senjuushi: the thousand noble musketeers 1566 | cinderella girls gekijou 1567 | kamen rider geats (series) 1568 | cutie honey 1569 | kantai collection (anime) 1570 | dumbbell nan kilo moteru? 1571 | nagasarete airantou 1572 | sana channel 1573 | mahou tsukai to kuroneko no wiz 1574 | zombie land saga 1575 | satsuriku no tenshi 1576 | resident evil: revelations 1577 | alien (series) 1578 | sakura taisen 1579 | nagi no asukara 1580 | ueno-san wa bukiyou 1581 | pokemon dppt 1582 | league of legends 1583 | shantae: half-genie hero 1584 | toaru kagaku no railgun s 1585 | firefox 1586 | final fantasy viii 1587 | sd gundam 1588 | tsukimonogatari 1589 | akame ga kill! 1590 | jahy-sama wa kujikenai! 1591 | deemo 1592 | bakumatsu rouman 1593 | alia's carnival! 1594 | oshiro project:re 1595 | gridman universe (film) 1596 | the beatles 1597 | wild and horned hermit 1598 | digimon adventure 02 1599 | v ap art 1600 | dark souls iii 1601 | dc comics 1602 | quilt (game) 1603 | sangoku musou 1 1604 | d-frag! 1605 | tsuujou kougeki ga zentai kougeki de ni-kai kougeki no okaasan wa suki desu ka? 1606 | last origin 1607 | gundam 0080 1608 | super robot wars 1609 | quiz magic academy 1610 | puyopuyo quest 1611 | dennou shoujo youtuber siro 1612 | echocalypse 1613 | sora no kanata no dystopia x shitei 1614 | monster hunter portable 3rd 1615 | aquarium (visual novel) 1616 | kusuriya no hitorigoto 1617 | blue reflection 1618 | .hack//games 1619 | hirogaru sky! precure 1620 | hikikomari kyuuketsuki no monmon 1621 | black cat (series) 1622 | among us 1623 | parasite eve 1624 | queen's blade white triangle 1625 | da capo iii 1626 | slam dunk (series) 1627 | touhou lost word 1628 | bakuon!! 1629 | space adventure cobra 1630 | diablo 3 1631 | kunoichi tsubaki no mune no uchi 1632 | otome youkai zakuro 1633 | seiken densetsu 1634 | lollipop chainsaw 1635 | metal gear (series) 1636 | nier (series) 1637 | limbus company 1638 | sakura-sou no pet na kanojo 1639 | fire emblem warriors: three hopes 1640 | kamen rider kiva (series) 1641 | code geass 1642 | koihime musou 1643 | cardfight!! vanguard 1644 | game & watch 1645 | naruto 1646 | atelier lydie & suelle 1647 | anpanman 1648 | grimms notes 1649 | soulcalibur 1650 | shinkai shoujo (vocaloid) 1651 | makaimura 1652 | bural chingu 1653 | tate no yuusha no nariagari 1654 | jinrui wa suitai shimashita 1655 | kiddy grade 1656 | mega man star force 1657 | dracu-riot! 1658 | oda nobuna no yabou 1659 | fatal frame 2 1660 | kemono friends v project 1661 | hataraku maou-sama! 1662 | ever 17 1663 | triage x 1664 | yuusha ou gaogaigar 1665 | one piece 1666 | nichijou 1667 | kamen rider wizard (series) 1668 | blue oath 1669 | urasekai picnic 1670 | gundam wing 1671 | kochikame 1672 | suzumiya haruhi-chan no yuuutsu 1673 | persona 1 1674 | otome function 1675 | metroid dread 1676 | the end of evangelion 1677 | mabinogi heroes 1678 | super real mahjong 1679 | coca-cola 1680 | super cub 1681 | mega man zx advent 1682 | miru tights 1683 | mahou shoujo madoka magica: hangyaku no monogatari 1684 | the transformers (idw) 1685 | super sentai 1686 | pepsi 1687 | zeta gundam 1688 | otogi-juushi akazukin 1689 | mahou shoujo madoka magica movie 1 & 2 1690 | sora no iro mizu no iro 1691 | final fight 1692 | kfc 1693 | photokano 1694 | alice gear aegis 1695 | douluo dalu 1696 | doom eternal 1697 | kirby's return to dream land 1698 | super smash bros. 1699 | tales of destiny 2 1700 | ghostbusters 1701 | grandia i 1702 | haks 1703 | voltron: legendary defender 1704 | lost universe 1705 | power pro kun pocket 1706 | ultra kaijuu gijinka keikaku 1707 | mega man zero (series) 1708 | titanfall 2 1709 | dragon ball z 1710 | world witches series 1711 | shinkansen henkei robo shinkalion 1712 | mass effect (series) 1713 | pokemon tcg 1714 | fantasy earth 1715 | kamen rider fourze (series) 1716 | one piece film: red 1717 | domestic na kanojo 1718 | castlevania: rondo of blood 1719 | meitantei conan 1720 | wrestle angels 1721 | senran kagura shoujo-tachi no shin'ei 1722 | zone of the enders 1723 | bang dream! it's mygo!!!!! 1724 | suntory 1725 | bashamichi 1726 | mirai akari's new virtual youtuber illustration contest 1727 | bombergirl 1728 | doupo cangqiong 1729 | tokidoki bosotto roshia-go de dereru tonari no arya-san 1730 | persona 4 1731 | utawarerumono: itsuwari no kamen 1732 | tokyo ghoul:re 1733 | pacific rim 1734 | jingai makyou 1735 | fallout new vegas 1736 | chrono cross 1737 | girls' frontline neural cloud 1738 | record of lodoss war 1739 | mairimashita! iruma-kun 1740 | cattleya regina games 1741 | tsukihime (remake) 1742 | idolmaster million live! 1743 | advance wars 1744 | indie virtual youtuber 1745 | toushinden 1746 | wake up girls! 1747 | spy x family 1748 | godzilla: king of the monsters 1749 | hoshi ori yume mirai 1750 | splatoon 1 1751 | dragon: marked for death 1752 | bikkuriman 1753 | watashi no oshi wa akuyaku reijou 1754 | girls und panzer saishuushou 1755 | hiyoku no crosspiece 1756 | kimi no koto ga dai dai dai dai daisuki na 100-nin no kanojo 1757 | paper mario 1758 | a deer of nine colors 1759 | creepypasta 1760 | fii-tan the figure 1761 | puyopuyo 1762 | hololive alternative 1763 | yosuga no sora 1764 | cloud nine inc 1765 | kerberos blade 1766 | pixiv 1767 | dissidia final fantasy opera omnia 1768 | princess tutu 1769 | future card buddyfight 1770 | deathsmiles 1771 | memories off 1772 | pokemon usum 1773 | bishoujo senshi sailor moon 1774 | dragon quest viii 1775 | houkago no pleiades 1776 | the legend of zelda (nes) 1777 | 11eyes 1778 | yu-gi-oh! vrains 1779 | action pizazz 1780 | utau 1781 | himouto! umaru-chan 1782 | blood+ 1783 | gundam arsenal base 1784 | little witch nobeta 1785 | minecraft 1786 | koumajou densetsu 1 1787 | red: pride of eden 1788 | final fantasy brave exvius 1789 | fallout (series) 1790 | sonic (series) 1791 | mushoku tensei 1792 | eternity sword series 1793 | r.o.d the tv 1794 | the witcher (series) 1795 | half-life (series) 1796 | oretachi ni tsubasa wa nai 1797 | lilith-soft 1798 | silent hill (series) 1799 | .hack// 1800 | comiket 95 1801 | blend s 1802 | kizuato 1803 | tsumi no hahen (debris) 1804 | star fox 1805 | elysion 1806 | junk gaming maiden 1807 | inazuma eleven go galaxy 1808 | modern mogal 1809 | gravity falls 1810 | pornhub 1811 | fate/extra ccc fox tail 1812 | hyouka 1813 | tenkuu no escaflowne 1814 | granblue fantasy 1815 | mass effect 1816 | houshin engi 1817 | the king of fighters '97 1818 | mahjong soul 1819 | beautiful gunbari 1820 | comic x-eros 1821 | kamen rider ex-aid (series) 1822 | vshojo 1823 | kyuuketsuki sugu shinu 1824 | dragon quest iv 1825 | kamen rider agito (series) 1826 | genjitsu no yohane 1827 | netsu ijou (utau) 1828 | neko to chiyo 1829 | metal gear solid 1830 | after war gundam x 1831 | kingdom (series) 1832 | fire emblem 1833 | honzuki no gekokujou 1834 | kiseijuu 1835 | under night in-birth 1836 | castlevania (series) 1837 | breaking bad 1838 | cafe-chan to break time 1839 | kuromukuro 1840 | yoru mac 1841 | gaki kyonyuu 1842 | c.c. lemon 1843 | torikissa! 1844 | puyopuyo fever 1845 | avengers: endgame 1846 | final fantasy type-0 1847 | deadman wonderland 1848 | top gun 1849 | world of warcraft 1850 | rhapsody 1851 | seikon no qwaser 1852 | noragami 1853 | kingdom hearts iii 1854 | coppelion 1855 | onmyoji 1856 | ambience synesthesia 1857 | ys viii lacrimosa of dana 1858 | narutaru 1859 | adventure time 1860 | joshi kousei 1861 | hinata channel 1862 | mofumofu channel 1863 | oneechanbara 1864 | muv-luv unlimited: the day after 1865 | magna carta 1866 | pokemon rgby 1867 | amagami 1868 | project diva f 1869 | macross delta: zettai live!!!!!! 1870 | kemono friends 3 1871 | kidou keisatsu patlabor 1872 | wild arms xf 1873 | imouto sae ireba ii 1874 | va-11 hall-a 1875 | ga-rei 1876 | magical mirai (vocaloid) 1877 | mahouka koukou no rettousei 1878 | agarest senki (series) 1879 | pixiv fantasia 3 1880 | tree of savior 1881 | undead unluck 1882 | from software 1883 | macross: do you remember love? 1884 | show by rock!! 1885 | mountain dew 1886 | sen no kiseki iv 1887 | idolmaster shiny colors 1888 | kizuna ai inc. 1889 | saya no uta 1890 | thunderbolt fantasy 1891 | school days 1892 | yuru yuri 1893 | the super mario bros. movie 1894 | white album 1895 | pure pure 1896 | the little mermaid 1897 | granado espada 1898 | doki doki majo shinpan 1899 | keijo!!!!!!!! 1900 | romancing saga 3 1901 | forever 7th capital 1902 | love live! 1903 | galaxy angel 1904 | thomas the tank engine 1905 | final fantasy iii 1906 | mahou shoujo taisen 1907 | digimon adventure 1908 | bleach 1909 | phantasy star online 2 1910 | sei zenra jogakuen 1911 | aikatsu friends! 1912 | kamikaze explorer! 1913 | kamen rider 555 1914 | eiken 1915 | heaven's feel 1916 | da capo i 1917 | leon the professional 1918 | koimonogatari 1919 | breath of fire ii 1920 | nijisanji 1921 | warui ga watashi wa yuri janai 1922 | garfield 1923 | formula one 1924 | egyptian mythology 1925 | saenai heroine no sodatekata 1926 | kanojo mo kanojo 1927 | xenoblade chronicles 2: torna - the golden country 1928 | stone ocean 1929 | dr pepper 1930 | shining star 1931 | 7th dragon iii 1932 | seitokai yakuindomo 1933 | rozen maiden 1934 | .hack//g.u. 1935 | arcana heart 1936 | delicious party precure 1937 | resident evil 2 1938 | kikou souseiki mospeada 1939 | national basketball association 1940 | sk8 the infinity 1941 | hidden star in four seasons 1942 | queen's blade 1943 | phantom kingdom 1944 | sunrise (company) 1945 | night sparrow love 1946 | kamen rider kuuga (series) 1947 | yume nikki 1948 | zutto mayonaka de ii no ni 1949 | pixiv fantasia 4 1950 | digimon story: cyber sleuth 1951 | mugen senshi valis 1952 | crave saga 1953 | zoids chaotic century 1954 | live a live 1955 | pokemon bdsp 1956 | brave girl ravens 1957 | koi to senkyo to chocolate 1958 | star twinkle precure 1959 | mm! 1960 | tamayura 1961 | summertime render 1962 | gakuen utopia manabi straight! 1963 | onegai twins 1964 | akane-iro ni somaru saka 1965 | eizouken ni wa te wo dasu na! 1966 | alien (movie) 1967 | 7th dragon 1968 | final fantasy x 1969 | bokujou monogatari 1970 | ichiban ushiro no daimaou 1971 | bloodstained: ritual of the night 1972 | aoki hagane no arpeggio 1973 | flip flappers 1974 | gundam sentinel 1975 | popotan 1976 | goodbye sengen (vocaloid) 1977 | macross delta 1978 | beatmania iidx 1979 | pandora hearts 1980 | punishing: gray raven 1981 | digimon world re:digitize 1982 | vento aureo 1983 | kyokou suiri 1984 | comiket 96 1985 | asagao to kase-san 1986 | senjou no electro girl 1987 | katawa shoujo 1988 | robotech 1989 | divine gate 1990 | alchemy stars 1991 | makai senki disgaea 5 1992 | super mario rpg 1993 | twitter 1994 | seisenshi dunbine 1995 | ghost sweeper mikami 1996 | newtype 1997 | shaman king 1998 | romancing saga 1999 | masamune-kun no revenge 2000 | doukyuusei another world 2001 | bemani 2002 | sarazanmai 2003 | gundam build divers re:rise 2004 | 4chan 2005 | shakunetsu no takkyuu musume 2006 | char's counterattack 2007 | youjo senki 2008 | tsurezure children 2009 | uta macross sumaho deculture 2010 | youkai hyakki-tan! 2011 | koi wa sensou (vocaloid) 2012 | xenoblade chronicles 3 2013 | scott pilgrim (series) 2014 | nagato yuki-chan no shoushitsu 2015 | karakai jouzu no takagi-san 2016 | en'en no shouboutai 2017 | funamusea 2018 | black jack (series) 2019 | hoshizora e kakaru hashi 2020 | danganronpa: trigger happy havoc 2021 | dohna dohna issho ni warui koto o shiyou 2022 | twin angel 2023 | gakusen toshi asterisk 2024 | a-soul 2025 | agent aika 2026 | persona 5: dancing star night 2027 | heroman 2028 | princess connect! 2029 | pia carrot e youkoso!! 3 2030 | high school fleet 2031 | fullbokko heroes 2032 | muchigaku 2033 | sewayaki kitsune no senko-san 2034 | fate/tiger colosseum 2035 | japanese mythology 2036 | journey to the west 2037 | monster hunter (series) 2038 | touhou bougetsushou 2039 | doukyuusei 2040 | kamen rider saber (series) 2041 | tekken 6 2042 | puchimasu! 2043 | inuyasha 2044 | hamidashi creative 2045 | sakura taisen iii 2046 | heavy object 2047 | world of tanks 2048 | idol time pripara 2049 | the king of fighters 2001 2050 | monster musume no iru nichijou online 2051 | mahou shoujo lyrical nanoha the movie 1st 2052 | ga geijutsuka art design class 2053 | akudama drive 2054 | hanamaru youchien 2055 | kibou no chikara ~otona precure '23~ 2056 | ragnarok online 2057 | armored core 2058 | ano hi mita hana no namae wo bokutachi wa mada shiranai. 2059 | ao no exorcist 2060 | senjuushi (series) 2061 | giant robo 2062 | saga frontier 2063 | devilman crybaby 2064 | sonic and the black knight 2065 | 9-nine- 2066 | arknights: endfield 2067 | mahou shoujo madoka magica plus 2068 | blazblue: chronophantasma 2069 | mushishi 2070 | transformers 2071 | project diva extend 2072 | tombow mono 2073 | dramatical murder 2074 | xblaze code: embryo 2075 | battle angel alita 2076 | re:zero kara hajimeru isekai seikatsu: lost in memories 2077 | gabriel dropout 2078 | gundam seed destiny 2079 | cafe sourire 2080 | senran kagura shinovi versus 2081 | harry potter (series) 2082 | shantae (series) 2083 | tamagotchi 2084 | lord el-melloi ii case files 2085 | mega man x (series) 2086 | naruto shippuuden 2087 | xenosaga episode iii 2088 | imaizumin-chi wa douyara gal no tamariba ni natteru rashii 2089 | resident evil 5 2090 | persona 5 the royal 2091 | transformers (live action) 2092 | megami paradise 2093 | kemurikusa 2094 | you can eat the girl 2095 | wonder festival 2007 2096 | kure-nai 2097 | poptepipic 2098 | sakura taisen v 2099 | gake no ue no ponyo 2100 | wreck-it ralph 2101 | gokukoku no brynhildr 2102 | digimon tamers 2103 | phoenix wright: ace attorney 2104 | kuso miso technique 2105 | fire emblem: the sacred stones 2106 | chain paradox 2107 | vandread 2108 | comiket 100 2109 | monster farm 2110 | yuragisou no yuuna-san 2111 | el cazador de la bruja 2112 | maitetsu 2113 | happiness! 2114 | unleashed 2115 | senbonzakura (vocaloid) 2116 | engage kiss 2117 | indivisible 2118 | yokohama kaidashi kikou 2119 | re:stage! 2120 | danball senki 2121 | tengoku daimakyou 2122 | koiiro soramoyou 2123 | dororo (tezuka) 2124 | breath of fire 2125 | senran kagura 2126 | idoly pride 2127 | apollo justice: ace attorney 2128 | choujigen game neptune 2129 | soredemo ayumu wa yosetekuru 2130 | pixiv fantasia sword regalia 2131 | shinma x keishou! ragnabreak 2132 | battlefield (series) 2133 | galgrease 2134 | eiyuu senki ww 2135 | pokemon gsc (prototype) 2136 | digimon 2137 | mushiking 2138 | kujibiki unbalance 2139 | papa no iu koto wo kikinasai! 2140 | k-on! movie 2141 | nirvana (band) 2142 | yu-gi-oh! arc-v 2143 | pokemon journeys 2144 | love live! nijigasaki high school idol club 2145 | ansatsu kyoushitsu 2146 | barakamon 2147 | soul hackers 2148 | karigurashi no arrietty 2149 | benesse 2150 | oneshot (game) 2151 | tenka hyakken 2152 | maplestory 2153 | dolphin wave 2154 | wonderland wars 2155 | fire emblem echoes: shadows of valentia 2156 | uni create 2157 | splatoon (series) 2158 | phoenix wright: ace attorney - spirit of justice 2159 | tamiya incorporated 2160 | priapus 2161 | soulcalibur vi 2162 | kemono friends kingdom 2163 | amphibia 2164 | melonbooks 2165 | merc storia 2166 | last exile: gin'yoku no fam 2167 | kyoufuu all back (vocaloid) 2168 | kobe shinbun 2169 | plastic memories 2170 | project sekai 2171 | fushigiboshi no futago hime 2172 | kamen rider ghost (series) 2173 | angel beats! 2174 | shukusei!! loli-gami requiem 2175 | otome game no hametsu flag shika nai akuyaku reijou ni tensei shite shimatta 2176 | needless 2177 | tongkkangi 2178 | the legend of zelda: skyward sword 2179 | sword art online alternative: gun gale online 2180 | gouma reifuden izuna 2181 | shiguang dailiren 2182 | doom (series) 2183 | honey strap 2184 | twitter-san 2185 | furyou michi ~gang road~ 2186 | strange creators of outer world 2187 | flower knight girl 2188 | shin sangoku musou 2189 | signalis 2190 | tejina senpai (series) 2191 | seiken gakuin no maken tsukai 2192 | peter pan (disney) 2193 | goodsmile racing 2194 | yakusoku no neverland 2195 | project upd8 2196 | yotsunoha 2197 | koutetsujou no kabaneri 2198 | len'en 2199 | tower of fantasy 2200 | victory gundam 2201 | wwe 2202 | do it yourself!! 2203 | top wo nerae 2! 2204 | dragon quest ii 2205 | fate/strange fake 2206 | majo no takkyuubin 2207 | grandia 2208 | haite kudasai takamine-san 2209 | ender lilies quietus of the knights 2210 | otome gee sekai wa mob ni kibishii sekai desu 2211 | c (control) 2212 | gensou suikoden v 2213 | otoyomegatari 2214 | star driver 2215 | fushigi no umi no nadia 2216 | tokyo revengers 2217 | final fantasy tactics 2218 | shiki (novel) 2219 | servant x service 2220 | captain earth 2221 | himawari-san 2222 | ark survival evolved 2223 | kin-iro mosaic 2224 | osomatsu-san 2225 | tekkaman blade 2226 | read or die 2227 | shining tears 2228 | digimon adventure tri. 2229 | google 2230 | phantom of the kill 2231 | tantei wa mou shindeiru 2232 | undertale 2233 | inazuma eleven 2234 | legacy of lunatic kingdom 2235 | sega 2236 | lyrical nanoha 2237 | decadence (anime) 2238 | happinesscharge precure! 2239 | teenage mutant ninja turtles 2240 | avatar: the last airbender 2241 | druaga no tou 2242 | boku no kokoro no yabai yatsu 2243 | street fighter v 2244 | gundam tekketsu no orphans 2245 | akira (manga) 2246 | shuumatsu no valkyrie 2247 | the matrix 2248 | apple inc. 2249 | kantai collection 2250 | hokkaido nippon-ham fighters 2251 | momotarou densetsu 2252 | boku no risou no isekai seikatsu 2253 | wild arms 3 2254 | himegoto 2255 | kid icarus 2256 | sousai shoujo teien 2257 | densetsu kyojin ideon 2258 | saki achiga-hen 2259 | battle girl high school 2260 | idolmaster one for all 2261 | suiheisen made nan mile? 2262 | bocchi the rock! 2263 | g-taste 2264 | cuphead (game) 2265 | breath of fire v 2266 | magi the labyrinth of magic 2267 | mahou shoujo lyrical nanoha a's portable: the battle of aces 2268 | top wo nerae! 2269 | soul eater 2270 | boruto: naruto the movie 2271 | gendai ninjakko zukan 2272 | infinite stratos 2273 | the murder of sonic the hedgehog 2274 | resident evil village 2275 | tales of asteria 2276 | pixiv fantasia 2 2277 | snk 2278 | mechanical buddy universe 2279 | ma no mono-tachi 2280 | ar tonelico iii 2281 | devil may cry 4 2282 | silverlight 2283 | rolling girl (vocaloid) 2284 | koikishi purely kiss 2285 | yurucamp 2286 | quiz magic academy the world evolve 2287 | ninja gaiden 2288 | fire emblem awakening 2289 | seiken no blacksmith 2290 | schwarzesmarken 2291 | higurashi no naku koro ni mei 2292 | pokemon cafe mix 2293 | tenkuu no crystalia 2294 | macross 7 2295 | gagraphic 2296 | yahari ore no seishun lovecome wa machigatteiru. 2297 | ore wo suki nano wa omae dake ka yo 2298 | full moon wo sagashite 2299 | mister donut 2300 | atelier ryza 2301 | touka gettan 2302 | senkou no ronde 2303 | reddit 2304 | watchmen 2305 | legends of runeterra 2306 | k-on! 2307 | tokyo afterschool summoners 2308 | nintendo 2309 | tales of (series) 2310 | advance of zeta 2311 | yukijirushi 2312 | ao no roku-gou 2313 | surge concerto 2314 | tari tari 2315 | fatal fury 2316 | eiyuu senki 2317 | tales of rebirth 2318 | kimi ga aruji de shitsuji ga ore de 2319 | cyberpunk edgerunners 2320 | mahou shoujo lyrical nanoha innocent 2321 | spongebob squarepants 2322 | sora no kiseki 2323 | shining hearts 2324 | duck hunt 2325 | crossbone gundam 2326 | final fantasy iv: the after years 2327 | jujutsu kaisen 2328 | true tears 2329 | ryuuko no ken 2330 | ombok diving and delivery services 2331 | wonder festival 2332 | bayonetta 2 2333 | moetan 2334 | kemono friends 2 2335 | futakoi 2336 | beauty and the beast 2337 | swapnote 2338 | dissidia 012 final fantasy 2339 | frozen (disney) 2340 | nijisanji id 2341 | saga 2342 | naruto (series) 2343 | forbidden scrollery 2344 | lineage 2345 | cygames 2346 | one piece treasure cruise 2347 | mario tennis 2348 | the great ace attorney 2: resolve 2349 | oshiro project re 2350 | tenjou tenge 2351 | space invaders 2352 | metroid: zero mission 2353 | saru getchu 2354 | phantasy star 2355 | binbougami ga! 2356 | kaitou saint tail 2357 | guilty dragon 2358 | ochikazuki ni naritai miyazen-san 2359 | it (stephen king) 2360 | dragon quest vi 2361 | subterranean animism 2362 | saiki kusuo no psi nan 2363 | variable geo 2364 | resident evil 2365 | twitch.tv 2366 | aquarion (series) 2367 | futari wa precure 2368 | little witch academia 2369 | id :invaded 2370 | portal 1 2371 | pumpkin scissors 2372 | otome wa boku ni koishiteru 2373 | megami magazine deluxe 2374 | doukutsu monogatari 2375 | nier:automata 2376 | prism project 2377 | lanxi zhen 2378 | tantei opera milky holmes 2379 | toji no miko 2380 | overman king gainer 2381 | dr. stone 2382 | saint seiya 2383 | magic kaito 2384 | rebuild of evangelion 2385 | bandai namco 2386 | story of eastern wonderland 2387 | taimanin yukikaze 2388 | beyblade: burst 2389 | djmax respect 2390 | tonari no kyuuketsuki-san 2391 | jormungand (manga) 2392 | hololive dev is 2393 | ash arms 2394 | comiket 92 2395 | game of thrones 2396 | comiket 101 2397 | space channel 5 2398 | dragon ball minus 2399 | paryi project 2400 | pokemon (game) 2401 | netoge no yome wa onna no ko janai to omotta? 2402 | voicevox 2403 | suite precure 2404 | trigger heart exelica 2405 | ane naru mono 2406 | saikin yatotta maid ga ayashii 2407 | kakegurui 2408 | aquarian age 2409 | garou: mark of the wolves 2410 | arcana heart 3 2411 | digimon savers 2412 | mahou shoujo ikusei keikaku restart 2413 | shinkon gattai godannar!! 2414 | dream c club (series) 2415 | senpai ga uzai kouhai no hanashi 2416 | haevest 2417 | taimanin asagi 2418 | strider (video game) 2419 | comic bavel 2420 | sono hanabira ni kuchizuke wo 2421 | dango daikazoku 2422 | fate/extra ccc 2423 | mahou shoujo lyrical nanoha the movie 2nd a's 2424 | omoide no marnie 2425 | rail wars! 2426 | comiket 94 2427 | ashita no nadja 2428 | fantasy earth zero 2429 | south park 2430 | real life 2431 | takt op. 2432 | spectral (series) 2433 | kumamiko 2434 | flyable heart 2435 | dandadan 2436 | evillious nendaiki 2437 | di gi charat 2438 | alicesoft 2439 | tangled 2440 | american mcgee's alice 2441 | fire emblem: the blazing blade 2442 | sekai seifuku: bouryaku no zvezda 2443 | tetsuwan atom 2444 | comic megastore 2445 | cookie (touhou) 2446 | inou-battle wa nichijou-kei no naka de 2447 | call of cthulhu 2448 | pixiv fantasia 5 2449 | twice (group) 2450 | virtuareal 2451 | outlaw star 2452 | tatakau ataisuru 2453 | .hack//tasogare no udewa densetsu 2454 | kirara fantasia 2455 | scarz 2456 | trickster 2457 | wakfu 2458 | guilty gear x 2459 | kaede to suzu 2460 | koukaku no regios 2461 | ikoku meiro no croisee 2462 | grand sphere 2463 | little tail bronx 2464 | valkyrie connect 2465 | noble witches 2466 | final fantasy tactics advance 2467 | ochikobore fruit tart 2468 | final fantasy fables 2469 | hentai elf to majime orc 2470 | amairo islenauts 2471 | ryuu ga gotoku (series) 2472 | elden ring 2473 | no-rin 2474 | subarashiki hibi 2475 | hataraku saibou black 2476 | grimlight 2477 | terra battle 2478 | sen to chihiro no kamikakushi 2479 | mashiroiro symphony 2480 | left 4 dead 2481 | star vs the forces of evil 2482 | artery gear: fusion 2483 | japan racing association 2484 | shugo chara! 2485 | little match girl 2486 | teekyuu 2487 | trojan green asteroid 2488 | arai-san mansion 2489 | action taimanin 2490 | pokemon swsh 2491 | last exile 2492 | kono naka ni hitori imouto ga iru! 2493 | devil survivor 2 2494 | line (naver) 2495 | digimon xros wars 2496 | hentai ouji to warawanai neko. 2497 | yu-gi-oh! zexal 2498 | tokyo exe girls 2499 | super blackjack 2500 | azur lane: slow ahead 2501 | wangzhe rongyao 2502 | end of evangelion 2503 | gunslinger girl 2504 | kimi ni todoke 2505 | steins;gate 2506 | mob psycho 100 2507 | the elder scrolls v: skyrim 2508 | dislyte 2509 | gundam build fighters try 2510 | touhou ningyougeki 2511 | xenoblade chronicles x 2512 | agarest senki 2513 | lunar 2514 | seisen cerberus 2515 | steelblue mirage 2516 | type-moon 2517 | commando (movie) 2518 | vspo! 2519 | tenshi no 3p! 2520 | basquash! 2521 | 7th dragon 2020-ii 2522 | kotobukiya bishoujo 2523 | dragon ball 2524 | beat angel escalayer 2525 | shining musume 2526 | resident evil 2 (remake) 2527 | gundam wing endless waltz 2528 | trusty bell 2529 | pokemon oras 2530 | umamusume: road to the top 2531 | dragon quest vii 2532 | sekaiju no meikyuu 3 2533 | naruto: the last 2534 | hokuto no ken 2535 | romancing saga minstrel song 2536 | kuro no kiseki ii 2537 | world flipper 2538 | battle tendency 2539 | pangya 2540 | monster strike 2541 | helltaker 2542 | evertale 2543 | jewelpet (series) 2544 | mario kart wii 2545 | ten desires 2546 | atelier shallie 2547 | mega man x dive 2548 | ore no imouto ga konna ni kawaii wake ga nai 2549 | mahou shoujo lyrical nanoha 2550 | dengeki g's 2551 | lord of the mysteries 2552 | sakigake!! cromartie koukou 2553 | paradox live 2554 | evangelion: 3.0+1.0 thrice upon a time 2555 | tenco's story 2556 | chobits 2557 | the last of us 2558 | devil may cry 5 2559 | trigun 2560 | mewkledreamy 2561 | arcaea 2562 | phase connect 2563 | inu x boku ss 2564 | okujou no yurirei-san 2565 | youtube 2566 | yuzu-soft 2567 | gundam build divers 2568 | romancing saga 2 2569 | ryuuou no oshigoto! 2570 | haruru minamo ni! 2571 | kamen rider gaim (series) 2572 | futari wa precure max heart 2573 | tropical liquor 2574 | kirby's dream land 3 2575 | battle athletes 2576 | kidou senkan nadesico 2577 | houkago play 2578 | aoi ch. 2579 | ace attorney investigations 2580 | z/x 2581 | elfheim 2582 | gundam card builder 2583 | lord of vermilion iii 2584 | super mario world 2585 | mario kart tour 2586 | prison school 2587 | kyoto animation 2588 | fate/extra 2589 | danganronpa/zero 2590 | witchblade 2591 | tamatoys 2592 | disney 2593 | detective pikachu 2594 | evangelion: 3.0 you can (not) redo 2595 | codename: kids next door 2596 | ilog 2597 | tokyo ghoul 2598 | to heart 2 2599 | wactor production 2600 | the silmarillion 2601 | golden kamuy 2602 | ark order 2603 | unlight 2604 | musaigen no phantom world 2605 | tom clancy's the division 2606 | guilty gear strive 2607 | ace combat 7 2608 | summon night 2 2609 | yuusha no kuse ni namaiki da 2610 | hololive english 2611 | ordo mediare sisters (ironlily) 2612 | library of ruina 2613 | kanagawa okinami ura 2614 | animare 2615 | chrono trigger 2616 | coefont 2617 | strawberry prince 2618 | healin' good precure 2619 | battle spirits 2620 | attouteki yuugi mugen souls 2621 | riddle joker 2622 | ushinawareta mirai wo motomete 2623 | fire emblem: the binding blade 2624 | azumanga daioh 2625 | monster girl encyclopedia 2626 | beatmania 2627 | kimi no na wa. 2628 | denpa onna to seishun otoko 2629 | dead or alive 6 2630 | akatsuki no yona 2631 | fatal frame 4 2632 | yokohama dena baystars 2633 | yondemasu yo azazel-san. 2634 | x-men 2635 | shingeki no kyojin 2636 | getsuyoubi no tawawa 2637 | terminator 2: judgment day 2638 | pokemon mystery dungeon: explorers of time/darkness/sky 2639 | vivid strike! 2640 | waktaverse 2641 | metroid prime 2642 | yuusha ou gaogaigar final 2643 | super mario sunshine 2644 | makai shin trillion 2645 | rosario+vampire 2646 | shin koihime musou 2647 | dragon quest builders 2 2648 | star wars: revenge of the sith 2649 | dota (series) 2650 | saturday night fever 2651 | queen's gate 2652 | strike witches 1940 2653 | denonbu 2654 | idolmaster (classic) 2655 | yofukashi no uta 2656 | toaru kagaku no railgun t 2657 | tekken 7 2658 | juuni kokuki 2659 | luminous arc 2660 | donkey kong (series) 2661 | kingdom hearts 358/2 days 2662 | under night in-birth exe:late[st] 2663 | dennou coil 2664 | touhou tag dream 2665 | wednesday (netflix) 2666 | uchuu patrol luluco 2667 | back to the future 2668 | karakai jouzu no (moto) takagi-san 2669 | shingoku no valhalla gate 2670 | rune factory 5 2671 | stratos 4 2672 | amaryllis gumi 2673 | melty blood 2674 | sanrio 2675 | tales of zestiria 2676 | joshiraku 2677 | ame to kimi to 2678 | fate/grand order 2679 | zegapain 2680 | ghostblade 2681 | franken fran 2682 | noripro 2683 | yotsubato! 2684 | guilty gear xrd 2685 | namco 2686 | final fantasy xiii 2687 | uchi no maid ga uzasugiru! 2688 | lucky star 2689 | grandia ii 2690 | friday night funkin' 2691 | ole tower 2692 | identity v 2693 | fire emblem gaiden 2694 | jashin-chan dropkick 2695 | hololive china 2696 | viper 2697 | zettai karen children 2698 | k-project 2699 | sengoku taisen 2700 | zenkoku seifuku bishoujo grand prix 2701 | mofu-mofu after school 2702 | tsubasa chronicle 2703 | battle spirits: shounen toppa bashin 2704 | 100th black market 2705 | dorohedoro 2706 | persona 4: the ultimate in mayonaka arena 2707 | overwatch 2 2708 | bandai 2709 | shinmai fukei kiruko-san 2710 | pokemon frlg 2711 | call of duty: modern warfare 2 2712 | sora yori mo tooi basho 2713 | spider-man (series) 2714 | kemeko deluxe 2715 | new horizon 2716 | rewrite 2717 | chainsaw man 2718 | ano natsu de matteru 2719 | mario & luigi rpg 2720 | carnival phantasm 2721 | makai senki disgaea 3 2722 | v yuusha no kuse ni namaiki da r 2723 | youkoso jitsuryoku shijou shugi no kyoushitsu e 2724 | girls' frontline 2: exilium 2725 | kim possible (series) 2726 | clannad 2727 | fate/empire of dirt 2728 | boku no kanojo sensei 2729 | soulcalibur v 2730 | blade runner 2731 | mist train girls 2732 | kimetsu no yaiba 2733 | sword art online: memory defrag 2734 | inazuma eleven go chrono stone 2735 | tales of graces 2736 | monster hunter frontier 2737 | homestuck 2738 | kyousougiga 2739 | corrector yui 2740 | masou gakuen hxh 2741 | nier reincarnation 2742 | metal gear rising: revengeance 2743 | monogatari (series) 2744 | pringles 2745 | tsugumomo 2746 | tiktok 2747 | blue archive 2748 | keroro gunsou 2749 | ghostly field club 2750 | river city girls 2751 | kill me baby 2752 | galaga 2753 | kamen rider revice 2754 | kamen rider 01 (series) 2755 | howl no ugoku shiro 2756 | kakumeiki valvrave 2757 | metroid fusion 2758 | dies irae 2759 | castlevania: order of ecclesia 2760 | tenkuu no shiro laputa 2761 | mega man (classic) 2762 | sugar lyric 2763 | idolmaster dearly stars 2764 | akatsuki no goei 2765 | ikkitousen dragon destiny 2766 | portrait of exotic girls 2767 | mountain of faith 2768 | god eater 2: rage burst 2769 | monster hunter 4 2770 | foul detective satori 2771 | super robot wars x-omega 2772 | sword art online: code register 2773 | liver city 2774 | cyberpunk (series) 2775 | master detective archives: rain code 2776 | sound voltex 2777 | guilty crown 2778 | tokyo ravens 2779 | bobobo-bo bo-bobo 2780 | saint seiya omega 2781 | da capo 2782 | kirby 64 2783 | expo2025 2784 | kyokugen dasshutsu 2785 | black survival 2786 | sidonia no kishi 2787 | tokyo xanadu 2788 | kamen rider drive (series) 2789 | odds & ends (vocaloid) 2790 | nisemonogatari 2791 | haikyuu!! 2792 | love r 2793 | high school dxd new 2794 | mega man x4 2795 | itai no wa iya nano de bougyoryoku ni kyokufuri shitai to omoimasu 2796 | orangina 2797 | haou taikei ryuu knight 2798 | shiro seijo to kuro bokushi 2799 | rurouni kenshin 2800 | the legend of zelda: majora's mask 2801 | steel ball run 2802 | baldur's gate 2803 | oshiro project 2804 | nanatsuiro drops 2805 | hamtaro (series) 2806 | osana reimu 2807 | mahoromatic 2808 | mystical power plant 2809 | high school dxd cross 2810 | kangoku senkan 2811 | sasami-san@ganbaranai 2812 | alternative girls 2813 | sdorica 2814 | mario (series) 2815 | mahou shoujo lyrical nanoha vivid 2816 | orenchi no meidosan 2817 | arslan senki 2818 | shin megami tensei 2819 | machikado mazoku 2820 | sora no woto 2821 | star wars: visions 2822 | metal slug 2823 | huniepop 2824 | black souls 2825 | sounan desuka? 2826 | she-ra and the princesses of power 2827 | nijisanji kr 2828 | shy (series) 2829 | canaan (series) 2830 | oomuro-ke 2831 | tsugu (vtuber) 2832 | bakuretsu hunters 2833 | garo (series) 2834 | street fighter iv (series) 2835 | suna no wakusei (vocaloid) 2836 | wacom 2837 | sword art online progressive 2838 | afk arena 2839 | world's end dancehall (vocaloid) 2840 | kamen rider zi-o (series) 2841 | soulworker 2842 | serial experiments lain 2843 | subarashiki kono sekai 2844 | hooters 2845 | fire emblem: shadow dragon 2846 | idolmaster xenoglossia 2847 | counter:side 2848 | hunter x hunter 2849 | breath of fire iii 2850 | gundam suisei no majo 2851 | trigger (company) 2852 | baldur's gate 3 2853 | silent hill 3 2854 | idol corp 2855 | powerpuff girls 2856 | digimon frontier 2857 | princess peach: showtime! 2858 | wagaya no oinari-sama 2859 | brave sword x blaze soul 2860 | kimagure orange road 2861 | yume 2kki 2862 | gekijouban hibike! euphonium 2863 | otonari no tenshi-sama ni itsu no mani ka dame ningen ni sarete ita ken 2864 | snow white 2865 | zootopia 2866 | kagura gumi 2867 | higanbana no saku yoru ni 2868 | aquaplus 2869 | shin megami tensei iii: nocturne 2870 | muv-luv 2871 | sonic frontiers 2872 | boruto: naruto next generations 2873 | hentai kamen 2874 | my little pony 2875 | isekai tensei shite v ni narimashita 2876 | corpse party 2877 | burn the witch 2878 | comic tenma 2879 | magia record: mahou shoujo madoka magica gaiden 2880 | yuyushiki 2881 | detroit: become human 2882 | inari konkon koi iroha. 2883 | kamen rider ryuki (series) 2884 | yakin byoutou 2885 | spy kyoushitsu 2886 | pixiv fate/grand order contest 2 2887 | .live 2888 | outbreak company 2889 | freezing (series) 2890 | eureka seven 2891 | helluva boss 2892 | f-zero 2893 | shironeko project 2894 | seitokai nimo anawa aru! 2895 | kaitou tenshi twin angel 2896 | phantasy star universe 2897 | kashimashi 2898 | project voltage 2899 | boroboro no elf-san o shiawaseni suru kusuri uri-san 2900 | dragon ball (classic) 2901 | precure all stars new stage: mirai no tomodachi 2902 | kyoukaisenjou no horizon 2903 | atelier firis 2904 | amagi brilliant park 2905 | ace combat zero 2906 | the lord of the rings 2907 | overwatch 1 2908 | kino no tabi 2909 | facebook 2910 | etra-chan wa mita! 2911 | kono subarashii sekai ni shukufuku wo! 2912 | getter robo 2913 | kao no nai tsuki 2914 | talkex 2915 | aggressive retsuko 2916 | kamen rider black rx (series) 2917 | kami jigen game neptune v 2918 | j. league 2919 | higurashi no naku koro ni 2920 | duel masters 2921 | macross plus 2922 | gunsmith cats 2923 | pokemon bw2 2924 | coyote ragtime show 2925 | soukyuu no fafner 2926 | aldnoah.zero 2927 | seihou 2928 | phoenix wright: ace attorney - dual destinies 2929 | mary skelter 2930 | summon night 4 2931 | pokemon xy 2932 | dead or alive xtreme 2933 | tolkien's legendarium 2934 | iris black games 2935 | portal 2 2936 | upotte!! 2937 | fate/extella link 2938 | hilda (series) 2939 | to love-ru darkness 2940 | fire emblem fates 2941 | disgaea d2 2942 | kagetsu tooya 2943 | tsukihime 2944 | katanagatari 2945 | age of ishtaria 2946 | mermaid melody pichi pichi pitch 2947 | super mario odyssey 2948 | magnet (vocaloid) 2949 | the great ace attorney 2950 | nagai gojitsudan no nechronica 2951 | eversoul 2952 | demento 2953 | yomawari (series) 2954 | munou na nana 2955 | precure connection puzzlun 2956 | foster's home for imaginary friends 2957 | tensei shitara slime datta ken 2958 | resident evil 1 2959 | invincible (series) 2960 | m.u.g.e.n 2961 | double spoiler 2962 | dosanko gyaru wa namaramenkoi 2963 | rinrinne 2964 | tales of the abyss 2965 | dragon ball super broly 2966 | roshin yuukai (vocaloid) 2967 | the legend of zelda: twilight princess 2968 | hoozuki no reitetsu 2969 | pixiv fantasia fallen kings 2970 | dragonaut 2971 | stardust crusaders 2972 | latale 2973 | kore ga watashi no goshujin-sama 2974 | hugtto! precure 2975 | fire emblem: radiant dawn 2976 | manga time kirara 2977 | mahou shoujo ai 2978 | demon's souls 2979 | kanojo okarishimasu 2980 | looney tunes 2981 | star wars 2982 | reflect (gawr gura) 2983 | ar tonelico ii 2984 | super robot wars 30 2985 | sakura quest 2986 | bijin onna joushi takizawa-san 2987 | the legend of zelda: the wind waker 2988 | doom (2016) 2989 | mahou shoujo madoka magica (anime) 2990 | spice and wolf 2991 | strike witches 1991 2992 | moomin 2993 | tokimeki memorial girl's side 3rd story 2994 | aika (series) 2995 | omori 2996 | alice in wonderland 2997 | warzard 2998 | fruits basket 2999 | hakanai kimi wa moukou wo hajimeru 3000 | final fantasy vii 3001 | tower of god 3002 | ace combat 3003 | pacific (kancolle) 3004 | ojamajo doremi 3005 | your diary 3006 | white album 2 3007 | phantom brave 3008 | sky girls 3009 | my-otome 3010 | mazinger (series) 3011 | vyugen 3012 | arknights 3013 | danganronpa 3 (anime) 3014 | chousoku henkei gyrozetter 3015 | kannagi 3016 | legend of the cryptids 3017 | king's raid 3018 | urara meirochou 3019 | grand theft auto 3020 | kimi ga nozomu eien 3021 | tenchi muyou! 3022 | tales of symphonia 3023 | atelier ryza 1 3024 | dragalia lost 3025 | arcana heart 2 3026 | gad guard 3027 | phoenix wright: ace attorney - trials and tribulations 3028 | gosick 3029 | donkey kong country 3030 | daiteikoku 3031 | octopath traveler 3032 | dragon's crown 3033 | pokemon bw (anime) 3034 | steven universe 3035 | idolish7 3036 | re:creators 3037 | ladies versus butlers! 3038 | ookami-san 3039 | chibi maruko-chan 3040 | da capo ii 3041 | ginga tetsudou 999 3042 | evangelion: 2.0 you can (not) advance 3043 | falkyrie no monshou 3044 | mighty no. 9 3045 | girl's avenue 3046 | love live! superstar!! 3047 | mahoujin guruguru 3048 | fall guys 3049 | aladdin (disney) 3050 | miku symphony (vocaloid) 3051 | kunio-kun series 3052 | suguri 3053 | the king of fighters xiii 3054 | toranoana 3055 | fearless night 3056 | jurassic park 3057 | ace of diamond 3058 | final fantasy xiii-2 3059 | busou shinki 3060 | koisuru asteroid 3061 | comiket 88 3062 | pokemon go 3063 | gegege no kitarou 3064 | kaguya-sama wa kokurasetai ~tensai-tachi no renai zunousen~ 3065 | oshioki sweetie 3066 | dungeons and dragons 3067 | starcraft 3068 | kore wa zombie desu ka? 3069 | summer wars 3070 | everlasting summer 3071 | rune factory 3 3072 | my adventures with superman 3073 | tengen toppa gurren lagann 3074 | papico (ice cream) 3075 | warhammer 40k 3076 | kirby: planet robobot 3077 | abenobashi mahou shoutengai 3078 | the coffin of andy and leyley 3079 | iris mysteria! 3080 | hades 1 3081 | suzumiya haruhi no shoushitsu 3082 | drag-on dragoon 3083 | sonic the hedgehog (idw) 3084 | senjou no valkyria (series) 3085 | kampfer 3086 | odin sphere 3087 | cyberpunk 2077 3088 | vrchat 3089 | soukou akki muramasa 3090 | tetsuwan birdy 3091 | crash bandicoot (series) 3092 | atelier totori 3093 | hacka doll 3094 | blazblue 3095 | fate/zero 3096 | vinland saga 3097 | resident evil 6 3098 | kokoro connect 3099 | the owl house 3100 | hoshizora no memoria 3101 | os-tan 3102 | elsword 3103 | dr. slump 3104 | gothic wa mahou otome 3105 | lupinus virtual games 3106 | big hero 6 3107 | danganronpa s: ultimate summer camp 3108 | wuthering waves 3109 | otoca d'or 3110 | hanayamata 3111 | the elder scrolls 3112 | my little pony: equestria girls 3113 | shoujo kageki revue starlight 3114 | dungeon ni deai wo motomeru no wa machigatteiru darou ka 3115 | valkyrie drive 3116 | valorant 3117 | yumekui merry 3118 | svc chaos 3119 | witch craft works 3120 | armored core: for answer 3121 | vividred operation 3122 | pokemon colosseum 3123 | felarya 3124 | touhou danmaku kagura 3125 | ore no kanojo to osananajimi ga shuraba sugiru 3126 | darker than black 3127 | aikatsu! (series) 3128 | boukun habanero 3129 | zannen onna-kanbu black general-san 3130 | onsen musume 3131 | kamisama no you na kimi e 3132 | koha-ace 3133 | tales of symphonia knight of ratatosk 3134 | sentimental graffiti 3135 | meridian project 3136 | mahou shoujo ikusei keikaku unmarked 3137 | shuumatsu no izetta 3138 | honkai: star rail 3139 | smile precure! 3140 | suika game 3141 | hua jianghu zhi bei mo ting 3142 | final fantasy vii advent children 3143 | shijou saikyou no deshi ken'ichi 3144 | miniskirt pirates 3145 | chaos;child 3146 | amano megumi wa suki darake! 3147 | macross frontier 3148 | perfume (band) 3149 | urban legend in limbo 3150 | knight's & magic 3151 | kobeya 3152 | ao no kiseki 3153 | gravity daze 3154 | jojo no kimyou na bouken 3155 | qinshi mingyue 3156 | titanfall (series) 3157 | fire emblem: path of radiance 3158 | working!! 3159 | the lego group 3160 | starbucks 3161 | love live! school idol festival 3162 | sword art online: alicization rising steel 3163 | square enix 3164 | ichigo mashimaro 3165 | air (visual novel) 3166 | lol -lots of laugh- (vocaloid) 3167 | fatal frame 3168 | izayoi no hanayome 3169 | original 3170 | the simpsons 3171 | the terminator 3172 | daibouken! yukeyuke osawari island 3173 | konjiki no gash!! 3174 | mospeada 3175 | luminous witches 3176 | d4dj 3177 | the grim adventures of billy & mandy 3178 | final fantasy iv 3179 | snow fox 3180 | onii-chan wa oshimai! 3181 | heaven burns red 3182 | monsters inc. 3183 | tonari no totoro 3184 | epic seven 3185 | gantz 3186 | fate/unlimited codes 3187 | uchuu senkan yamato 3188 | mortal kombat (series) 3189 | rakudai ninja rantarou 3190 | final fantasy xvi 3191 | catherine (game) 3192 | durarara!! 3193 | star wars: return of the jedi 3194 | shadowverse (anime) 3195 | seto no hanayome 3196 | sazae-san 3197 | boku to koi suru ponkotsu akuma. 3198 | eyeshield 21 3199 | bioshock (series) 3200 | rakuen tsuihou 3201 | kuso zako choroin nishiga hachi 3202 | sengoku saga 3203 | dragon quest 3204 | akemiho tabi nikki 3205 | choujikuu yousai macross 3206 | night wizard 3207 | gensou suikoden iii 3208 | aoi shiro 3209 | love plus 3210 | pokemon horizons 3211 | lonely girl ni sakaraenai 3212 | tropical-rouge! precure 3213 | kuroko no basuke 3214 | sangokushi taisen 3215 | final fantasy xiv 3216 | my-hime 3217 | dragon quest i 3218 | mahou shoujo ikusei keikaku 3219 | super mario 64 3220 | strike witches: kurenai no majo-tachi 3221 | mega man 1 3222 | majo no ie 3223 | shoujo to ura roji 3224 | enjo kouhai 3225 | juuni taisen 3226 | mondaiji-tachi ga isekai kara kuru sou desu yo? 3227 | to heart 2 xrated 3228 | neon genesis evangelion gakuen datenroku 3229 | berry's 3230 | tomo-chan wa onna no ko 3231 | guilty gear xx 3232 | gouketsuji ichizoku 3233 | comic unreal 3234 | street fighter 3235 | machine-doll wa kizutsukanai 3236 | the incredibles 3237 | yu-gi-oh! 5d's 3238 | ouran high school host club 3239 | tales of vesperia 3240 | atelier marie 3241 | eoduun badaui deungbul-i doeeo 3242 | no.6 3243 | animal (vocaloid) 3244 | virtual ant channel 3245 | hisho collection 3246 | arakawa under the bridge 3247 | antinomy of common flowers 3248 | 428 3249 | paripi koumei 3250 | predator (movie) 3251 | nurse witch komugi-chan 3252 | super metroid 3253 | gundam msv 3254 | magical halloween 3255 | pixiv fantasia scepter of zeraldia 3256 | pokemon sm (anime) 3257 | mega man 9 3258 | chuunibyou demo koi ga shitai! 3259 | galhound 3260 | akuma no riddle 3261 | akagi: yami ni oritatta tensai 3262 | juusenki l-gaim 3263 | namco x capcom 3264 | sumaga 3265 | gensou suikoden iv 3266 | juukishi cutie bullet 3267 | red bull 3268 | hayate no gotoku! 3269 | date a live 3270 | ico 3271 | time bokan (series) 3272 | arc the lad 3273 | kobayashi-san chi no maidragon 3274 | yandere simulator 3275 | pretty rhythm aurora dream 3276 | waccha primagi! 3277 | akiba maid sensou 3278 | hololive 3279 | miraculous ladybug 3280 | super mario bros. wonder 3281 | hundred 3282 | idolmaster side-m live on stage! 3283 | char's counterattack - beltorchika's children 3284 | prism ark 3285 | psychic hearts 3286 | hidamari sketch 3287 | shiritsu justice gakuen 3288 | re:lief ~shin'ai naru anata e~ 3289 | irotoridori no sekai 3290 | wendy's 3291 | umineko no naku koro ni 3292 | monster hunter rise 3293 | persona 5 3294 | project diva 3295 | melty+ 3296 | gundam unicorn 3297 | gyakushuu no fantasica 3298 | 2channel 3299 | greek mythology 3300 | gynoid talk 3301 | idolmaster 3302 | joker (2019) 3303 | nogizaka haruka no himitsu 3304 | peanuts 3305 | shin jigen game neptune vii 3306 | double dealing character 3307 | aku no musume (vocaloid) 3308 | wii fit 3309 | mahou no tenshi creamy mami 3310 | death note 3311 | touhou (pc-98) 3312 | mahou shoujo lyrical nanoha strikers 3313 | phantasy star online 3314 | doukyuusei 2 3315 | live a hero 3316 | final fantasy i 3317 | jewelpet twinkle 3318 | world trigger 3319 | hazbin hotel 3320 | dream hunter rem 3321 | makai senki disgaea 2 3322 | instagram 3323 | bang dream! 3324 | persona 3 3325 | kirby (series) 3326 | girls und panzer 3327 | kotobukiya 3328 | wikipedia 3329 | shining (series) 3330 | mononoke hime 3331 | mihoyo 3332 | chaos;head 3333 | king of prism by prettyrhythm 3334 | sen no kiseki ii 3335 | boku wa tomodachi ga sukunai 3336 | tokimeki memorial 3337 | walkure romanze 3338 | shin godzilla 3339 | armored core 6 3340 | impossible spell card 3341 | lovers (game) 3342 | senki zesshou symphogear 3343 | wild arms 5 3344 | oshiete! galko-chan 3345 | shinmai maou no testament 3346 | vampire (vocaloid) 3347 | mieruko-chan 3348 | path to nowhere 3349 | growlanser 3350 | ace attorney 3351 | magic knight rayearth 3352 | uchi no hime-sama ga ichiban kawaii 3353 | kingdom hearts birth by sleep 3354 | galge.com 3355 | bilibili 3356 | comic lo 3357 | majin tantei nougami neuro 3358 | world is mine (vocaloid) 3359 | gundam 00 3360 | yuusha series 3361 | comic kairakuten 3362 | sound horizon 3363 | kagaminomachi no kaguya 3364 | acfun 3365 | aohada bocchi 3366 | tera online 3367 | shiroi suna no aquatope 3368 | barbie (franchise) 3369 | spider-verse 3370 | persona 4 the golden 3371 | isshuukan friends 3372 | the great ace attorney: adventures 3373 | wonder woman (series) 3374 | youkai watch 2 3375 | irisu shoukougun! 3376 | idolmaster cinderella girls 3377 | ice climber 3378 | god eater burst 3379 | el shaddai 3380 | natsume yuujinchou 3381 | valkyrie profile (series) 3382 | steins;gate 0 3383 | cyberbots 3384 | super robot wars original generation 3385 | dogs: bullets & carnage 3386 | yuusha to maou 3387 | choudenji robo combattler v 3388 | high school dxd 3389 | kanojo x kanojo x kanojo 3390 | kurenai no buta 3391 | sinoalice 3392 | mother (game) 3393 | pripara 3394 | pani poni dash! 3395 | paladins 3396 | makai senki disgaea 3397 | fireball (series) 3398 | warship girls r 3399 | sid story 3400 | honkai (series) 3401 | shin getter robo 3402 | octopath traveler i 3403 | jinki 3404 | komi-san wa komyushou desu 3405 | claymore (series) 3406 | capcom fighting jam 3407 | assault lily 3408 | a channel 3409 | slow start 3410 | yowamushi pedal 3411 | hatsune miku no shoushitsu (vocaloid) 3412 | final fantasy vii remake 3413 | comic kairakuten beast 3414 | final fantasy crystal chronicles 3415 | takopii no genzai 3416 | piapro 3417 | shoujo kageki revue starlight -re live- 3418 | breath of fire iv 3419 | bungou stray dogs 3420 | hanebado! 3421 | caligula (series) 3422 | danganronpa 2: goodbye despair 3423 | saki 3424 | ikkitousen 3425 | dokidoki! precure 3426 | mawaru penguindrum 3427 | twinbox school 3428 | tales of berseria 3429 | metal gear solid 4: guns of the patriots 3430 | tongari boushi no atelier 3431 | star ocean 3432 | langrisser 3433 | mahou tsukai no yome 3434 | mirai nikki 3435 | free! 3436 | minami-ke 3437 | persona 3438 | fate (series) 3439 | gundam age -------------------------------------------------------------------------------- /tags/quality.txt: -------------------------------------------------------------------------------- 1 | masterpiece 2 | best quality 3 | amazing quality 4 | high quality 5 | great quality 6 | good quality 7 | medium quality 8 | normal quality 9 | bad quality 10 | low quality 11 | worst quality 12 | newest 13 | late 14 | mid 15 | early 16 | oldest 17 | exceptional 18 | best aesthetic 19 | very aesthetic 20 | aesthetic 21 | normal aesthetic 22 | displeasing 23 | bad aesthetic 24 | very displeasing 25 | deleted 26 | waifu 27 | real life 28 | anime -------------------------------------------------------------------------------- /tests/test_utils.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | sys.path.append(".") 4 | 5 | import re 6 | 7 | from dart.utils import ( 8 | get_valid_tag_list, 9 | get_patterns_from_tag_list, 10 | _get_tag_pattern, 11 | escape_webui_special_symbols, 12 | unescape_webui_special_symbols, 13 | ) 14 | 15 | 16 | def test_valid_tag_list(): 17 | text = "simple background, ,, animal ears, umbrella," 18 | expected = ["simple background", "animal ears", "umbrella"] 19 | 20 | assert get_valid_tag_list(text) == expected 21 | 22 | 23 | def test_get_tag_pattern(): 24 | test_cases: list[tuple[str, re.Pattern, str]] = [ 25 | ("1girl", re.compile(r"1girl"), "1girl"), 26 | ( 27 | "character (copyright)", 28 | re.compile(r"character \(copyright\)"), 29 | "character (copyright)", 30 | ), 31 | ("* ears", re.compile(r".* ears"), "cat ears"), 32 | ("looking *", re.compile(r"looking .*"), "looking to the side"), 33 | ("* (cosplay)", re.compile(r".* \(cosplay\)"), "hatsune miku (cosplay)"), 34 | ] 35 | 36 | for input, expected, matches in test_cases: 37 | assert expected.match(matches) 38 | assert _get_tag_pattern(input).match(matches) 39 | 40 | 41 | def test_get_patterns_from_tag_list(): 42 | test_cases: list[tuple[str, list[re.Pattern], list[str]]] = [ 43 | ( 44 | "1boy, umbrella,very long hair", 45 | [ 46 | re.compile( 47 | r"1boy", 48 | ), 49 | re.compile( 50 | r"umbrella", 51 | ), 52 | re.compile( 53 | r"very long hair", 54 | ), 55 | ], 56 | ["1boy", "umbrella", "very long hair"], 57 | ), 58 | ( 59 | "* ears,holding *, animal *", 60 | [ 61 | re.compile( 62 | r".* ears", 63 | ), 64 | re.compile( 65 | r"holding .*", 66 | ), 67 | re.compile( 68 | r"animal .*", 69 | ), 70 | ], 71 | ["cat ears", "holding weapon", "animal ears"], 72 | ), 73 | ( 74 | "copyright (character), star (sky)", 75 | [ 76 | re.compile( 77 | r"copyright \(character\)", 78 | ), 79 | re.compile( 80 | r"star \(sky\)", 81 | ), 82 | ], 83 | ["copyright (character)", "star (sky)"], 84 | ), 85 | ] 86 | 87 | for input, expected, matches in test_cases: 88 | for pattern, target in zip(expected, matches): 89 | assert pattern.match(target) 90 | for pattern, target in zip( 91 | get_patterns_from_tag_list(get_valid_tag_list(input)), matches 92 | ): 93 | assert pattern.match(target) 94 | 95 | 96 | def test_escape_webui_special_symbols(): 97 | test_cases: list[tuple[list[str], list[str]]] = [ 98 | (["1girl", "solo"], ["1girl", "solo"]), 99 | ( 100 | ["star (sky)", "kafka (honkai:star rail)"], 101 | [r"star \(sky\)", r"kafka \(honkai:star rail\)"], 102 | ), 103 | ] 104 | for input, expected in test_cases: 105 | assert escape_webui_special_symbols(input) == expected 106 | 107 | 108 | def test_unescape_webui_special_symbols(): 109 | test_cases: list[tuple[list[str], list[str]]] = [ 110 | (["1girl", "solo"], ["1girl", "solo"]), 111 | ( 112 | [r"star \(sky\)", r"kafka \(honkai:star rail\)"], 113 | ["star (sky)", "kafka (honkai:star rail)"], 114 | ), 115 | ] 116 | for input, expected in test_cases: 117 | assert unescape_webui_special_symbols(input) == expected 118 | --------------------------------------------------------------------------------