aboutsummaryrefslogtreecommitdiffstats
path: root/downloader.py
diff options
context:
space:
mode:
authorjwansek <eddie.atten.ea29@gmail.com>2021-06-19 22:25:51 +0100
committerjwansek <eddie.atten.ea29@gmail.com>2021-06-19 22:25:51 +0100
commit0f64bfacef01e9df565838d29afeedc9dfeb0b4b (patch)
tree82cd7951cbe4bcee56ded011e961b3f1330a6128 /downloader.py
parent54a926ccd5932bfbdffb4dfd44f375e8410c2bb5 (diff)
downloadboymoder.blog-0f64bfacef01e9df565838d29afeedc9dfeb0b4b.tar.gz
boymoder.blog-0f64bfacef01e9df565838d29afeedc9dfeb0b4b.zip
added nhentai downloader
Diffstat (limited to 'downloader.py')
-rw-r--r--downloader.py54
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