-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
236 lines (220 loc) · 6.25 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
from fastapi import FastAPI, Query
from fastapi.responses import JSONResponse
from typing import Union
from search import Scraper
from ranking import Ranking
app = FastAPI()
scraper = Scraper()
ranking = Ranking()
filters = [
"day",
"week",
"month",
"3month",
"year",
"total",
]
parodies = [
"--原作カテゴリ--",
"その他原作",
"二次創作",
"オリジナル",
"ARMORED CORE",
"BanG Dream!",
"BLEACH",
"FAIRY TAIL",
"Fate/",
"GOD EATER",
"HUNTER×HUNTER",
"Infinite Dendrogram",
"Muv-Luv",
"NARUTO",
"NEW GAME!",
"ONE PIECE",
"Re:ゼロから始める異世界生活",
"VOICEROID",
"アークナイツ",
"アイドルマスター",
"アカメが斬る!",
"アクタージュ",
"アサルトリリィ",
"アズールレーン",
"ありふれた職業で世界最強",
"暗殺教室",
"痛いのは嫌なので防御力に極振りしたいと思います。",
"イナズマイレブン",
"インフィニット・ストラトス",
"ウルトラマン",
"ウマ娘プリティーダービー",
"英雄伝説",
"オーバーロード",
"推しの子",
"ガールズ&パンツァー",
"学戦都市アスタリスク",
"かぐや様は告らせたい",
"陰の実力者になりたくて!",
"がっこうぐらし!",
"家庭教師ヒットマンREBORN!",
"仮面ライダー",
"艦隊これくしょん",
"ガンダム",
"カンピオーネ!",
"鬼滅の刃",
"銀河英雄伝説",
"蜘蛛ですが、なにか?",
"グランブルーファンタジー",
"ゲート 自衛隊 彼の地にて、斯く戦えり",
"けものフレンズ",
"原神",
"恋姫†無双",
"コードギアス",
"ご注文はうさぎですか?",
"五等分の花嫁",
"この素晴らしい世界に祝福を!",
"ゴブリンスレイヤー",
"咲-Saki-",
"シャングリラ・フロンティア",
"呪術廻戦",
"食戟のソーマ",
"ジョジョの奇妙な冒険",
"進撃の巨人",
"新世紀エヴァンゲリオン",
"スーパーロボット大戦",
"ストライクウィッチーズ",
"ストライク・ザ・ブラッド",
"ゼロの使い魔",
"戦姫絶唱シンフォギア",
"ソードアート・オンライン",
"葬送のフリーレン",
"ダイの大冒険",
"対魔忍",
"盾の勇者の成り上がり",
"ダンガンロンパ",
"ダンジョンに出会いを求めるのは間違っているだろうか",
"チェンソーマン",
"超次元ゲイムネプテューヌ",
"デート・ア・ライブ",
"テイルズオブ",
"転生したらスライムだった件",
"ドールズフロントライン",
"とある魔術の禁書目録",
"東京喰種",
"東方Project",
"刀使ノ巫女",
"ドラゴンクエスト",
"ドラゴンボール",
"ニセコイ",
"日本国召喚",
"バイオハザード",
"ハイスクールD×D",
"ハイスクール・フリート",
"ハイキュー!!",
"バカとテストと召喚獣",
"ハリー・ポッター",
"緋弾のアリア",
"ファイアーエムブレム",
"プリキュア",
"プリンセスコネクト!Re:Dive",
"ブルーアーカイブ",
"ブルーロック",
"プロジェクトセカイ",
"ペルソナ",
"僕のヒーローアカデミア",
"ポケットモンスター",
"ぼっち・ざ・ろっく!",
"真剣で私に恋しなさい!",
"魔法科高校の劣等生",
"魔法少女まどか☆マギカ",
"魔法少女リリカルなのは",
"魔法先生ネギま!",
"無職転生",
"名探偵コナン",
"メイドインアビス",
"女神転生",
"モンスターハンター",
"問題児たちが異世界から来るそうですよ?",
"やはり俺の青春ラブコメはまちがっている。",
"遊戯王",
"結城友奈は勇者である",
"ゆるキャン△",
"ようこそ実力至上主義の教室へ",
"幼女戦記",
"落第騎士の英雄譚",
"ラブライブ!",
"ランスシリーズ",
"リコリス・リコイル",
"りゅうおうのおしごと!",
"ロクでなし魔術講師と禁忌教典",
"ワールドトリガー",
]
sorts = [
"最終更新日時(新しい順)",
"最終更新日時(古い順)",
"総合評価 ",
"通算UA数(多い順)",
"通算UA数(少ない順)",
"平均評価(高い順)",
"平均評価(低い順)",
"加重平均(高い順)",
"加重平均(低い順)",
"1話あたりの文字数(多い順)",
"1話あたりの文字数(少ない順)",
"初回投稿日(新しい順)",
"初回投稿日(古い順)",
"お気に入り数(多い順)",
"お気に入り数(少ない順)",
"しおり数(多い順)",
"しおり数(少ない順)",
"ここすき数(多い順)",
"ここすき数(少ない順)",
"今週UA数(多い順)",
"今週UA数(少ない順)",
"先週UA数(多い順)",
"先週UA数(少ない順)",
"投票者数(多い順)",
"投票者数(少ない順)",
"総評価数(多い順)",
"総評価数(少ない順)",
"総文字数(多い順)",
"総文字数(少ない順)",
"感想数(多い順)",
"感想数(少ない順)",
"話数(多い順)",
"話数(少ない順)",
"中央値(高い順)",
"中央値(低い順)",
"日間総合評価",
"週間総合評価",
"月間総合評価",
"四半期総合評価",
"年間総合評価",
"Wilson Score Interval",
"相対評価",
"ピックアップ(総合評価/UA)",
"ランダム",
]
@app.get("/ranking/", tags=["ranking"])
async def ranking_hameln(
filter: Union[str] = Query(enum=filters),
):
res = JSONResponse(
content=ranking.hameln_ranking(filter),
media_type="charset=utf-8",
)
return res
@app.get("/search/", tags=["search"])
async def search_hameln(
search_word: str = Query(None),
gensaku: Union[str] = Query(enum=parodies),
sort: Union[str] = Query(enum=sorts),
):
if gensaku != "--原作カテゴリ--" and gensaku != "その他原作":
gensaku = "原作:{}".format(gensaku)
if gensaku == "--原作カテゴリ--" and search_word != "":
gensaku = ""
search_type = sorts.index(sort)
res = JSONResponse(
content=scraper.hameln_search(search_word, gensaku, search_type),
media_type="charset=utf-8",
)
return res