diff options
author | jwansek <eddie.atten.ea29@gmail.com> | 2021-06-19 22:25:51 +0100 |
---|---|---|
committer | jwansek <eddie.atten.ea29@gmail.com> | 2021-06-19 22:25:51 +0100 |
commit | 0f64bfacef01e9df565838d29afeedc9dfeb0b4b (patch) | |
tree | 82cd7951cbe4bcee56ded011e961b3f1330a6128 /downloader.py | |
parent | 54a926ccd5932bfbdffb4dfd44f375e8410c2bb5 (diff) | |
download | eda.gay-0f64bfacef01e9df565838d29afeedc9dfeb0b4b.tar.gz eda.gay-0f64bfacef01e9df565838d29afeedc9dfeb0b4b.zip |
added nhentai downloader
Diffstat (limited to 'downloader.py')
-rw-r--r-- | downloader.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/downloader.py b/downloader.py new file mode 100644 index 0000000..4b2af2f --- /dev/null +++ b/downloader.py @@ -0,0 +1,54 @@ +from dataclasses import dataclass +from lxml import html +import requests +import shutil +import urllib +import os + +@dataclass +class CompressedImages: + nhentai_id: int + + def __enter__(self): + self.folderpath = os.path.join("static", str(self.nhentai_id)) + self.zippath = os.path.join("static", "zips", "%i.zip" % self.nhentai_id) + os.mkdir(self.folderpath) + + self.num_downloaded = self.download_images("https://nhentai.net/g/%i" % self.nhentai_id, self.folderpath, "nhentai.net") + + shutil.make_archive(self.zippath[:-4], "zip", self.folderpath) + + return self.zippath + + def __exit__(self, type, value, traceback): + # os.remove(self.zippath) + shutil.rmtree(self.folderpath) + + def download_images(self, url:str, out:str, domain:str) -> int: + tree = html.fromstring(requests.get(url).content) + for i, element in enumerate(tree.xpath("//a[@class='gallerythumb']"), 1): + imurl = self.get_img("https://%s%s" % (domain, element.get("href")), i) + print(imurl) + self.dl_img(imurl, out) + + return i + + def get_img(self, srcurl:str, num:int) -> str: + tree = html.fromstring(requests.get(srcurl).content) + for element in tree.xpath("//img"): + try: + if num == int(os.path.splitext(element.get("src").split("/")[-1])[0]): + return element.get("src") + except ValueError: + pass + + def dl_img(self, imurl, outpath:str): + req = urllib.request.Request(imurl, headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.50.2 (KHTML, like Gecko) Version/5.0.6 Safari/533.22.3'}) + mediaContent = urllib.request.urlopen(req).read() + with open(os.path.join(outpath, imurl.split("/")[-1]), "wb") as f: + f.write(mediaContent) + +if __name__ == "__main__": + with CompressedImages(306013) as zippath: + import subprocess + subprocess.run(["cp", zippath, "/home/eden/Downloads"])
\ No newline at end of file |