mirror of
https://github.com/metafy-social/python-scripts.git
synced 2024-11-30 15:31:10 +00:00
Merge pull request #254 from raihankhan-rk/raihan
Added Wallpaper Engine
This commit is contained in:
commit
20be5a2c43
5
scripts/Wallpaper Engine/requirements.txt
Normal file
5
scripts/Wallpaper Engine/requirements.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
beautifulsoup4==4.4.1
|
||||||
|
bs4==0.0.1
|
||||||
|
lxml==4.6.3
|
||||||
|
requests==2.20.0
|
||||||
|
tqdm==4.7.6
|
121
scripts/Wallpaper Engine/wallhaven-dl.py
Normal file
121
scripts/Wallpaper Engine/wallhaven-dl.py
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
# Hey there! I got tired of downloading wallpapers manually so here it is.
|
||||||
|
import os
|
||||||
|
import getpass
|
||||||
|
import re
|
||||||
|
import requests
|
||||||
|
import tqdm
|
||||||
|
import time
|
||||||
|
import urllib
|
||||||
|
import json
|
||||||
|
|
||||||
|
os.makedirs('Wallhaven', exist_ok=True)
|
||||||
|
BASEURL="https://wallhaven.cc/api/v1/w/"
|
||||||
|
cookies=dict()
|
||||||
|
|
||||||
|
global APIKEY
|
||||||
|
APIKEY = ""
|
||||||
|
|
||||||
|
def category():
|
||||||
|
global BASEURL
|
||||||
|
print('''
|
||||||
|
****************************************************************
|
||||||
|
Category Codes
|
||||||
|
|
||||||
|
all - Every wallpaper.
|
||||||
|
general - For 'general' wallpapers only.
|
||||||
|
anime - For 'Anime' Wallpapers only.
|
||||||
|
people - For 'people' wallapapers only.
|
||||||
|
ga - For 'General' and 'Anime' wallapapers only.
|
||||||
|
gp - For 'General' and 'People' wallpapers only.
|
||||||
|
****************************************************************
|
||||||
|
''')
|
||||||
|
ccode = input('Enter Category: ').lower()
|
||||||
|
ctags = {'all':'111', 'anime':'010', 'general':'100', 'people':'001', 'ga':'110', 'gp':'101' }
|
||||||
|
ctag = ctags[ccode]
|
||||||
|
|
||||||
|
print('''
|
||||||
|
****************************************************************
|
||||||
|
Purity Codes
|
||||||
|
|
||||||
|
sfw - For 'Safe For Work'
|
||||||
|
sketchy - For 'Sketchy'
|
||||||
|
nsfw - For 'Not Safe For Work'
|
||||||
|
ws - For 'SFW' and 'Sketchy'
|
||||||
|
wn - For 'SFW' and 'NSFW'
|
||||||
|
sn - For 'Sketchy' and 'NSFW'
|
||||||
|
all - For 'SFW', 'Sketchy' and 'NSFW'
|
||||||
|
****************************************************************
|
||||||
|
''')
|
||||||
|
pcode = input('Enter Purity: ')
|
||||||
|
ptags = {'sfw':'100', 'sketchy':'010', 'nsfw':'001', 'ws':'110', 'wn':'101', 'sn':'011', 'all':'111'}
|
||||||
|
ptag = ptags[pcode]
|
||||||
|
|
||||||
|
BASEURL = 'https://wallhaven.cc/api/v1/search?apikey=' + APIKEY + "&categories=" +\
|
||||||
|
ctag + '&purity=' + ptag + '&page='
|
||||||
|
|
||||||
|
def latest():
|
||||||
|
global BASEURL
|
||||||
|
print('Downloading latest')
|
||||||
|
topListRange = '1M'
|
||||||
|
BASEURL = 'https://wallhaven.cc/api/v1/search?apikey=' + APIKEY + '&topRange=' +\
|
||||||
|
topListRange + '&sorting=toplist&page='
|
||||||
|
|
||||||
|
def search():
|
||||||
|
global BASEURL
|
||||||
|
query = input('Enter search query: ')
|
||||||
|
BASEURL = 'https://wallhaven.cc/api/v1/search?apikey=' + APIKEY + '&q=' + \
|
||||||
|
urllib.parse.quote_plus(query) + '&page='
|
||||||
|
|
||||||
|
def downloadPage(pageId, totalImage):
|
||||||
|
url = BASEURL + str(pageId)
|
||||||
|
urlreq = requests.get(url, cookies=cookies)
|
||||||
|
pagesImages = json.loads(urlreq.content);
|
||||||
|
pageData = pagesImages["data"]
|
||||||
|
|
||||||
|
for i in range(len(pageData)):
|
||||||
|
currentImage = (((pageId - 1) * 24) + (i + 1))
|
||||||
|
|
||||||
|
url = pageData[i]["path"]
|
||||||
|
|
||||||
|
filename = os.path.basename(url)
|
||||||
|
osPath = os.path.join('Wallhaven', filename)
|
||||||
|
if not os.path.exists(osPath):
|
||||||
|
imgreq = requests.get(url, cookies=cookies)
|
||||||
|
if imgreq.status_code == 200:
|
||||||
|
print("Downloading : %s - %s / %s" % (filename, currentImage , totalImage))
|
||||||
|
with open(osPath, 'ab') as imageFile:
|
||||||
|
for chunk in imgreq.iter_content(1024):
|
||||||
|
imageFile.write(chunk)
|
||||||
|
elif (imgreq.status_code != 403 and imgreq.status_code != 404):
|
||||||
|
print("Unable to download %s - %s / %s" % (filename, currentImage , totalImage))
|
||||||
|
else:
|
||||||
|
print("%s already exist - %s / %s" % (filename, currentImage , totalImage))
|
||||||
|
|
||||||
|
def main():
|
||||||
|
Choice = input('''Choose how you want to download the image:
|
||||||
|
|
||||||
|
Enter "category" for downloading wallpapers from specified categories
|
||||||
|
Enter "latest" for downloading latest wallpapers
|
||||||
|
Enter "search" for downloading wallpapers from search
|
||||||
|
|
||||||
|
Enter choice: ''').lower()
|
||||||
|
while Choice not in ['category', 'latest', 'search']:
|
||||||
|
if Choice != None:
|
||||||
|
print('You entered an incorrect value.')
|
||||||
|
choice = input('Enter choice: ')
|
||||||
|
|
||||||
|
if Choice == 'category':
|
||||||
|
category()
|
||||||
|
elif Choice == 'latest':
|
||||||
|
latest()
|
||||||
|
elif Choice == 'search':
|
||||||
|
search()
|
||||||
|
|
||||||
|
pgid = int(input('How Many pages you want to Download: '))
|
||||||
|
totalImageToDownload = str(24 * pgid)
|
||||||
|
print('Number of Wallpapers to Download: ' + totalImageToDownload)
|
||||||
|
for j in range(1, pgid + 1):
|
||||||
|
downloadPage(j, totalImageToDownload)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user