mirror of
https://github.com/simon987/Misc-Download-Scripts.git
synced 2025-04-02 12:12:59 +00:00
73 lines
1.7 KiB
Python
73 lines
1.7 KiB
Python
import requests
|
|
from bs4 import BeautifulSoup
|
|
import multiprocessing
|
|
import os
|
|
|
|
|
|
fonts = []
|
|
|
|
|
|
def request_timeout(url):
|
|
while True:
|
|
try:
|
|
return requests.get(url, timeout=30)
|
|
except Exception as e:
|
|
print("!", end="", flush=True)
|
|
continue
|
|
|
|
|
|
def get_fonts():
|
|
|
|
letters = list("abcdefghijklmnopqrstuvwxyz")
|
|
letters.append("no")
|
|
|
|
pool = multiprocessing.Pool(processes=25)
|
|
pool.map(get_dl_links, letters)
|
|
|
|
|
|
def get_dl_links(letter):
|
|
|
|
for page in range(1, 11):
|
|
|
|
r = request_timeout("http://www.fontfreak.com/fonts-" + letter + str(page) + ".htm")
|
|
soup = BeautifulSoup(r.text, "html.parser")
|
|
|
|
for a in soup.findAll("a"):
|
|
if a.text is not None and a.text == "click here to download":
|
|
with open("fonts.txt", "a") as f:
|
|
f.write("http://www.fontfreak.com/" + a.get("href") + "\n")
|
|
|
|
|
|
def download_font(url):
|
|
r = request_timeout(url)
|
|
soup = BeautifulSoup(r.text, "html.parser")
|
|
|
|
dl_link = soup.find("a", attrs={"title": "DOWNLOAD FONT"})
|
|
|
|
if dl_link is not None:
|
|
|
|
dl_url = "http://www.fontfreak.com/" + dl_link.get("href")
|
|
file_path = "fonts/" + dl_url[dl_url.rfind("/")+1:]
|
|
|
|
if os.path.exists(file_path):
|
|
return
|
|
|
|
r = requests.get(dl_url, stream=True)
|
|
|
|
print(file_path)
|
|
|
|
with open(file_path, 'wb') as f:
|
|
for chunk in r.iter_content(chunk_size=1024):
|
|
if chunk:
|
|
f.write(chunk)
|
|
else:
|
|
print("no dl" + url)
|
|
|
|
|
|
get_fonts()
|
|
|
|
pool = multiprocessing.Pool(processes=25)
|
|
with open("fonts.txt", "r") as f:
|
|
pool.map(download_font, f.read().splitlines())
|
|
|