Advertisement
Guest User

mangachan.py

a guest
Jun 12th, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. #!/bin/python
  2.  
  3. import requests
  4. from bs4 import BeautifulSoup
  5. import os
  6. import clipboard
  7.  
  8. #   Данный скрипт автоматизирует скачивание манги с сайта http://mangachan.me,
  9. #   принимая на ввод ссылку страницы скачивания манги. Создаёт директорию,
  10. #   создаёт каталоги для всех глав, скачивает архивы,
  11. #   распаковывая в одноимённом имени архива каталоге и удаляет архивы после архивации.
  12. #   Обработка ошибок не совсем корректна.
  13. #   Принимает ссылки типа "http://mangachan.me/download/33031-shuukan-shounen-girl.html",
  14. #   но в дальнейшем можно преобразовывывать ссыллки с главной страницы манги.
  15.  
  16. def getMangaName(soup, link):
  17.     table = soup.find("div", id="right")
  18.     elem = table.findAll("div")[1].find("span")
  19.     name = elem.getText()
  20.     if name == "":
  21.         return link.split("/")[-1].split('.')[0]
  22.     return name
  23.  
  24. def saveFile(name, data):
  25.     f = open(name, "ab")
  26.     f.write(data)
  27.     f.close()
  28.  
  29. def unzip(file, path):
  30.     ras = file.split(".")[-1]
  31.     file = file.replace(" ", "\ ")
  32.     if ras == "zip":
  33.         command = "./unzip {} -x -d \"{}\"".format(file, path)
  34.     elif ras == "rar":
  35.         os.mkdir(path)
  36.         command = "./unrar e {} {}".format(file, path)
  37.     os.system(command)
  38.  
  39. mangaBlink = clipboard.paste()
  40. if not mangaBlink.startswith("http"):
  41.     manga_link = input("Скопируйте ссылку на мангу...\n")
  42. else:
  43.     manga_link = mangaBlink
  44.  
  45. if manga_link.split("/")[3] == "manga":
  46.     manga_link = manga_link.replace("/manga/", "/download/")
  47.  
  48. clearLink = "/".join(manga_link.split("/")[0:3])
  49. mangaPage = requests.get(manga_link)
  50. if mangaPage.status_code == 404:
  51.     print("Error! Page not found!")
  52.     exit()
  53.  
  54. soup = BeautifulSoup(mangaPage.text, 'html.parser')
  55. mangaName = getMangaName(soup, manga_link)
  56. tableLinks = soup.find("table", id="download_table")
  57. tagLinks = tableLinks.findAll("tr")[:0:-1]
  58.  
  59. if mangaName not in os.listdir("."):
  60.     os.mkdir(mangaName)
  61.  
  62. for tag in tagLinks:
  63.     fTag = tag.find("a")
  64.     bLink = fTag.get("href")
  65.     chNameZip = fTag.getText()
  66.     filename = "/".join([mangaName, chNameZip])
  67.     pathname = ".".join(filename.split(".")[0:-1])
  68.     if pathname.split("/")[-1] in os.listdir(mangaName):
  69.         continue
  70.     fullLink = clearLink + bLink
  71.     print(fullLink)
  72.     r = requests.get(fullLink, headers={"referer": manga_link})
  73.     saveFile(filename, r.content)
  74.     unzip(filename, pathname)
  75.     os.remove(filename)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement