Git Product home page Git Product logo

xonshiz / comic-dl Goto Github PK

View Code? Open in Web Editor NEW
529.0 28.0 70.0 59.89 MB

Comic-dl is a command line tool to download manga and comics from various comic and manga sites. Supported sites : readcomiconline.to, mangafox.me, comic naver and many more.

Home Page: https://github.com/Xonshiz/comic-dl

License: MIT License

Python 99.08% Batchfile 0.03% Dockerfile 0.47% Shell 0.42%
phantomjs python-support manga debian youtube-dl python-script comics web scraping scrapping

comic-dl's Introduction

N|Solid

Comic-DL

GitHub release | Github All Releases | Donate

Service Status
PyPI Distribution PyPI
Releases Build Building & Creating Distributables
Docker Build GitHub Workflow Status
Readthedocs Build Documentation Status

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.

If you're looking for an application, or a UI for this, please move to : CoManga

Don't overuse this script. Support the developers of those websites by disabling your adblock on their site. Advertisements pay for the website servers.

Table of Content

Supported Websites

You can check the list of supported websites HERE.

Dependencies Installation

This script can run on multiple Operating Systems. You need Node.js in your system's path for this script to work (You need this on each and every Operating System, even on WINDOWS :/). Download the Node.Js from Node.js official website. Doesn't matter which operating system you're on, this is a must. Follow the instructions mentioned below, according to your OS.

Linux/Debian :

Since most (if not all) Linux/Debian OS come with python pre-installed, you don't have to install python manually. Make sure you're using python >= 2.7.x though.

We need pip to install any external dependency(ies). So, open any terminal and type in pip list and if it shows some data, then it is fine. But, if it shows error, like pip not found or something along this line, then you need to install pip. Just type this command in terminal :

sudo apt-get install python-pip

If you're on Fedora, CentOS/RHEL, openSUSE, Arch Linux, then you simply need to follow THIS TUTORIAL to install pip.

If this still doesn't work, then you'll manually need to install pip. Doing so is an easy one time job, and you can follow THIS TUTORIAL to do so.

Windows :

If you're on Windows, then it is recommended to download the windows binary for this script. If you use the windows binary, you don't need to install anything, except Node.js. But, if for some weird reason you want to use Python script instead, then follow these steps :

  • Install Python > 2.7.6. Download the desired installer from here.
  • Add it in the system path (if not already added).
  • If you're using python >2.7.9, you don't need to install PIP. However, if you don't have pip installed and added in windows path, then do so by following this little tutorial.
  • Download this text file and put it in some directory/folder.
  • Open Command Prompt and browse to the directory where you downloaded your requirements.txt file and run this command :
pip install -r requirements.txt
  • It should install the required external libraries.

Now, install Node.Js as well and make sure it's in your path.

Well, if everything came up good without any error(s), then you're good to go!

Mac OS X :

Mac OS X users will have to fetch their version of Python and Pip.

After downloading and installing these, you need to add PIP & Python in your path. Follow THIS LITTLE GUIDE to install both, Python & pip successfully.

Installation

After installing and setting up all the dependencies in your Operating System, you're good to go and use this script. The instructions for all the OS would remain same. Download THIS REPOSITORY and put it somewhere in your system. Move over to the comic_dl folder.

Windows users, it's better to not place it places where it requires administrator privileges. Good example would be C:\Windows. This goes for both, the Python script and the windows binary file (.exe).

Linux/Debian users make sure that this script is executable. Just run this command, if you run into problem(s) :

chmod +x cli.py

and then, execute with this :

./cli.py

Docker

With docker, you can get the whole dependencies enclosed in a container and use the comic_dl from your system.

You need an up and running Docker client running, follow the Docker Documentation.

Docker images are available here

Define a handy alias on your system with some docker tricks. This mounts the local directory under /directory in the container. This works on *NIX systems, and also under Windows Linux subsystem.

You can change the value of PGID and PUID with the value for the user needed in your download directory.

alias comic_dl="docker run -it --rm -e PGID=$(id -g) -e PUID=$(id -u) -v $(pwd):/directory:rw -w /directory ghcr.io/xonshiz/comic-dl:latest comic_dl -dd /directory"

Run it on your system. This actually starts a container on request and stop&delete it when finished.

usage: comicdl [-h] [--version] [-s SORTING] [-a] [-c]
               [-dd DOWNLOAD_DIRECTORY] [-rn RANGE] [--convert CONVERT]
               [--keep KEEP] [--quality QUALITY] [-i INPUT] [--comic]
               [-comic-search SEARCH_COMIC] [-comic-info COMIC_INFO]
               [--update UPDATE] [--print-index]
               [-ml MANGA_LANGUAGE] [-sc SKIP_CACHE] 
               [-p PASSWORD] [-u USERNAME] [-v]
[...]

Python Support

This script supports python 3. You can run this on python 2 as well, as long as you have all the dependencies installed.

Windows Binary

It is recommended that Windows users use this binary to save both, your head and time from installing all the dependencies.

