This commit is contained in:
end-4
2024-02-22 15:35:06 +07:00
commit 8db26e9707
4220 changed files with 208544 additions and 0 deletions
+139
View File
@@ -0,0 +1,139 @@
#!/usr/bin/python3
import requests
import json
import os
import sys
from PIL import Image
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
}
os.system('eww update rev_waifustatus=true')
os.system('eww update waifu_status=\'Requesting {0} API\''.format(api_name[mode]))
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']
os.system('eww update waifu_status=\'Downloading image\'')
os.system('wget -O "{0}" "{1}" -q read-timeout=0.1'.format('eww_covers/waifu_tmp', output['link']))
os.system('eww update waifu=\'{"name":"eww_covers/waifu_loading", "size": [0, 100]}\'')
os.system('mv ./eww_covers/waifu_tmp ./eww_covers/waifu')
with Image.open('./eww_covers/waifu') as img:
output['size'] = img.size
output['path'] = 'eww_covers/waifu'
output['ext'] = str('.' + img.format.lower())
print(json.dumps(output))
os.system('eww update rev_waifustatus=false')
else:
print('Request failed with status code:', response.status_code)