-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwaifu-get.py
executable file
·126 lines (107 loc) · 3.15 KB
/
waifu-get.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
#!/usr/bin/python3
import requests
import json
import os
import sys
from PIL import Image # Pillow
def printhelp():
print('''
Usage: waifu-get.py [OPTION]... [TAG]...
Options:
--segs\tForce NSFW images
--im\tUse waifu.im API. You can use many tags
--pics\tUse waifu.pics API. Use 1 tag only.
--nekos\tUse nekos.life (old) API. No tags.
Tags:
waifu.im (type):
maid waifu marin-kitagawa mori-calliope raiden-shogun oppai selfies uniform
waifu.im (nsfw tags):
ecchi hentai ero ass paizuri oral milf
''')
exit()
###### help ######
if len(sys.argv) == 1:
printhelp()
###### variables ######
api_name = {'im': 'waifu.im', 'nekos': 'nekos.life', 'pics': 'waifu.pics', 'moe': 'nekos.moe'}
debug = False
mode = 'im' # either 'im' (waifu.im), 'nekos' (nekos.life), or 'pics' (waifu.pics)
taglist = []
segs = False
output = {}
headers = {}
###### arguments ######
for i in range(1, len(sys.argv)): # Add tags
if sys.argv[i] == '--debug':
debug = True
elif sys.argv[i] == '--segs':
segs = True
elif sys.argv[i] == '--im':
mode = 'im'
elif sys.argv[i] == '--neko':
mode = 'nekos'
elif sys.argv[i] == '--pics':
mode = 'pics'
elif sys.argv[i] == '--moe':
mode = 'moe'
elif sys.argv[i] == '--help' or sys.argv[i] == '-h':
printhelp()
else:
taglist.append(sys.argv[i])
###### prepare request ######
if mode == 'im':
url = 'https://api.waifu.im/search'
headers = {'Accept-Version': 'v5'}
elif mode == 'nekos':
if segs:
url = 'https://nekos.life/api/lewd/neko'
else:
url = 'https://nekos.life/api/neko'
elif mode == 'pics':
if segs:
url = 'https://api.waifu.pics/nsfw/'
else:
url = 'https://api.waifu.pics/sfw/'
if len(taglist) > 0:
url += taglist[0]
else:
url += 'waifu'
elif mode == 'moe':
url = 'https://nekos.moe/api/v1/random/image'
if segs:
url += '?nsfw=true'
else: # default: waifu.im
url = 'https://api.waifu.im/search'
headers = {'Accept-Version': 'v5'}
params = {
'included_tags': taglist,
'height': '>=600',
'nsfw': segs
}
response = requests.get(url, params=params, headers=headers)
if debug:
print(json.dumps(response.json()))
exit()
###### processing ######
if response.status_code == 200:
data = response.json()
# Process the response data as needed
if mode == 'im':
output['link'] = data['images'][0]['url']
output['sauce'] = data['images'][0]['source']
elif mode == 'nekos':
output['link'] = data['neko']
output['sauce'] = data['neko']
elif mode == 'moe':
image_id = data['images'][0]['id']
output['link'] = str('https://nekos.moe/image/' + image_id)
output['sauce'] = str('https://nekos.moe/post/' + image_id)
elif mode == 'pics':
output['link'] = data['url']
output['sauce'] = data['url']
else: # default: waifu.im
output['link'] = data['images'][0]['url']
output['sauce'] = data['images'][0]['source']
print(json.dumps(output))
else:
print('Request failed with status code:', response.status_code)