You need to download and install Node.js and make sure it is in your Windows path (watch out for the tick box during install).

If you already have it, then you can download this binary and start using the script right off the bat :

NOTE: This is a COMMAND LINE TOOL and will NOT work when you double-click it. So, download this .exe file and put it in some folder (Not in windows or some other restricted folder) and then hold down SHIFT KEY and right click anywhere on the screen and select "Open Command Window here". It'll open a CMD window for you. Now, you need to execute it and pass arguments to it like:

comic_dl.exe -i "https://readcomicsonline.ru/comic/irredeemable-omnibus-2012"

Read which argument does what in List of Arguments section.

List of Arguments

Currently, the script supports these arguments :

-h, --help                             Prints the basic help menu of the script and exits.
-i,--input                             Defines the input link to the comic/manga.
--print-index                          Prints the range index for links in the input URL
-V,--version                           Prints the VERSION and exits.
-u,--username                          Indicates username for a website.
-p,--password                          Indicates password for a website.
-v,--verbose                           Enables Verbose logging.
--sorting							   Sorts the download order.(VALUES = asc, ascending,old,new,desc,descending,latest,new)
-a, --auto                             Download new chapters automatically (needs config file!)
-c, --config                           Generates config file for autodownload function
-dd,--download-directory               Specifies custom download location for the comics/manga.
-rn,--range                            Selects the range of Chapters to download (Default = All) [ Ex : --range 1-10 (This will download first 10 episodes of a series)]
--convert						       Tells the script to convert the downloaded Images to PDF or anything else. (Supported Values : pdf, cbz) (Default : No) [By default, script will not convert anything.]
--keep   							   Tells the script whether to keep the files after conversion or not. (Supported : No, False) (Default : Yes/True) [By default, images will be kept even after conversion.]
--quality   						   Tells the script about the image quality you want to download. (Supported Values : low/bad/worst/mobile/cancer) [By default, images will be downloaded in Highest Quality Available. No need to provide any option.]
-ml, --manga-language                  Selects the language for manga. 0 is English (Default) and 1 is Italian.
-sc, --skip-cache                      Forces to skip cache checking.
--comic                                Add this after -i if you are inputting a comic id or the EXACT comic name.
                                       [ Ex : -i "Deadpool Classic" --comic ]
-comic-search, --search-comic          Searches for a comic through the scraped data from ReadComicOnline.li
                                       [ Ex : -comic-search "Deadpool" ]
-comic-info, --comic-info              Lists all the information about the given comic (argument can be either comic id or the exact comic name).
                                       [ Ex : -comic-info "Deadpool Classic" ] or [ Ex : -comic-info 3865 ]
--update                               Updates the comic database for the given argument.
                                       [ Ex: --update "Deadpool Classic" ] or [ Ex: --update "https://readcomiconline.li/Comic/Deadpool-Classic" ]
-cookie, --cookie                      Passes a cookie to be used throughout the session.

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.
  2. Since omgbeaupeep is uh... well, you just need to pass the absolute chapter numbers in the range section for that. For eg : Check out Richie Rich. If you want to download first 600 episodes, you would pass : --range 001-600. Just check the URLs for those chapters and pass accordingly.

Usage

With this script, you have to pass arguments in order to be able to download anything. Passing arguments in a script is pretty easy. Since the script is pretty basic, it doesn't have too many arguments. Go check the ARGUMENTS SECTION to know more about which arguments the script offers.

Follow the instructions according to your OS :

Windows

After you've saved this script in a directory/folder, you need to open command prompt and browse to that directory and then execute the script. Let's do it step by step :

  • Open the folder where you've downloaded the files of this repository.
  • Hold down the SHIFT key and while holding down the SHIFT key, RIGHT CLICK and select Open Command Prompt Here from the options that show up.
  • Now, in the command prompt, type this :

If you're using the windows binary :

comic_dl.exe -i <URL TO THE COMIC>

If you're using the Python Script :

__main__.py -i <URL TO THE COMIC>

URL can be any URL of the supported websites.

Linux/Debian

