You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
Python
61 lines
1.4 KiB
Python
import requests
|
|
import sys
|
|
|
|
import os.path as op
|
|
|
|
TAGS = '1girl reisen_udongein_inaba'
|
|
|
|
def main():
|
|
|
|
PAGE = 0
|
|
rejected_once = False
|
|
|
|
while True:
|
|
|
|
URL = "https://danbooru.donmai.us/posts.json"
|
|
PARAMS = { 'tags': TAGS,
|
|
'page': PAGE }
|
|
|
|
r = requests.get(url = URL, params = PARAMS)
|
|
data = r.json()
|
|
|
|
# If didn't receive a single entity, we should try again.
|
|
# If failed another time, shutdown!
|
|
if data.count == 0:
|
|
if rejected_once == True:
|
|
return
|
|
rejected_once = True
|
|
continue
|
|
rejected_once = False
|
|
|
|
for entity in data:
|
|
if entity['rating'] != 's':
|
|
continue
|
|
|
|
file_tags = entity['tag_string']
|
|
|
|
# we don't want comics
|
|
if 'comic' in file_tags:
|
|
continue
|
|
|
|
try:
|
|
file_url = entity['file_url']
|
|
except:
|
|
continue
|
|
|
|
# write the art
|
|
img_data = requests.get(file_url).content
|
|
with open('source/' + file_url[file_url.rfind("/")+1:], 'wb') as handler:
|
|
handler.write(img_data)
|
|
|
|
# save its url separately into a file
|
|
with open('urls', 'a', encoding='utf-8') as file:
|
|
print(file_url, file=file)
|
|
|
|
PAGE += 1
|
|
|
|
# end while True
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|