import json
import os
import time
from typing import List
import requests
from bs4 import BeautifulSoup
from requests import Session, Response
class JonnySPScraper(object):
base_url: str = "http://jonnysp.bplaced.net/"
url: str = "{}data.php?draw=1&_=()&start=0&length=100000&columns%5B0%5D%5Bd%5D".format(
base_url, int(time.time() * 1000)
)
def __init__(self, files_root: str):
self.ird_urls: List[str] = []
self.files_root: str = files_root
with Session() as s:
data = json.loads(s.get(self.url).content, encoding='UTF-8')
for ird in data['data']:
soup: BeautifulSoup = BeautifulSoup(ird['filename'], 'lxml')
ird_url: str = self.base_url + soup.find('a')['href']
self.ird_urls.append(ird_url)
for ird_url in self.ird_urls:
self.download_ird(ird_url)
def download_ird(self, ird_url: str):
file_name: str = ird_url.split('/')[-1]
r: Response = requests.get(ird_url, stream=True)
with open(os.path.join(self.files_root, file_name), 'wb') as f:
for chunk in r.iter_content(chunk_size=512 * 1024 * 1024):
if chunk:
f.write(chunk)
print(ird_url + " has been downloaded!")
if __name__ == '__main__':
JonnySPScraper(files_root="H:/IRD/")
Comments