After you've saved this script in a directory/folder, you need to open command prompt and browse to that directory and then execute the script. Let's do it step by step :

  • Open a terminal, Ctrl + Alt + T is the shortcut to do so (if you didn't know).
  • Now, change the current working directory of the terminal to the one where you've downloaded this repository.
  • Now, in the Terminal, type this :

__main__.py -i <URL TO THE COMIC>

URL can be any URL of the supported websites.

Auto Download

You can auto-download the new chapters of your favorite comics by creating a config file in json format.

To generate the config file run the command below and follow the instructions

python __main__.py --config

or with the binary

comic_dl.exe --config

This commands supports the creation of the config file, the addition and remove of series and the edition of the common download configuration.

Once the config file is generated you can download automatically the new chapters available for your selected comics by running the command bellow. The command will automatically update the config file to the latest chapter downloaded, so in the next run it'll download just the new ones.

python __main__.py --auto

or with the binary

comic_dl.exe --auto

Note: It's not necessary to keep the comic files to download the next chapters.

Features

This is a very basic and small script, so at the moment it only has a few features.

  • Downloads a Single Chapter and puts in a directory with the comic name, volume and chapter.
  • Downloads all the chapters available for a series.
  • Skip if the file has already been downloaded.
  • Show human-readable error(s) in most places.

Changelog

You can check the changelog HERE.

Opening An Issue/Requesting A Site

If you're planning to open an issue for the script or ask for a new feature or anything that requires opening an Issue, then please do keep these things in mind.

Reporting Issues

If you're going to report an issue, then please run the script again with the "-v or --verbose" argument. It should generate a file in the same directory, with the name "Error Log.log". Copy that log file's data and post it on a Gist and share that gist's link while reporting the issue here. Make sure you EDIT OUT YOUR USERNAME AND PASSWORD, if supplied within the command.

If you don't include the verbose log, there are chances it'll take time to fix the issue(s) you're having. Please follow this syntax :

Command You Gave : What was the command that you used to invoke the script?

Expected Behaviour : After giving the above command, what did you expect should've happened?

Actual Behaviour : What actually happened?

Link To Gist : As mentioned earlier, post the error log in a gist and share that link here.

P.S : Just attaching a screenshot will NOT tell or anyone else what happened behind the scenes. So, Error Log is mandatory.

Suggesting A Feature

If you're here to make suggestions, please follow the basic syntax to post a request :

Subject : Something that briefly tells us about the feature.

Long Explanation : Describe in details what you want and how you want.

This should be enough, but it'll be great if you can add more ;)

Notes

  • Readcomiconline.li has been a pain to work with, and it might block you out a lot. Now you can use --cookie parameter to pass a working cookie. You can retrieve the cookie by checking network tab for Cookie value in request headers or by using an external browser plugin. Read more about this on #299.

  • 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 section to find out the language codes.

  • Bato.to only supports custom language downloads in "Batch" mode.

  • URLs with special characters are tricky to work with, because of "Character Encoding". If you wish to download such a comic/manga, you will need to use Python 3 (If on python) and also, you need to set your terminal's character encoding to "utf-8" or "latin-1". #95 is the same issue.

Donations

You can always send some money over from this :

Paypal : Donate

Patreon Link : https://www.patreon.com/xonshiz

Any amount is appreciated :)

comic-dl's People

Contributors

acgonzales avatar adam-da-average avatar arkie avatar darodi avatar davidfarrell avatar dsanchezseco avatar edimusxero avatar edolstra avatar flo333 avatar giovanh avatar jaiakt avatar kidpixo avatar next-davidsanchez-seco avatar oedm avatar professorjamesmoriarty avatar stefanulbrich avatar suspence00 avatar tyroc avatar xonshiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

comic-dl's Issues

Unable to run script

I am sorry I have no verbose output, but the script refuses to run at all. I followed the installation guide with no errors, but at the final step it does not work:

maximilian@PerfectServer:~/scripts/comic-dl-master/comic_dl$ ./comic_dl.py --verbose Traceback (most recent call last): File "./comic_dl.py", line 10, in <module> from honcho import url_checker File "/home/maximilian/scripts/comic-dl-master/comic_dl/honcho.py", line 12, in <module> from future import standard_library ImportError: No module named future

Python version is 2.7.12
PhantomJS version is 2.1.1
Linux version is 16.04.4 server

The script has execute permissions and all the files seem to have downloaded correctly.

Download Location

When giving download location as argument it gives error:
I need an Input URL to download from.

Broken Install?

Tried installing on both Debian and Mac, without success. (and with python 2.7. and 3.6, using pyenv)
Setup seems broken, could never get things to work, ie CLI wasn't ever responsive...

Original image resolution

I've noticed that the .jpg images generated from readcomiconline are of a lower resolution compared to simply right-clicking as "saving as", is there a component of comic-dl which is responsible for this compression, and is it possible to disable this...?

Error / no result with readcomiconline.to

I always get an error message when trying to download from above mentioned site. Attached is a gist with the error-log and the lines from the script while running.

  • Browsing the site just to read works as usual
  • I tried the old download script "readcomiconline downloader" - this one does work.
  • Seems it does have something to do with something "cloudflare-scrape" - I tried to look into it but usage seems to be more targeted at Linux system? (An is far above what I am capable of anyway)

Gist

Thank you for looking into this :)

Rob

Using ranges on readcomiconline.to

I wanted to tell you how much I love your script. I couldn't figure out how to get the Mac app up and running, but I did get the python script going on my Mac. I was able to successfully use ranges on omgbeaupeep, but not on readcomiconline. The URLs on that site are a bit more complex, so maybe it's not possible, but I'm just wondering if you know a trick to format the ranges properly to make them work for readcomiconline.

windows binary naming

The binary is named comic_dl.exe but in the readme it gives the command as comic-dl.exe -i <URL TO THE COMIC> which won't work due to the different names. This could cause some confusion so I suggest renaming the binary to comic-dl.exe to make it consistent.

Very short timeouts?

