forked from Armando-J/post_bot
-
Notifications
You must be signed in to change notification settings - Fork 10
/
anilist.py
112 lines (98 loc) · 2.89 KB
/
anilist.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
try:
import ujson as json
except:
import json
import re
import requests
import translate
url = 'https://graphql.anilist.co'
def search(name: str, MediaType: str):
t = {'a': 'ANIME', 'm': 'MANGA'}
query = '''
query ($id: Int, $page: Int, $perPage: Int, $search: String) {
Page (page: $page, perPage: $perPage) {
media (id: $id, type: ''' + t[MediaType] + ''', search: $search) {
id
title {
romaji
}
format
coverImage{
extraLarge
}
}
}
}'''
variables = {
'search': name,
'page': 1,
'perPage': 8,
'MediaType': MediaType
}
try:
response = requests.post(
url, json={'query': query, 'variables': variables})
except Exception as e:
print('search',e)
return False
# print(response.text)
else:
if response.status_code==200:
try:return list(x for x in json.loads(response.text)['data']['Page']['media'])
except Exception as e:
print('search',e)
return False
else:
print('search estatus code',response.status_code)
return False
def get(id):
query = '''
query ($id: Int){
Media (id: $id){
coverImage{
extraLarge
}
title {
romaji
}
format
startDate{
year
}
status
episodes
genres
tags{
name
}
description
}
}
'''
variables = {
'id': id
}
try:
# Make the HTTP Api request
response = requests.post(
url, json={'query': query, 'variables': variables})
if response.status_code==200:
raw_response = json.loads(response.text)
info = {
'coverImage': raw_response['data']['Media']['coverImage']['extraLarge'],
'title': raw_response['data']['Media']['title']['romaji'] ,
'format': raw_response['data']['Media']['format'],
'status': raw_response['data']['Media']['status'],
'episodes': raw_response['data']['Media']['episodes'],
'genres': ['#{0}'.format(x).replace(' ','_').replace('-','_') for x in raw_response['data']['Media']['genres']],
'tags' : ['#{0}'.format(x['name']) for x in raw_response['data']['Media']['tags'][:5]],
'year' : raw_response['data']['Media']['startDate']['year'],
'description': translate.traducir(str(re.sub('<.*?>', '', raw_response['data']['Media']['description']))) if raw_response['data']['Media']['description'] else '',
}
return info
else :
print('get',response.status_code)
return False
except Exception as e:
print('get',e)
return False