xyz69 commited on
Commit
66a788b
·
verified ·
1 Parent(s): e242a37

Create main.py

Browse files
Files changed (1) hide show
  1. main.py +141 -0
main.py ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, Request, Response
2
+ from fastapi.responses import HTMLResponse, FileResponse
3
+ import requests
4
+ import json
5
+ import secrets
6
+ from dateutil import parser
7
+ import requests
8
+
9
+
10
+ app = FastAPI()
11
+ @app.get('/')
12
+ def root(request: Request):
13
+ return {"root": request.url.hostname}
14
+
15
+
16
+ @app.get('/search')
17
+ async def search(query, page):
18
+ query = query
19
+ page = page
20
+ res = {
21
+ "search_text": query,
22
+ "tags":
23
+ [],
24
+ "brands":
25
+ [],
26
+ "blacklist":
27
+ [],
28
+ "order_by":
29
+ [],
30
+ "ordering":
31
+ [],
32
+ "page": page,
33
+ }
34
+ headers = {
35
+ "Content-Type": "application/json; charset=utf-8"
36
+ }
37
+ x = requests.post("https://search.htv-services.com", headers=headers, json=res)
38
+ rl = x.json()
39
+ text = {
40
+ "response": json.loads(rl'hits']),
41
+ "page": rl['page']
42
+ }
43
+ return text
44
+
45
+ @app.get('/recent')
46
+ async def recent(page = 0):
47
+ page = page
48
+ url = "https://search.htv-services.com"
49
+ res = {
50
+ "search_text": "",
51
+ "tags":
52
+ [],
53
+ "brands":
54
+ [],
55
+ "blacklist":
56
+ [],
57
+ "order_by": "created_at_unix",
58
+ "ordering": "desc",
59
+ "page": page,
60
+ }
61
+ headers = {
62
+ "Content-Type": "application/json; charset=utf-8"
63
+ }
64
+ x = requests.post(url, headers=headers, json=res)
65
+ rl = x.json()
66
+ text = {
67
+ "reposone": json.loads(rl['hits']),
68
+ "page": rl['page']
69
+ }
70
+ return text
71
+
72
+ @app.get('/trending')
73
+ async def trending(time = "month",page = 0):
74
+ time = time
75
+ p = page
76
+ headers = {"X-Signature-Version": "web2",
77
+ "X-Signature": secrets.token_hex(32)}
78
+ x = requests.get(f"https://hanime.tv/api/v8/browse-trending?time={time}&page={p}", headers=headers)
79
+ rl = x.json()
80
+ text = {
81
+ "reposone": rl["hentai_videos"],
82
+ "time": rl["time"],
83
+ "page": rl["page"]
84
+ }
85
+ return text
86
+
87
+
88
+ @app.get('/details')
89
+ async def details(id):
90
+ id = id
91
+ x = f"https://hanime.tv/api/v8/video?id={id}"
92
+ x = requests.get(x)
93
+ rl = x.json()
94
+ created_at = rl["hentai_video"]["created_at"] = parser.parse(
95
+ rl["hentai_video"]["created_at"]).strftime("%Y %m %d")
96
+ released_date = rl["hentai_video"]["released_at"] = parser.parse(
97
+ rl["hentai_video"]["released_at"]).strftime("%Y %m %d")
98
+ view = rl["hentai_video"]["views"] = "{:,}".format(
99
+ rl["hentai_video"]["views"])
100
+ tags = rl["hentai_video"]["hentai_tags"]
101
+ text = {
102
+ "query": rl["hentai_video"]["slug"],
103
+ "name": rl["hentai_video"]["name"],
104
+ "poster": rl["hentai_video"]["cover_url"],
105
+ "id": rl["hentai_video"]["id"],
106
+ "description": rl["hentai_video"]["description"],
107
+ "views": view,
108
+ "brand": rl["hentai_video"]["brand"],
109
+ "created_at": created_at,
110
+ "released_date": released_date,
111
+ "is_censored": rl["hentai_video"]["is_censored"],
112
+ "tags": [x["text"] for x in tags]
113
+ }
114
+ return text
115
+
116
+
117
+ @app.get('/link')
118
+ async def hentai_video(id):
119
+ url = f"https://hanime.tv/api/v8/video?id={id}"
120
+ x = requests.get(url, headers={
121
+ "X-Session-Token": "PhzIzReFsg7g2GZi-tz9KVpR2LskgMP8-l_xJ0kmbwhSuBOcD3yZJeOoQKS-ND1w3qFCGj0Y2HzfJ4renU82W25BNSVI6KnmwfiN5e9lueyQOYbZ0RVKmS2Ek1fLKvMnS_3ktEUiFOTjSCezPusemw==(-(0)-)hDLS0eC_45mNW15pn3ZJYQ==",
122
+ })
123
+ rl = x.json()
124
+ text = {
125
+ "data": rl["videos_manifest"]["servers"][0]["streams"]
126
+ }
127
+ return text
128
+
129
+ @app.get('/play')
130
+ async def m3u8(link):
131
+ x = f'''
132
+ <DOCTYPE html>
133
+ <html>
134
+ <body>
135
+ <video id="live" autoplay controls>
136
+ <source src="{link}" type="video/mp4">
137
+ </video>
138
+ </body>
139
+ </html>
140
+ '''
141
+ return HTMLResponse(content=x, status_code=200)