Downloading seems to break after a while, which can happen due to captcha's or whatever. Usually, I just resume, but this gives an error within the first few images: can't connect to server (503). It does detect that the images are already downloaded, and after running it again on a different comic, I got the same error after a while. Deleting the downloaded files and restarting gave the same behavior, but at different moments. However, when running it without partially downloaded comics, it keeps downloading for a couple of minutes, while it throws the error in seconds if there are files present.

I suspect that there are some very short timeouts that set the server off, but I'm not sure. Would it be possible to look into this? Incidentally, speed is not really an issue; i accumulate several comics, and then use a batch file to make it download the whole list every once in a while.

EDIT: added log below
DEBUG: Arguments Provided : Namespace(input=['http://mangafox.me/manga/shingeki_no_kyojin/'], sorting=None, verbose=True, version=False) DEBUG: Operating System : Windows - 10 - 10.0.15063 DEBUG: Python Version : 2.7.13 (32bit) DEBUG: Comic Url : http://mangafox.me/manga/shingeki_no_kyojin/ DEBUG: Selected Domain : mangafox.me DEBUG: Starting new HTTP connection (1): mangafox.me DEBUG: http://mangafox.me:80 "GET /manga/shingeki_no_kyojin/ HTTP/1.1" 200 None DEBUG: All Links : ['http://mangafox.me/manga/shingeki_no_kyojin/vTBD/c091/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v22/c090/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v22/c089/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v22/c088/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v22/c087/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v21/c086/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v21/c085/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v21/c084/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v21/c083/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v20/c082/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v20/c081/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v20/c080/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v20/c079/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v19/c078/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v19/c077/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v19/c076/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v19/c075/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v18/c074/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v18/c073/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v18/c072/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v18/c071/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v17/c070/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v17/c069/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v17/c068/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v17/c067/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v16/c066/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v16/c065/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v16/c064/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v16/c063/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v15/c062/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v15/c061/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v15/c060/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v15/c059/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v14/c058/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v14/c057/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v14/c056/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v14/c055/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v13/c054/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v13/c053/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v13/c052/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v13/c051.1/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v13/c051/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v12/c050.1/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v12/c050/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v12/c049/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v12/c048/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v12/c047/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v11/c046/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v11/c045/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v11/c044/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v11/c043/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v10/c042/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v10/c041/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v10/c040/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v10/c039/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v09/c038/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v09/c037/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v09/c036/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v09/c035/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v08/c034/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v08/c033/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v08/c032/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v08/c031/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v07/c030/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v07/c029/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v07/c028/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v07/c027/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v06/c026/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v06/c025/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v06/c024/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v06/c023/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v05/c022/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v05/c021/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v05/c020/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v05/c019/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v05/c018.5/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v04/c018/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v04/c017/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v04/c016/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v04/c015/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v04/c014/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v03/c013/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v03/c012/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v03/c011/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v03/c010/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v03/c009.5/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v01/c001.5/1.html', 'http://mangafox.me/manga/shingeki_no_kyojin/v00/c000/1.html'] DEBUG: Starting new HTTP connection (1): mangafox.me DEBUG: http://mangafox.me:80 "GET /manga/shingeki_no_kyojin/v00/c000/1.html HTTP/1.1" 200 None DEBUG: Chapter Url : http://mangafox.me/manga/shingeki_no_kyojin/v00/c000/1.html DEBUG: Starting new HTTP connection (1): mangafox.me DEBUG: http://mangafox.me:80 "GET /manga/shingeki_no_kyojin/v00/c000/1.html HTTP/1.1" 200 None DEBUG: Image Link : http://h.mfcdn.net/store/manga/9011/00-000.0/compressed/v001.jpg?token=c8bff0d0ab362d538db02be3ac99aeaa&ttl=1497805200 DEBUG: File Check Path : D:\com\Shingeki No Kyojin\000/01.jpg DEBUG: Download File Name : 01.jpg DEBUG: Chapter Url : http://mangafox.me/manga/shingeki_no_kyojin/v00/c000/2.html DEBUG: Starting new HTTP connection (1): mangafox.me DEBUG: http://mangafox.me:80 "GET /manga/shingeki_no_kyojin/v00/c000/2.html HTTP/1.1" 200 None DEBUG: Image Link : http://h.mfcdn.net/store/manga/9011/00-000.0/compressed/v002.jpg?token=1c9937909c99116367e849ebd36284fd&ttl=1497798000 DEBUG: File Check Path : D:\com\Shingeki No Kyojin\000/02.jpg DEBUG: Download File Name : 02.jpg DEBUG: Chapter Url : http://mangafox.me/manga/shingeki_no_kyojin/v00/c000/3.html DEBUG: Starting new HTTP connection (1): mangafox.me DEBUG: http://mangafox.me:80 "GET /manga/shingeki_no_kyojin/v00/c000/3.html HTTP/1.1" 503 608

readcomiconline.to not working

The following site wasn't working in v2017.09.21: http://readcomiconline.to
Here is the command I used to download "Watchmen"

comic_dl.exe -i "http://readcomiconline.to/Comic/Watchmen/Issue-2?id=14880&quality=hq" -v

