Support for Bato.to
Added support for bato.to. No PhantomJS is needed now. Also, added a list of people who have donated for comic-dl.master
parent
939115e348
commit
80ef3ce950
|
@ -66,4 +66,5 @@
|
|||
- Added MangaFox.la (mangafox.me redirects to .la now) [2017.12.27]
|
||||
- Added Feature to Search and Download Manga from MangaEden [2017.12.28]
|
||||
- Fix for #64 [2017.12.28]
|
||||
- Fix for #62 [2017.12.29]
|
||||
- Fix for #62 [2017.12.29]
|
||||
- Added Support for [Bato.to](http://bato.to/) [2017.12.31] [No PhantomJS Needed Now]
|
50
ReadMe.md
50
ReadMe.md
|
@ -1,5 +1,5 @@
|
|||
[![N|Solid](https://raw.githubusercontent.com/Xonshiz/comic-dl/master/Images/Icon.png)](https://github.com/Xonshiz/comic-dl)
|
||||
# Comic-DL | [![Build Status](https://travis-ci.org/Xonshiz/comic-dl.svg?branch=master)](https://travis-ci.org/Xonshiz/comic-dl) [![Documentation Status](https://readthedocs.org/projects/comic-dl/badge/?version=latest)](http://comic-dl.readthedocs.io/en/latest/?badge=latest) | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/xonshiz)
|
||||
# Comic-DL | [![Build Status](https://travis-ci.org/Xonshiz/comic-dl.svg?branch=master)](https://travis-ci.org/Xonshiz/comic-dl) [![Documentation Status](https://readthedocs.org/projects/comic-dl/badge/?version=latest)](http://comic-dl.readthedocs.io/en/latest/?badge=latest) | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/xonshiz) | [![GitHub release](https://img.shields.io/github/release/xonshiz/comic-dl.svg?style=flat-square)](https://github.com/xonshiz/comic-dl/releases/latest) | [![Github All Releases](https://img.shields.io/github/downloads/xonshiz/comic-dl/total.svg?style=flat-square)](https://github.com/xonshiz/comic-dl/releases)
|
||||
|
||||
Comic-dl is a command line tool to download Comics and Manga from various Manga and Comic sites easily. You can search Manga from this tool as well. Idea from [youtube-dl](https://github.com/rg3/youtube-dl)
|
||||
|
||||
|
@ -19,6 +19,7 @@ Comic-dl is a command line tool to download Comics and Manga from various Manga
|
|||
* [Python Support](#python-support)
|
||||
* [Windows Binary](#windows-binary)
|
||||
* [List of Arguments](#list-of-arguments)
|
||||
* [Language Codes](#language-codes)
|
||||
* [Using The Search](#using-the-search)
|
||||
* [Youtube Tutorial](https://www.youtube.com/watch?v=TmQYhLHEZxA)
|
||||
* [Usage](#usage)
|
||||
|
@ -157,6 +158,45 @@ Currently, the script supports these arguments :
|
|||
-fd, --force-download Forces download of chapters, when using comic-dl's search function.
|
||||
-pid, --page-id Takes the Page ID to download a particular "chapter number" of a manga.
|
||||
```
|
||||
|
||||
## Language Codes:
|
||||
These codes correspond to the languages. So, just pass in these language codes, to download Manga/Comic in that language (only supported by few sites).
|
||||
|
||||
Language Code --> Language
|
||||
--------------------------
|
||||
```
|
||||
0 --> English
|
||||
1 --> Italian
|
||||
2 --> Spanish
|
||||
3 --> French
|
||||
4 --> German
|
||||
5 --> Portuguese
|
||||
6 --> Turkish
|
||||
7 --> Indonesian
|
||||
8 --> Greek
|
||||
9 --> Filipino
|
||||
10 --> Polish
|
||||
11 --> Thai
|
||||
12 --> Malay
|
||||
13 --> Hungarian
|
||||
14 --> Romanian
|
||||
15 --> Arabic
|
||||
16 --> Hebrew
|
||||
17 --> Russian
|
||||
18 --> Vietnamese
|
||||
19 --> Dutch
|
||||
20 --> Bengali
|
||||
21 --> Persian
|
||||
22 --> Czech
|
||||
23 --> Brazilian
|
||||
24 --> Bulgarian
|
||||
25 --> Danish
|
||||
26 --> Esperanto
|
||||
27 --> Swedish
|
||||
28 --> Lithuanian
|
||||
29 --> Other
|
||||
```
|
||||
|
||||
#### Note :
|
||||
1.) Some websites like bato.to don't let you view some pages if you're not logged in. You'll have to create an account and pass the login information to the script via `-p` and `-u` arguments.
|
||||
|
||||
|
@ -309,7 +349,13 @@ If you're here to make suggestions, please follow the basic syntax to post a req
|
|||
This should be enough, but it'll be great if you can add more ;)
|
||||
|
||||
# Notes
|
||||
comic.naver.com has korean characters and some OS won't handle those characters. So, instead of naming the file folder with the series name in korean, the script will download and name the folder with the comic's ID instead.
|
||||
* comic.naver.com has korean characters and some OS won't handle those characters. So, instead of naming the file folder with the series name in korean, the script will download and name the folder with the comic's ID instead.
|
||||
|
||||
* Bato.to requires you to "log in" to read some chapters. So, to be on a safe side, provide the username/password combination to the script via "-p" and "-u" arguments.
|
||||
|
||||
* Bato.to also has comics for various languages. You need to pass the language code via "-ml" argument. Read the [Language Codes](#language-codes) section to find out the language codes.
|
||||
|
||||
* Bato.to only supports custom language downloads in "Batch" mode.
|
||||
|
||||
# Donations
|
||||
You can always send some money over from this :
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
#List of Supported Websites
|
||||
# List of Supported Websites
|
||||
|
||||
[PhantomJS] = Denotes that these sites need PhantomJS to be able to download content.
|
||||
|
||||
* [Mangafox.me](http://mangafox.me/) or [Mangafox.la](http://mangafox.la/)
|
||||
* [YoManga](http://yomanga.co/)
|
||||
* [GoManga](http://gomanga.co/)
|
||||
|
||||
~~* [Batoto](http://bato.to/) [PhantomJS]~~ [Under Development]
|
||||
~~* [Kissmanga](http://kissmanga.com/)~~ [Under Development]
|
||||
|
||||
* [Batoto](http://bato.to/)
|
||||
* [Comic Naver](http://comic.naver.com/index.nhn)
|
||||
* [Readcomiconline.to](http://readcomiconline.to/)
|
||||
* [mangahere.co](http://mangahere.co/)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
__version__ = "2017.12.29"
|
||||
__version__ = "2017.12.31"
|
|
@ -53,6 +53,14 @@ class ComicDL(object):
|
|||
" search function.",
|
||||
action="store_true")
|
||||
|
||||
parser.add_argument('-p', '--password', nargs=1,
|
||||
help='Takes Password used to log into a website, along with a username/email.',
|
||||
default=['None'])
|
||||
|
||||
parser.add_argument('-u', '--username', nargs=1,
|
||||
help='Takes username/email used to log into a website, along with a password.',
|
||||
default=['None'])
|
||||
|
||||
parser.add_argument("-v", "--verbose", help="Prints important debugging messages on screen.",
|
||||
action="store_true")
|
||||
logger = False
|
||||
|
@ -82,7 +90,7 @@ class ComicDL(object):
|
|||
if args.search:
|
||||
start_time = time.time()
|
||||
mangaSearch.MangaSearch(search_string=str(args.search[0]),
|
||||
manga_language=args.manga_language[0], skip_cache=args.skip_cache[0])
|
||||
manga_language=args.manga_language[0], skip_cache=args.skip_cache[0])
|
||||
|
||||
end_time = time.time()
|
||||
total_time = end_time - start_time
|
||||
|
@ -110,11 +118,10 @@ class ComicDL(object):
|
|||
args.download_directory = [os.getcwd()]
|
||||
start_time = time.time()
|
||||
|
||||
mangaChapters.MangaChapters(chapter_id=args.chapter_id[0],
|
||||
download_directory=args.download_directory[0],
|
||||
conversion=args.convert[0], delete_files=args.keep[0],
|
||||
chapter_range=args.range, sorting_order=args.sorting[0],
|
||||
force_download=force_download)
|
||||
mangaChapters.MangaChapters(chapter_id=args.chapter_id[0], download_directory=args.download_directory[0],
|
||||
conversion=args.convert[0], delete_files=args.keep[0],
|
||||
chapter_range=args.range, sorting_order=args.sorting[0],
|
||||
force_download=force_download)
|
||||
|
||||
end_time = time.time()
|
||||
total_time = end_time - start_time
|
||||
|
@ -166,7 +173,9 @@ class ComicDL(object):
|
|||
sorting_order=args.sorting[0], logger=logger,
|
||||
download_directory=args.download_directory[0],
|
||||
chapter_range=args.range, conversion=args.convert[0],
|
||||
delete_files=args.keep[0], image_quality=args.quality[0])
|
||||
delete_files=args.keep[0], image_quality=args.quality[0],
|
||||
username=args.username[0], password=args.password[0],
|
||||
comic_language=args.manga_language[0])
|
||||
end_time = time.time()
|
||||
total_time = end_time - start_time
|
||||
print("Total Time Taken To Complete : %s" % total_time)
|
||||
|
|
|
@ -15,15 +15,16 @@ import img2pdf
|
|||
|
||||
class GlobalFunctions(object):
|
||||
def page_downloader(self, manga_url, **kwargs):
|
||||
headers = {
|
||||
'User-Agent':
|
||||
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
|
||||
'Accept-Encoding': 'gzip, deflate'
|
||||
}
|
||||
headers = kwargs.get("headers")
|
||||
if not headers:
|
||||
headers = {
|
||||
'User-Agent':
|
||||
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
|
||||
'Accept-Encoding': 'gzip, deflate'
|
||||
}
|
||||
|
||||
sess = requests.session()
|
||||
sess = cfscrape.create_scraper(sess)
|
||||
|
||||
connection = sess.get(manga_url, headers=headers, cookies=kwargs.get("cookies"))
|
||||
if connection.status_code != 200:
|
||||
print("Whoops! Seems like I can't connect to website.")
|
||||
|
|
|
@ -19,10 +19,48 @@ from sites import stripUtopia
|
|||
from sites import readComicBooksOnline
|
||||
from sites import readComicsWebsite
|
||||
from sites import mangaRock
|
||||
from sites import batoto
|
||||
import globalFunctions
|
||||
|
||||
|
||||
class Honcho(object):
|
||||
|
||||
def comic_language_resolver(self, language_code):
|
||||
# Will return the Language Name corresponding to the language code.
|
||||
language_dict = {
|
||||
'0': 'English',
|
||||
'1': 'Italian',
|
||||
'2': 'Spanish',
|
||||
'3': 'French',
|
||||
'4': 'German',
|
||||
'5': 'Portuguese',
|
||||
'6': 'Turkish',
|
||||
'7': 'Indonesian',
|
||||
'8': 'Greek',
|
||||
'9': 'Filipino',
|
||||
'10': 'Polish',
|
||||
'11': 'Thai',
|
||||
'12': 'Malay',
|
||||
'13 ': 'Hungarian',
|
||||
'14': 'Romanian',
|
||||
'15': ' Arabic',
|
||||
'16': 'Hebrew',
|
||||
'17': 'Russian',
|
||||
'18': 'Vietnamese',
|
||||
'19': 'Dutch',
|
||||
'20': 'Bengali',
|
||||
'21': 'Persian',
|
||||
'22': 'Czech',
|
||||
'23': 'Brazilian',
|
||||
'24': 'Bulgarian',
|
||||
'25': 'Danish',
|
||||
'26': 'Esperanto',
|
||||
'27': 'Swedish',
|
||||
'28': 'Lithuanian',
|
||||
'29': 'Other'
|
||||
}
|
||||
return language_dict[language_code]
|
||||
|
||||
def checker(self, comic_url, download_directory, chapter_range, **kwargs):
|
||||
|
||||
user_name = kwargs.get("username")
|
||||
|
@ -30,6 +68,7 @@ class Honcho(object):
|
|||
current_directory = kwargs.get("current_directory")
|
||||
log_flag = kwargs.get("logger")
|
||||
sorting = kwargs.get("sorting_order")
|
||||
comic_language = kwargs.get("comic_language")
|
||||
|
||||
if log_flag is True:
|
||||
logging.basicConfig(format='%(levelname)s: %(message)s', filename="Error Log.log", level=logging.DEBUG)
|
||||
|
@ -95,8 +134,8 @@ class Honcho(object):
|
|||
return 0
|
||||
elif domain in ["www.striputopija.blogspot.in", "striputopija.blogspot.in"]:
|
||||
stripUtopia.StripUtopia(manga_url=comic_url, logger=logging, current_directory=current_directory,
|
||||
sorting_order=sorting, log_flag=log_flag, download_directory=download_directory,
|
||||
chapter_range=chapter_range)
|
||||
sorting_order=sorting, log_flag=log_flag, download_directory=download_directory,
|
||||
chapter_range=chapter_range)
|
||||
return 0
|
||||
elif domain in ["www.mangareader.net", "mangareader.net"]:
|
||||
mangaReader.MangaReader(manga_url=comic_url, logger=logging, current_directory=current_directory,
|
||||
|
@ -130,9 +169,11 @@ class Honcho(object):
|
|||
print("Under Development!")
|
||||
return 0
|
||||
elif domain in ["www.bato.to", "bato.to"]:
|
||||
# kissManga.KissManga(manga_url = comic_url, logger = logging,
|
||||
# current_directory = current_directory, sorting_order = sorting)
|
||||
print("Under Development!")
|
||||
batoto.Batoto(manga_url=comic_url, logger=logging, current_directory=current_directory,
|
||||
sorting_order=sorting, log_flag=log_flag, download_directory=download_directory,
|
||||
chapter_range=chapter_range, conversion=kwargs.get("conversion"),
|
||||
delete_files=kwargs.get("delete_files"), username=user_name, password=password,
|
||||
comic_language=self.comic_language_resolver(comic_language))
|
||||
return 0
|
||||
else:
|
||||
print("%s is not supported at the moment. You can request it on the Github repository." % domain)
|
||||
|
|
|
@ -0,0 +1,207 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import globalFunctions
|
||||
import requests
|
||||
import cfscrape
|
||||
from bs4 import BeautifulSoup
|
||||
import sys
|
||||
import re
|
||||
import os
|
||||
|
||||
|
||||
class Batoto:
|
||||
def __init__(self, manga_url, download_directory, chapter_range, **kwargs):
|
||||
user_name = kwargs.get("username")
|
||||
password = kwargs.get("password")
|
||||
comic_language = kwargs.get("comic_language")
|
||||
current_directory = kwargs.get("current_directory")
|
||||
conversion = kwargs.get("conversion")
|
||||
delete_files = kwargs.get("delete_files")
|
||||
self.logging = kwargs.get("log_flag")
|
||||
self.sorting = kwargs.get("sorting_order")
|
||||
|
||||
if "/reader#" in str(manga_url):
|
||||
self.single_chapter(comic_url=manga_url, download_directory=download_directory, conversion=conversion,
|
||||
delete_files=delete_files, user_name=user_name, user_password=password)
|
||||
else:
|
||||
self.full_series(comic_url=manga_url, sorting=self.sorting, download_directory=download_directory,
|
||||
chapter_range=chapter_range, conversion=conversion, delete_files=delete_files,
|
||||
user_name=user_name, user_password=password, manga_language=comic_language)
|
||||
|
||||
def user_login(self, username, password, **kwargs):
|
||||
session_cookie = ""
|
||||
|
||||
headers = kwargs.get("headers")
|
||||
if not headers:
|
||||
headers = {
|
||||
'User-Agent':
|
||||
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'referer': 'https://bato.to/'
|
||||
}
|
||||
print("Getting Auth Token...")
|
||||
page_source, update_cookie = globalFunctions.GlobalFunctions().page_downloader(
|
||||
manga_url="https://bato.to/forums/index.php?app=core&module=global§ion=login")
|
||||
|
||||
soup_parse = page_source.find_all('input', {'type': 'hidden'})
|
||||
auth_token = str([x['value'] for x in soup_parse][0]).strip()
|
||||
|
||||
payload = {
|
||||
'auth_key': auth_token,
|
||||
'ips_username': username,
|
||||
'ips_password': password,
|
||||
'rememberMe': '1'
|
||||
}
|
||||
|
||||
sess = requests.session()
|
||||
sess = cfscrape.create_scraper(sess)
|
||||
|
||||
print('Trying To Log In...')
|
||||
connection = sess.post("https://bato.to/forums/index.php?app=core&module=global§ion=login&do=process",
|
||||
headers=headers, data=payload, cookies=kwargs.get("cookies"))
|
||||
if connection.status_code != 200:
|
||||
print("Whoops! Seems like I can't connect to website.")
|
||||
print("It's showing : %s" % connection)
|
||||
print("Run this script with the --verbose argument and report the issue along with log file on Github.")
|
||||
sys.exit(1)
|
||||
else:
|
||||
page_source = BeautifulSoup(connection.text.encode("utf-8"), "html.parser")
|
||||
if "logout" in str(page_source):
|
||||
print("Successfully Logged In!")
|
||||
else:
|
||||
print("Couldn't Log You In. Please Check Your Credentials Again!")
|
||||
session_cookie = sess.cookies
|
||||
|
||||
return session_cookie
|
||||
|
||||
def name_cleaner(self, scrapped_name):
|
||||
return re.sub('[^A-Za-z0-9.\-\+\' ]+', '', ' '.join([str(word).strip().title() for word in str(scrapped_name).split("-")[:-1]]))
|
||||
|
||||
def single_chapter(self, comic_url, download_directory, conversion, delete_files, comic_name=None, user_name=None,
|
||||
user_password=None, **kwargs):
|
||||
chapter_id = str(str(comic_url).split("#")[-1]).replace("/", "")
|
||||
temp_cookies = kwargs.get("session_cookies")
|
||||
|
||||
|
||||
if str(user_name) != "None" and str(user_password) != "None":
|
||||
print("Trying To Log You In...")
|
||||
temp_cookies = self.user_login(username=user_name, password=user_password)
|
||||
|
||||
"""next_page denotes whether there will be a next page or not. Basically, it's like a flag to know whether we're
|
||||
on the last page or not.
|
||||
page_count starts from 0 and will add 1 to it in every iteration, which will in turn give us page number.
|
||||
TRULY GENIUS! <3
|
||||
"""
|
||||
comic_name = ""
|
||||
chapter_number = ""
|
||||
file_directory = ""
|
||||
directory_path = ""
|
||||
next_page = True
|
||||
page_count = 1
|
||||
|
||||
headers = {
|
||||
'User-Agent':
|
||||
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'referer': 'https://bato.to/reader'
|
||||
}
|
||||
|
||||
while next_page:
|
||||
batoto_reader_url = "https://bato.to/areader?id=" + str(chapter_id) + "&p=" + str(page_count)
|
||||
page_source, temp_cookies = globalFunctions.GlobalFunctions().page_downloader(manga_url=batoto_reader_url,
|
||||
headers=headers,
|
||||
cookies=temp_cookies)
|
||||
if not comic_name or not chapter_number or not file_directory:
|
||||
comic_name = self.name_cleaner(re.search(r'https://bato.to/comic/_/comics/(.*?)">', str(page_source)).group(1))
|
||||
chapter_number = re.sub('[^0-9]+', '', str(re.search(r'Ch\.(.*?)\:', str(page_source)).group(1)))
|
||||
file_directory = str(comic_name) + os.sep + str(chapter_number) + os.sep
|
||||
|
||||
directory_path = os.path.realpath(str(download_directory) + os.sep + str(file_directory))
|
||||
|
||||
if not os.path.exists(directory_path):
|
||||
os.makedirs(directory_path)
|
||||
|
||||
globalFunctions.GlobalFunctions().info_printer(comic_name, chapter_number)
|
||||
|
||||
img_link = page_source.find_all("img", {"id": "comic_page"})
|
||||
|
||||
current_image_url = ""
|
||||
|
||||
for x in img_link:
|
||||
current_image_url = str(x['src']).strip()
|
||||
|
||||
globalFunctions.GlobalFunctions().downloader(current_image_url, str(page_count) +
|
||||
str(current_image_url)[-4:],
|
||||
comic_url, directory_path, log_flag=self.logging)
|
||||
try:
|
||||
page_count = int(str(re.search(r"next_page = '(.*?)';", str(page_source)).group(1)).split("_")[-1])
|
||||
next_page = True
|
||||
except Exception as LastPage:
|
||||
next_page = False
|
||||
pass
|
||||
globalFunctions.GlobalFunctions().conversion(directory_path, conversion, delete_files,
|
||||
comic_name, chapter_number)
|
||||
|
||||
def full_series(self, comic_url, sorting, download_directory, chapter_range, conversion, delete_files,
|
||||
user_name=None, user_password=None, **kwargs):
|
||||
all_links = []
|
||||
session_cookie = None
|
||||
|
||||
headers = {
|
||||
'User-Agent':
|
||||
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'referer': 'https://bato.to/'
|
||||
}
|
||||
if str(user_name) != "None" and str(user_password) != "None":
|
||||
print("Trying To Log You In...")
|
||||
session_cookie = self.user_login(username=user_name, password=user_password)
|
||||
else:
|
||||
print("You are not logged in. You might not be able to download all the listed chapters from Batoto.")
|
||||
|
||||
print("")
|
||||
|
||||
manga_language = kwargs.get("manga_language")
|
||||
|
||||
page_source, update_cookie = globalFunctions.GlobalFunctions().page_downloader(manga_url=comic_url,
|
||||
headers=headers,
|
||||
cookies=session_cookie)
|
||||
|
||||
class_name = "row lang_{0} chapter_row".format(manga_language)
|
||||
|
||||
raw_chapters_table = page_source.find_all('tr', {'class': class_name})
|
||||
for table_data in raw_chapters_table:
|
||||
x = table_data.findAll('a')
|
||||
for a in x:
|
||||
if "/reader#" in str(a['href']):
|
||||
all_links.append(str(a['href']).strip())
|
||||
|
||||
if chapter_range != "All":
|
||||
# -1 to shift the episode number accordingly to the INDEX of it. List starts from 0 xD!
|
||||
starting = int(str(chapter_range).split("-")[0]) - 1
|
||||
|
||||
if (str(chapter_range).split("-")[1]).decode().isdecimal():
|
||||
ending = int(str(chapter_range).split("-")[1])
|
||||
else:
|
||||
ending = len(all_links)
|
||||
|
||||
indexes = [x for x in range(starting, ending)]
|
||||
# [::-1] in sub_list in beginning to start this from the 1st episode and at the last,
|
||||
# it is to reverse the list again, because I'm reverting it again at the end.
|
||||
all_links = [all_links[::-1][x] for x in indexes][::-1]
|
||||
else:
|
||||
all_links = all_links
|
||||
|
||||
if str(sorting).lower() in ['new', 'desc', 'descending', 'latest']:
|
||||
for chap_link in all_links:
|
||||
self.single_chapter(comic_url=chap_link, download_directory=download_directory, conversion=conversion,
|
||||
delete_files=delete_files, session_cookies=session_cookie)
|
||||
|
||||
elif str(sorting).lower() in ['old', 'asc', 'ascending', 'oldest', 'a']:
|
||||
for chap_link in all_links[::-1]:
|
||||
self.single_chapter(comic_url=chap_link, download_directory=download_directory, conversion=conversion,
|
||||
delete_files=delete_files, session_cookies=session_cookie)
|
||||
|
||||
print("Finished Downloading")
|
||||
return 0
|
|
@ -66,4 +66,5 @@
|
|||
- Added MangaFox.la (mangafox.me redirects to .la now) [2017.12.27]
|
||||
- Added Feature to Search and Download Manga from MangaEden [2017.12.28]
|
||||
- Fix for #64 [2017.12.28]
|
||||
- Fix for #62 [2017.12.29]
|
||||
- Fix for #62 [2017.12.29]
|
||||
- Added Support for [Bato.to](http://bato.to/) [2017.12.31] [No PhantomJS Needed Now]
|
|
@ -1,14 +1,11 @@
|
|||
#List of Supported Websites
|
||||
# List of Supported Websites
|
||||
|
||||
[PhantomJS] = Denotes that these sites need PhantomJS to be able to download content.
|
||||
|
||||
* [Mangafox.me](http://mangafox.me/) or [Mangafox.la](http://mangafox.la/)
|
||||
* [YoManga](http://yomanga.co/)
|
||||
* [GoManga](http://gomanga.co/)
|
||||
|
||||
~~* [Batoto](http://bato.to/) [PhantomJS]~~ [Under Development]
|
||||
~~* [Kissmanga](http://kissmanga.com/)~~ [Under Development]
|
||||
|
||||
* [Batoto](http://bato.to/)
|
||||
* [Comic Naver](http://comic.naver.com/index.nhn)
|
||||
* [Readcomiconline.to](http://readcomiconline.to/)
|
||||
* [mangahere.co](http://mangahere.co/)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[![N|Solid](https://raw.githubusercontent.com/Xonshiz/comic-dl/master/Images/Icon.png)](https://github.com/Xonshiz/comic-dl)
|
||||
# Comic-DL | [![Build Status](https://travis-ci.org/Xonshiz/comic-dl.svg?branch=master)](https://travis-ci.org/Xonshiz/comic-dl) [![Documentation Status](https://readthedocs.org/projects/comic-dl/badge/?version=latest)](http://comic-dl.readthedocs.io/en/latest/?badge=latest) | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/xonshiz)
|
||||
# Comic-DL | [![Build Status](https://travis-ci.org/Xonshiz/comic-dl.svg?branch=master)](https://travis-ci.org/Xonshiz/comic-dl) [![Documentation Status](https://readthedocs.org/projects/comic-dl/badge/?version=latest)](http://comic-dl.readthedocs.io/en/latest/?badge=latest) | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/xonshiz) | [![GitHub release](https://img.shields.io/github/release/xonshiz/comic-dl.svg?style=flat-square)](https://github.com/xonshiz/comic-dl/releases/latest) | [![Github All Releases](https://img.shields.io/github/downloads/xonshiz/comic-dl/total.svg?style=flat-square)](https://github.com/xonshiz/comic-dl/releases)
|
||||
|
||||
Comic-dl is a command line tool to download Comics and Manga from various Manga and Comic sites easily. You can search Manga from this tool as well. Idea from [youtube-dl](https://github.com/rg3/youtube-dl)
|
||||
|
||||
|
@ -19,6 +19,7 @@ Comic-dl is a command line tool to download Comics and Manga from various Manga
|
|||
* [Python Support](#python-support)
|
||||
* [Windows Binary](#windows-binary)
|
||||
* [List of Arguments](#list-of-arguments)
|
||||
* [Language Codes](#language-codes)
|
||||
* [Using The Search](#using-the-search)
|
||||
* [Youtube Tutorial](https://www.youtube.com/watch?v=TmQYhLHEZxA)
|
||||
* [Usage](#usage)
|
||||
|
@ -157,6 +158,45 @@ Currently, the script supports these arguments :
|
|||
-fd, --force-download Forces download of chapters, when using comic-dl's search function.
|
||||
-pid, --page-id Takes the Page ID to download a particular "chapter number" of a manga.
|
||||
```
|
||||
|
||||
## Language Codes:
|
||||
These codes correspond to the languages. So, just pass in these language codes, to download Manga/Comic in that language (only supported by few sites).
|
||||
|
||||
Language Code --> Language
|
||||
--------------------------
|
||||
```
|
||||
0 --> English
|
||||
1 --> Italian
|
||||
2 --> Spanish
|
||||
3 --> French
|
||||
4 --> German
|
||||
5 --> Portuguese
|
||||
6 --> Turkish
|
||||
7 --> Indonesian
|
||||
8 --> Greek
|
||||
9 --> Filipino
|
||||
10 --> Polish
|
||||
11 --> Thai
|
||||
12 --> Malay
|
||||
13 --> Hungarian
|
||||
14 --> Romanian
|
||||
15 --> Arabic
|
||||
16 --> Hebrew
|
||||
17 --> Russian
|
||||
18 --> Vietnamese
|
||||
19 --> Dutch
|
||||
20 --> Bengali
|
||||
21 --> Persian
|
||||
22 --> Czech
|
||||
23 --> Brazilian
|
||||
24 --> Bulgarian
|
||||
25 --> Danish
|
||||
26 --> Esperanto
|
||||
27 --> Swedish
|
||||
28 --> Lithuanian
|
||||
29 --> Other
|
||||
```
|
||||
|
||||
#### Note :
|
||||
1.) Some websites like bato.to don't let you view some pages if you're not logged in. You'll have to create an account and pass the login information to the script via `-p` and `-u` arguments.
|
||||
|
||||
|
@ -309,7 +349,13 @@ If you're here to make suggestions, please follow the basic syntax to post a req
|
|||
This should be enough, but it'll be great if you can add more ;)
|
||||
|
||||
# Notes
|
||||
comic.naver.com has korean characters and some OS won't handle those characters. So, instead of naming the file folder with the series name in korean, the script will download and name the folder with the comic's ID instead.
|
||||
* comic.naver.com has korean characters and some OS won't handle those characters. So, instead of naming the file folder with the series name in korean, the script will download and name the folder with the comic's ID instead.
|
||||
|
||||
* Bato.to requires you to "log in" to read some chapters. So, to be on a safe side, provide the username/password combination to the script via "-p" and "-u" arguments.
|
||||
|
||||
* Bato.to also has comics for various languages. You need to pass the language code via "-ml" argument. Read the [Language Codes](#language-codes) section to find out the language codes.
|
||||
|
||||
* Bato.to only supports custom language downloads in "Batch" mode.
|
||||
|
||||
# Donations
|
||||
You can always send some money over from this :
|
||||
|
|
Loading…
Reference in New Issue