Here is the error_log file:

DEBUG: Arguments Provided : Namespace(convert=None, download_directory=None, input=['http://readcomiconline.to/Comic/Watchmen/Issue-2?id=14880&quality=hq'], keep='True', quality='True', range='All', sorting=None, verbose=True, version=False)
DEBUG: Operating System : Windows - 10 - 10.0.15063
DEBUG: Python Version : 2.7.13 (32bit)
DEBUG: Comic Url : http://readcomiconline.to/Comic/Watchmen/Issue-2?id=14880&quality=hq
DEBUG: Selected Domain : readcomiconline.to
DEBUG: Starting new HTTP connection (1): readcomiconline.to
DEBUG: http://readcomiconline.to:80 "GET /Comic/Watchmen/Issue-2?id=14880&quality=hq HTTP/1.1" 503 None
DEBUG: Resetting dropped connection: readcomiconline.to
DEBUG: http://readcomiconline.to:80 "GET /cdn-cgi/l/chk_jschl?jschl_answer=5262&jschl_vc=74df9b5ac34f304ba6182c65f1ffd429&pass=1506195036.605-mHvuY%2FgWuW HTTP/1.1" 302 165
DEBUG: http://readcomiconline.to:80 "GET /Comic/Watchmen/Issue-2?id=14880&quality=hq HTTP/1.1" 200 None
DEBUG: All Links : []

Here is the output on the console:

***Starting the script in Verbose Mode***

Finished Downloading
Total Time Taken To Complete : 6.33700013161

However, nothing was downloaded.

With an older version of the script (on my other computer, not sure which version, is there a way I can find out from the tool itself?) I would use the same command, and each page would show separate download bars on the console. I recently tried that older copy, and it still worked.

I tried using the '--quality high' flags, removing the quotes from URL, removing the "http://", and removing the parameters ?id=14880&quality=hq HTTP/1.1 from the URL. Nothing fixed it.

Is there anything I am doing wrong with the current version?

Thanks

Conversion fails on Mac/Linux

Conversion in Mac/Linux to cbz fails as the operations on the routes(on conversion and on clean up) are set with the \\ of windows instead of /

add leading zeros

I use comicrack for reading the downloaded comics, and I have a batch script that packs the folders into cb7 files. Because Comicrack is stupid with the numbering, I need to add leading zeros to the filenames.

Would this be possible?

[Feature-Request] Genration of the PDF file from the images

Comic-dl download the different images of the comic from the respective supported site and store in the respective location in the user 's computer. It will great to make a PDF of the images downloaded as it will be more easier and more convenient to read the comic by this ways.

How to change download location?

Hi! (Love the app and the Readme, very easy to follow!)
I've got about 4 HDD's on my PC and a Raided NAS that I'm using for storage.
Currently, the script is stored and running on my G:/ (full path "G:\Downloads\Comic_dl\comic-dl.exe")

When it completes successfully it initially downloads the .jpg files to C:/, then organizes them into C:%Comic name%%Comic number%\

Anyway that I can change both the initial download location AND the final storage location?
I'd love to be able to point this at my NAS (or mounted folder location), and have this script skip my SSD (C:) entirely.

i need help

Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>cd C:\Users\marlo\Desktop\stuff\comic dl\comic-dl-master\comic-dl-master

C:\Users\marlo\Desktop\stuff\comic dl\comic-dl-master\comic-dl-master>setup.py install
C:\Users\marlo\AppData\Local\Programs\Python\Python36-32\lib\distutils\dist.py:261: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
running install
running build
running build_py
creating build
creating build\lib
creating build\lib\comic_dl
copying comic_dl\comic_dl.py -> build\lib\comic_dl
copying comic_dl\exeMaker.py -> build\lib\comic_dl
copying comic_dl\globalFunctions.py -> build\lib\comic_dl
copying comic_dl\honcho.py -> build\lib\comic_dl
copying comic_dl_init_.py -> build\lib\comic_dl
copying comic_dl_main_.py -> build\lib\comic_dl
copying comic_dl_version_.py -> build\lib\comic_dl
creating build\lib\comic_dl\sites
copying comic_dl\sites\acQQ.py -> build\lib\comic_dl\sites
copying comic_dl\sites\comicNaver.py -> build\lib\comic_dl\sites
copying comic_dl\sites\foolSlide.py -> build\lib\comic_dl\sites
copying comic_dl\sites\kissmanga.py -> build\lib\comic_dl\sites
copying comic_dl\sites\mangaFox.py -> build\lib\comic_dl\sites
copying comic_dl\sites\mangaHere.py -> build\lib\comic_dl\sites
copying comic_dl\sites\omgBeauPeep.py -> build\lib\comic_dl\sites
copying comic_dl\sites\rawSenManga.py -> build\lib\comic_dl\sites
copying comic_dl\sites\readcomicOnlineto.py -> build\lib\comic_dl\sites
copying comic_dl\sites_init_.py -> build\lib\comic_dl\sites
error: package directory 'comic_dl\downloader' does not exist

C:\Users\marlo\Desktop\stuff\comic dl\comic-dl-master\comic-dl-master>setup2.py install
Traceback (most recent call last):
File "C:\Users\marlo\Desktop\stuff\comic dl\comic-dl-master\comic-dl-master\setup2.py", line 6, in
import comic_dl
File "C:\Users\marlo\Desktop\stuff\comic dl\comic-dl-master\comic-dl-master\comic_dl_init_.py", line 5, in
import comic_dl
File "C:\Users\marlo\Desktop\stuff\comic dl\comic-dl-master\comic-dl-master\comic_dl\comic_dl.py", line 9, in
import honcho
File "C:\Users\marlo\Desktop\stuff\comic dl\comic-dl-master\comic-dl-master\comic_dl\honcho.py", line 9, in
from sites import foolSlide
File "C:\Users\marlo\Desktop\stuff\comic dl\comic-dl-master\comic-dl-master\comic_dl\sites\foolSlide.py", line 4, in
import globalFunctions
ImportError: No module named globalFunctions

Kissmanga.py gives error

When trying to download Berserk from Kissmanga (don't like the fact that I have to scroll, so downloading is preferable), I get the following after a couple of successful chapters:

Traceback (most recent call last):
  File "comic_dl\sites\kissmanga.py", line 85, in single_chapter
AttributeError: 'NoneType' object has no attribute 'group'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "comic_dl\comic_dl.py", line 80, in <module>
  File "comic_dl\comic_dl.py", line 76, in main
  File "comic_dl\honcho.py", line 53, in url_checker
  File "comic_dl\sites\kissmanga.py", line 155, in kissmanga_Url_Check
  File "comic_dl\sites\kissmanga.py", line 127, in whole_series
  File "comic_dl\sites\kissmanga.py", line 89, in single_chapter
AttributeError: 'NoneType' object has no attribute 'group'
Failed to execute script comic_dl

ImportError: No module named cfscrape

I followed the tutorial but I end up with this after running ./main.py:

root@debian:/home/user/bin/comic-dl-master/comic_dl# ./main.py
Traceback (most recent call last):
File "./main.py", line 4, in
from comic_dl import ComicDL
File "/home/user/bin/comic-dl-master/comic_dl/comic_dl.py", line 9, in
import honcho
File "/home/user/bin/comic-dl-master/comic_dl/honcho.py", line 9, in
from sites import foolSlide
File "/home/user/bin/comic-dl-master/comic_dl/sites/foolSlide.py", line 4, in
import globalFunctions
File "/home/user/bin/comic-dl-master/comic_dl/globalFunctions.py", line 4, in
import cfscrape
ImportError: No module named cfscrape

Some additional info:
uname -a
Linux debian 3.16.0-4-686-pae #1 SMP Debian 3.16.43-2+deb8u5 (2017-09-19) i686 GNU/Linux

python --version
Python 2.7.9

no errors were reported while installing dependencies.

[Feature Request] Directory of pdf files

Could you please place the pdf files (or .cbz or .epub) in the root directory of the comic and not in the Issue folder.

Eg:
XYZ 2016 Issue-1.pdf
should be in
XYZ 2016/
and not in
XYZ 2016/Issue-1/

Looks better that way.
Thanks in advance.

The script says the name of the comic but it doesn't download it

Good morning/afternoon/evening,
The script used to work very well. But after exactly 100 comics downloaded, it just stopped working.

Now, when I try to download a comic, the script shows the name of the comic (as it does normally before it starts downlading it), but in my case, after it shows the name, it just acts as it finished downloading it and says "Total time taken ....".

cmd_2017-06-30_13-48-07

At first I thought I'd had to wait, that the site blocked the connection because of too many requests, but after 12 hours it is still not working. I don't know if I should wait more, but I would think 12 hours would be more than sufficient.

Sory bade englich

Can't download Windows binary

First off, thanks for creating these great tools. The ReadComicOnline Downloader was working great until the CAPTCHA was introduced (at least that seems to be the problem, judging by the screenshot). So I wanted to switch to comic-dl to see if that issue might have been resolved in this project. However, I can't seem to download the Windows binary (the latest one or any of the older versions). It takes a while to connect and then the connection just times out.

Do you have any idea what might be causing this issue? Or is there another source available for the Windows binary?

Update: managed to download the exe :) Seems something was fixed. Closing this issue.

Empty Folders

Hi! I've been trying to download a series that has 100+ parts from readcomiconline.to. It was working pretty great, but after Issue #7, I encountered an error saying that the remote server terminated the connection (I'm paraphrasing).

I went back to the page and refreshed it, after which I encountered a human verification captcha. After getting past that screen, I tried downloading again, and now, all I'm getting are empty folders.

Is there anything I can do to fix this? Thanks in advance!

Latest Windows Binary reports "EnvironmentError, Missing Node.js runtime"

Debug:
DEBUG: Arguments Provided : Namespace(convert='None', download_directory=None, input=['http://readcomiconline.to/Comic/Guardians-of-the-Galaxy-2015'], keep='True', range=['1-19'], sorting=None, verbose=True, version=False)
DEBUG: Operating System : Windows - 10 - 10.0.14393
DEBUG: Python Version : 2.7.13 (32bit)
DEBUG: Comic Url : http://readcomiconline.to/Comic/Guardians-of-the-Galaxy-2015
DEBUG: Selected Domain : readcomiconline.to
DEBUG: Starting new HTTP connection (1): readcomiconline.to
DEBUG: http://readcomiconline.to:80 "GET /Comic/Guardians-of-the-Galaxy-2015 HTTP/1.1" 503 None

CMD responce:
F:\Download\Windows 10\ReadComicOnline Downloader (x64)>comic_dl -i http://readcomiconline.to/Comic/Guardians-of-the-Galaxy-2015
Traceback (most recent call last):
File "comic_dl_main_.py", line 9, in
File "comic_dl\comic_dl.py", line 71, in init
File "comic_dl\honcho.py", line 49, in checker
File "comic_dl\sites\readcomicOnlineto.py", line 30, in init
File "comic_dl\sites\readcomicOnlineto.py", line 73, in full_series
File "comic_dl\globalFunctions.py", line 27, in page_downloader
File "site-packages\requests\sessions.py", line 526, in get
File "site-packages\cfscrape_init_.py", line 47, in request
File "site-packages\cfscrape_init_.py", line 77, in solve_cf_challenge
File "site-packages\cfscrape_init_.py", line 111, in solve_challenge
EnvironmentError: Missing Node.js runtime. Node is required. Please read the cfscrape README's Dependencies section: https://github.com/Anorov/cloudflare-scrape#dependencies.
Failed to execute script main

Command sent to binary:
F:\Download\Windows 10\ReadComicOnline Downloader (x64)>comic_dl -rn 1-19 -v -i http://readcomiconline.to/Comic/Guardians-of-the-Galaxy-2015

I tried variations, all say the same error.
Perhaps this build was missing the required node.js?

OS: Windows 10 x64 (All frameworks installed, recommended phantomjs.exe file is in the directory.)
System: Intel corei5 6600k 16Gb RAM.

Question/Request

When using the Windows Binary I right click and "Open command window here" then put in comic_dl.exe -i (site)

Is there a way to write the syntax so that instead of opening command window then comic_dl.exe -i (site), I could instead write everything with the site and click it like an executable? (Purpose? Create an Excel with all the pages I want to use the downloader on, then write the syntax with those pages added in, and click each cell to execute just that page download.)

Request:
A Windows bong sound when finished downloading

A list/log of pages that didn't download (I sometimes get a log when this happens... am I just stupid or does it not specify which pages?)

LOVE Comic_dl! THANK YOU FOR CREATING THIS! :D

Windows Binary Version is not working with Windows Powershell

My new computer has Powershell instead of Command Prompt and whenever I tried to use the command code for the application I end up getting this message.

image

Is there any way to fix this or change Powershell back into Command Prompt without causing any damage to my computer?

Pip install is broken

[nekmo@homura ~]$ sudo pip install comic-dl
The directory '/home/nekmo/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/nekmo/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting comic-dl
  Downloading comic-dl-2016.11.26.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-sy5cfysi/comic-dl/setup.py", line 17, in <module>
        readme = open('ReadMe.md').read()
    FileNotFoundError: [Errno 2] No such file or directory: 'ReadMe.md'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-sy5cfysi/comic-dl/

"Are you human" snag

Hi,
Love this script!

Recently I've encountered a dramatic increase in the script failing due to the human verification on readcomiconline.to.

Example attached.
Error Log.zip

'Failed to execute script'

It would seem that the latest version does not want to start. Using -v it gives me the following in the error log:
DEBUG: You have successfully set the Debugging On. DEBUG: Arguments Provided : Namespace(about=False, input=['http://kissmanga.com/Manga/Gunnm-Kasei-Senki'], password='None', sorting=None, username='None', verbose=True, version=False) DEBUG: Operating System : Windows - 7 - 6.1.7601 DEBUG: Python Version : 3.5.2 (32bit)
And then nothing else.

However, the command window states this:
D:\com>comic_dl.exe -v -i www.kissmanga.com/Manga/Gunnm-Kasei-Senki Traceback (most recent call last): File "comic_dl\comic_dl.py", line 83, in <module> File "comic_dl\comic_dl.py", line 78, in main TypeError: 'NoneType' object is not subscriptable Failed to execute script comic_dl

D:\com>comic_dl.exe -i http://kissmanga.com/Manga/Gunnm-Kasei-Senki Traceback (most recent call last): File "comic_dl\comic_dl.py", line 83, in <module> File "comic_dl\comic_dl.py", line 78, in main TypeError: 'NoneType' object is not subscriptable Failed to execute script comic_dl

Removal of .idea Folder from Repositories

Since the main project does contain the .idea folder which is generated by the IDE used to make the project , it will be great to add .idea in the .gitignore of the Repositories as it is recommended practice to not add the .idea in the main Repositories and to make sure that it is not included by someone else by mistake.

Download Range

Please add the function to download from a specific chapter to the end of a series without having to input an end number. I noticed the script checks if the range I input was correct or not so I figured this feature can be added to the script. Thank you very much for your work.

'readType' is not recognized as an internal or external command?

First time using this so I don't know if I used the arguments correctly.

Command I gave: comic_dl.exe -v -i http://readcomiconline.to/Comic/Batman-2016/Issue-1?id=63467&readType=0 --quality High --convert cbz

Expected behavior: Downloads the images in high quality and converts it into a cbz file.

Actual behavior: Downloaded the images only and then says 'readType' is not recognized as an internal or external command, operable program or batch file.

https://pastebin.com/800eDAU5

Multiple installation troubles

I've tried using the ready-made exe for windows, which gives me a cmd prompt for a few seconds, and then disappears. If I run it in a pre-existing cmd prompt, then it seems to do something for a few seconds, but produces no output and returns control to the user.

So, I set out to use the python script itself. I've already got python, got pip to work properly (initially forgot that there also needs to be a path to c:\python29\scripts), and downloaded phantomjs.exe

using pip on the requirements gives me some output, all seems to be in order. Then I run the python script as is, and nothing happens. Finally, I open it in python, run it, and I get the following output:

Warning (from warnings module): File "C:\Python27\lib\distutils\dist.py", line 267 warnings.warn(msg) UserWarning: Unknown distribution option: 'install_requires'

If I try to run comic_dl.py directly (which shouldn't work, but no harm in trying), I get:
Traceback (most recent call last): File "F:\com\comic-dl-2017.03.06\comic_dl\comic_dl.py", line 10, in <module> from honcho import url_checker File "F:\com\comic-dl-2017.03.06\comic_dl\honcho.py", line 12, in <module> from future import standard_library ImportError: No module named future

Either I'm doing something wrong, or there's something wrong with my setup, or there's something wrong with the script.

Blanks between pulled issues on command prompt

At first, readcomiconline.to worked then eventually got to the point where they just state "issue 1" then blank then "issue 2" and so on in their headers. The folder doesn't show up. I tested both entire series and individual issue links, same thing.

comic site

Dear Xonshiz,

Thank you very much for your script. Is there any possibility to add this site to your script for download comics: http://striputopija.blogspot.si/. It's very nice site with comics from ex-Yugoslavija in which
I was raised in.

Keep up the good work.

Best regards,

Download quality not used

It's seems that is a ctrl+c/v typo -> comic_dl.py line 69

Here's the snippet of code.

[...]
            if not args.convert:
                args.convert = ["None"]
            if not args.keep:
                args.keep = ["True"]
            if not args.keep:
                args.keep = ["Best"]

            start_time = time.time()
[...]

[Error 3] The system cannot find the path specified: '' ?

Command I used: comic_dl.exe -i http://readcomiconline.to/Comic/Batman-2016/Issue-7?id=89390 --convert cbz --keep no

Expected: Downloads the comic and converts it to a cbz file without having to run the command twice

Actual: Downloads the comic, but something happens when creating the cbz file because I think it can't find the folder.

NOTE: This only happens when I download a new comic the first time around. For example, I download a new comic, gives me an error. Run the script again, works fine. I think it's because the folder has already been created from the first time around, which allows the second time to not give the error. I don't know if I'm doing something wrong or if this is a bug.

[EDIT] I guess I should also mention this too. This isn't too important, but in the second time around when using the script it says "Destination path '/[Comic book name].cbz' already exists". Not really an important thing, just wanted to mention it.

https://pastebin.com/mYnkfkpV

image

Issue with Leading zeros.

Initially posted as a comment on #18

First of all thanks for the awesome program.

This still appears to be an issue for me. It is prepending 0 to all of the file names. What should happen is that it add leading zeroes in order to make all file names the same length.

So if in total there are between 10 and 99 images one zero will get added to the number 1-9 so that all image files have 2 characters.
If there are between 100-999 images two zeroes will be added to the number 1-9 and one Zero to the number 10-99 so that all image files have 3 characters.

As it is currently working one zero is added to every image. This is keeping it in the incorrect order as before. An example order tat can be produced now is:

01.jpg
010.jpg
011.jpg
012.jpg
...
019.jpg
02.jpg
020.jpg
...

This is the same out of order issue that happens before the Leading zeros were implemented so if this cant be fixed I feel that it would be better to revert the feature entirely.

If the program does not know the total number of images when it starts you could possibly add a parameter for the number of characters required and leave it up-to the user. Or you could save all of the images and then do a rename Pass once they are all downloaded.

I have made a prototype program in C# that renames the files after they are all saved and creates a .cbz file if you would like to look at what I mean. (currently hardcoded, you would need to compile it or just read the code.)

https://github.com/jaxxa/ComicCreator/blob/master/ComicCreator/Form1.cs

I am using the latest windows binary release.

Here is the Gist, although this is not throwing an error so I dont think that it will be of any help.

https://gist.github.com/jaxxa/555bf9227087460760337ee2b27297ea

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.