Added manga-py source

This commit is contained in:
2019-12-14 22:33:14 -05:00
parent 9a4dd4b09b
commit 45067caea6
420 changed files with 18054 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
function ytc(y) {
var x = "", y = y.split(" ");
for (var i = 0, n = y.length; i < n; i++) x += String.fromCharCode(y[i]);
return x;
}
function kxatz() {
for (i = ytaw.length - 1; i >= 0; i--) {
ytaw[i] = ytc(ytaw[i]);
var obj = $('#imgs .wrap_img:eq(' + i + ') img'), alt = $('#imgs').attr('data-alt');
obj.attr('alt', alt + ' - ' + obj.attr('alt'));
obj.attr('data-src', ytaw[i]);
}
}

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
if [[ "$allow_deploy" = "true" ]]
then
coverage xml
./cc-test-reporter after-build -t coverage.py --exit-code $TRAVIS_TEST_RESULT || true
fi

View File

@@ -0,0 +1,22 @@
from requests import get
from os import system, path
from lxml.html import document_fromstring
_path = path.dirname(path.dirname(path.realpath(__file__)))
all_manga_list = None
n = 0
base_path = 'http://animextremist.com/mangas-online/'
while n < 10:
try:
all_manga_list = document_fromstring(get(base_path)).cssselect('li > a + a')
break
except Exception:
pass
n += 1
for i in all_manga_list:
href = i.get('href')
print('Downloading %s' % href)
_str = 'cd {}; python3 manga.py --cli -i -u {}'
system(_str.format(_path, href))

View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
if [[ "$allow_deploy" = "true" ]]
then
if [[ "$TRAVIS_TAG" != "" ]]
then
echo "Skip build bin package"
# echo "Start build bin package"
# cp helpers/.builder.py .
# cp helpers/.providers_updater.py .
# cp helpers/manga.spec .
# python .providers_updater.py
# pyinstaller manga.spec --log-level CRITICAL -y -F
else
echo "Make gh-pages"
node-sass helpers/gh_pages_content/style.scss helpers/gh_pages_content/style.css --output-style compressed
html-minifier helpers/gh_pages_content/index.html --output helpers/gh_pages_content/index.html --html5 --remove-comments --remove-tag-whitespace --collapse-inline-tag-whitespace --remove-attribute-quotes --collapse-whitespace
html-minifier helpers/gh_pages_content/improvement.html --output helpers/gh_pages_content/improvement.html --html5 --remove-comments --remove-tag-whitespace --collapse-inline-tag-whitespace --remove-attribute-quotes --collapse-whitespace
git add -A
git commit -a -m upd
fi
fi

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
allow_deploy="false"
py_version=$(python --version)
if [[ "${py_version:7:-2}" = "3.5" ]]
then
allow_deploy="true"
fi
if [[ "$TRAVIS_TAG" = "" ]]
then wget 'https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb' -O /tmp/chrome.deb && sudo dpkg -i /tmp/chrome.deb && sudo apt-get install -y -f --fix-missing
fi

View File

@@ -0,0 +1,118 @@
from manga_py.providers import providers_list
from manga_py.fs import root_path
from manga_py.meta import __repo_name__
from json import dumps
from datetime import datetime
start_items = [
# [ address, (0 - not worked, 1 - worked, 2 - alias), 'Comment']
# ['http://bato.to', 0, ' - Batoto will be closing down permanently (Jan 18, 2018)'],
['http://bulumanga.com', 0, ' - Closed'],
['http://bwahahacomics.ru', 0, ' - Very little content. Possibly, will be done in the future.'],
['http://com-x.life', 1, ' - One thread only!!! --no-multi-threads. <i class="v0"></i>'],
['http://comic-walker.com', 0, ' - Maybe...'],
['http://comico.jp', 1, ' - only public downloading now'],
['http://comixology.com', 0, ' - Buy only. Not reading.'],
['http://e-hentai.org', 1, '<i class="td"></i>'],
['http://eatmanga.me', 1, '<i class="v0"></i>'],
['http://dm5.com', 0, '<i class="d"></i>'],
['http://gogomanga.co', 1, '<i class="v0"></i>'],
['http://heavenmanga.biz', 2, '- See heavenmanga.site'],
['http://hentai-chan.me', 1, '- Need fill access file'],
['http://heymanga.me', 1, '<i class="v0"></i>'],
['http://comic.k-manga.jp', 0, ' - Maybe...'],
['http://japscan.com', 2, ' - See japscan.to'],
['http://japscan.cc', 2, ' - See japscan.to'],
['http://lhscans.com', 1, '- See rawlh.com'],
['http://luscious.net', 1, '<i class="td"></i>'],
['http://lezhin.com', 0, ' - Maybe...'],
['http://manga-zone.org', 0, ' - Will not be implemented'],
['http://mangaall.com', 2, '- See mangatrue.com'],
['http://mangaforall.com', 1, ''],
['http://mangafreak.net', 1, '<i class="v0"></i>, site down now'],
['http://mangahead.me', 1, '<i class="v0"></i>, site down now'],
['http://mangaleader.com', 1, '<i class="v0"></i> site down now'],
['http://mangamove.com', 1, '<i class="v0"></i>, site down now'],
['http://manganel.com', 1, '<i class="v0"></i>, site down now'],
['http://mangaroot.com', 1, '<i class="v0"></i>, site down now, one thread only!!! --no-multi-threads'],
['http://mangatail.com', 2, '- See mangatail.me'],
['http://mangatrue.com', 1, ' - Site down now'],
['http://mangaz.com', 0, ' - Maybe...'],
['http://mg-zip.com', 0, ' - Will not be implemented'],
['http://raw-zip.com', 0, ' - Will not be implemented'],
['http://rawdevart.com', 1, '<i class="v0"></i>, very little content'],
['http://s-manga.net', 0, ' - Maybe'],
['http://sunday-webry.com', 0, ' - Not worked decryption images now. In develop.'],
['http://tapas.io', 1, '<i class="v0"></i>, only public downloading now'],
['http://tsumino.com', 1, '<i class="d"></i>'],
['http://zip.raw.im', 0, ' - Will not be implemented'],
['http://rawlh.com', 1, '- See lhscan.net'],
['http://8muses.com', 0, '- Need decode page.'],
['http://mangago.me', 0, '- Need decode page.'],
['http://digitalteam1.altervista.org', 0, ' - Site down now'],
['http://heymanga.me', 0, ' - Site down now'],
['http://lector.dangolinenofansub.com', 0, ' - See kumanga.com'],
['http://lector.ytnofan.com', 0, ' - Site down now'],
['http://leomanga.com', 0, ' - Site down now'],
['http://mang.as', 0, ' - Site down now'],
['http://santosfansub.com', 0, ' - Site down now'],
]
_start_items = [i[0] for i in start_items]
def merge(*providers):
for p in providers:
yield from providers_list[p]
def clean(providers):
_list = {}
for i in providers:
_ = i.find('/')
if not ~_:
_ = i.strip('()')
else:
_ = i[:_].strip('()')
_list['http://' + _.replace(r'\.', '.')] = ''
return list(_list.keys())
def aggregate(providers):
_list = []
for i in providers:
if i not in _start_items:
_list.append([i, 1, ''])
return _list
def prepare_html(html):
with open(html, 'r') as r:
content = r.read()
with open(html, 'w') as w:
content = content.replace('__repo_name__', __repo_name__)
today = datetime.today()
content = content.replace('__last_update__', '{}/{:0>2}/{:0>2} {:0>2}-{:0>2}-{:0>2}'.format(
today.year, today.month, today.day, today.hour, today.minute, today.second
))
w.write(content)
def build_providers():
items = aggregate(clean(merge(*providers_list))) + start_items
items = sorted(items, key=lambda l: l[0])
return dumps(items)
def main():
path = root_path() + '/helpers/gh_pages_content/'
with open(path + 'providers.json', 'w') as w:
w.write(build_providers())
prepare_html(path + 'index.html')
prepare_html(path + 'improvement.html')
# print(len(build_providers()))

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 yuru-yuri
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1 @@
Go to [README.md](https://github.com/manga-py/manga-py/blob/master/README_RU.md)

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig><msapplication><tile><square70x70logo src="./favicon/ms-icon-70x70.png"/><square150x150logo src="./favicon/ms-icon-150x150.png"/><square310x310logo src="./favicon/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>

View File

@@ -0,0 +1,58 @@
((d) => {
d.addEventListener('DOMContentLoaded', () => {
/** global: repoUrl */
if(typeof repoUrl == 'undefined')
{
// example: https://api.github.com/repos/manga-py/manga-py/releases/latest
// example: https://api.github.com/repos/yuru-yuri/manga-py/releases/latest
return;
}
fetch(repoUrl)
.then(r => r.json())
.then((r) => {
const links = d.querySelector('#download-links');
const tar = links.querySelector('.tar');
const zip = links.querySelector('.zip');
tar.setAttribute('href', r.tarball_url);
tar.setAttribute('active', 'true');
zip.setAttribute('href', r.zipball_url);
zip.setAttribute('active', 'true');
});
const ul = d.querySelector('#supported-list');
if(!ul)
{
return;
}
fetch('./providers.json')
.then(r => r.json())
.then((r) => {
let html = '', m = 0, done = 0;
const sites = [];
for(let i in r) {
if (!r.hasOwnProperty(i)) continue;
m+=1;
html += '<li><input id="I' + m + '" type="checkbox" ' +
(r[i][1] ? 'checked="" ' : '') +
'disabled=""><label for="I' + m + '"></label><span>' +
'<a target="_blank" href="' +
r[i][0] + '">' +
r[i][0] + '</a> ' +
r[i][2] + '</span></li>';
done += r[i][1] ? 1 : 0;
r[i][1] && sites.push(r[i][0]);
}
ul.innerHTML = ('<!-- ' + r.length + ' ( ' + done + ' ) -->') + html;
let sitesLen = sites.length;
const buttonElement = document.querySelector('#random-site');
buttonElement.setAttribute('target', '_blank');
buttonElement.addEventListener('click', () => {
const idx = parseInt(Math.random() * sitesLen);
buttonElement.setAttribute('href', sites[idx]);
return true;
});
});
});
})(document);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -0,0 +1,252 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<meta name="keywords" content="manga,manga downloader,download manga,скачать манга,скачать мангу,манга">
<link href="./style.css" media="all" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto&amp;subset=cyrillic-ext,latin-ext" rel="stylesheet">
<title>Universal manga downloader :: Plans for improvement</title>
<link rel="apple-touch-icon" sizes="57x57" href="./favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="./favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="./favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="./favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="./favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="./favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="./favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="./favicon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="./favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="./favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="96x96" href="./favicon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="32x32" href="./favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="./favicon/favicon-16x16.png">
<link rel="manifest" href="./manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="./favicon/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<script>const repoUrl = 'https://api.github.com/repos/__repo_name__/releases/latest';</script>
<script src="download_btns.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<h1 class="panel">Manga downloader</h1>
<h2 class="h2-panel">Plans for improvement</h2>
<div id="download-links" class="download-links">
<a href="https://github.com/__repo_name__/zipball/master">Download .zip</a>
<a href="https://github.com/__repo_name__/tarball/master">Download .tar</a>
</div>
</div>
<ul class="links">
<li>
<a href="https://github.com/__repo_name__/#universal-assistant-download-manga">Documentation</a>
</li>
<li>
<a href="./#resources-list">Resources list</a>
</li>
</ul>
<hr>
<div class="content">
<div class="content-inner-wrapper">
<h4 class="h-ul" data-symbol="1">
Implement providers for the following resources:
</h4>
<ul class="list">
<!--<li>
http://mangabackup.com
</li>
<li>
http://mimotomi.com/manga
</li>
http://tits.asianhotties.me
</li>
<li>
http://mangaboom.com
</li>
<li>
http://eyeonmanga.com
</li>
<li>
http://mg-zip.com
</li>
<li>
http://saikoscans.ml
</li>
<li>
http://mangasmash.com
</li>
<li>
http://maigo.us
</li>
<li>
http://www.friendshipscans.com
http://www.friendshipscans.com/slide/directory/
</li>
<li>
http://www.friendshipscans.com
http://www.friendshipscans.com/slide/directory/
</li>-->
<li>
http://comicride.jp
</li>
<li>
http://exhentai.org
</li>
<li>
http://lhscans.com
</li>
<li>
http://https://imgur.com
<!--http://https://imgur.com/a/f9tpg-->
</li>
<li>
http://mangahost.cc
</li>
<li>
http://manga.madokami.al
<!-- END DAY -->
</li>
<li>
http://3asq.info
</li>
<li>
http://hamtruyen.com
</li>
<li>
http://nettruyen.com
</li>
<li>
http://truyenchon.com
</li>
<li>
http://manga.mexat.com
</li>
<li>
http://hamtruyen.com
</li>
<li>
http://reader.sworddemon-scans.org/directory/
</li>
<li>
http://sworddemon-scans.org
<!--http://sworddemon-scans.org/reader/directory/-->
<!--http://sworddemon-scans.org/knts/directory/-->
</li>
<li>
http://choutensei.260mb.net
<!--http://choutensei.260mb.net/directory/-->
</li>
<!--http://gofansub.net/visor/-->
<!--<li>
http://bmanga.net
&lt;!&ndash;http://bmanga.net/mangas/&ndash;&gt;
</li>-->
<li>
http://yaoimangaonline.com
</li>
</ul>
<h4 class="h-ul" data-symbol="2">Maybe</h4>
<ul>
<li>
http://comic-meteor.jp
</li>
<li>
http://mangaz.com
</li>
<li>
http://comic-polaris.jp
</li>
<li>
http://comic.mag-garden.co.jp
</li>
<li>
http://www.comic-valkyrie.com
</li>
<li>
http://seiga.nicovideo.jp/manga/official/biggangan
</li>
<li>
http://www.alphapolis.co.jp
</li>
<li>
http://urasunday.com/index.html
</li>
<li>
http://comic.naver.com/index.nhn
</li>
<li>
http://comic-walker.com
</li>
<li>
http://lezhin.com
</li>
<li>
http://mangaz.com
</li>
<li>
http://exhentai.org
</li>
<li>
http://gameofscanlation.moe
</li>
<!--<li>
http://kumanga.com
</li>-->
<li>
http://lhtranslation.com
</li>
<li>
http://manga.madokami.al
</li>
<li>
http://corocoro.tv/webmanga/index.html
</li>
<li>
http://s-manga.net
</li>
<li>
http://sunday-webry.com
</li>
<li>
http://lhtranslation.com
</li>
<li>
http://ebookrenta.com
</li>
<li>
http://crunchyroll.com <!-- flash -->
</li>
<li>
http://buenaisla.net - Poor site structure
<!--http://buenaisla.net/temas/categoria-manga-->
</li>
<li>
http://nude-moon.me/
</li>
</ul>
<!--mangadex.com-->
<!--lhtranslation.net-->
<!--https://theporndude.com/ru/hentai-porn-sites - need more sites -->
<h4 class="h-ul" data-symbol="3">
Implement an online resource that allows you to download manga without a PC.
<span class="subcontent"> - Questionable</span>
</h4>
<h4 class="h-ul h-ul-two" data-symbol="3.1">
Perhaps, to make a project on Heroku to implement the previous paragraph.
<span class="subcontent"> - Questionable</span>
</h4>
<h4 class="h-ul" data-symbol="4">
Learn more sites with the ability to read manga online
</h4>
</div>
<div class="last-update">Latest update: __last_update__</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<meta name="keywords" content="manga,manga downloader,download manga,скачать манга,скачать мангу,манга">
<link href="./style.css" media="all" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto&amp;subset=cyrillic-ext,latin-ext" rel="stylesheet">
<title>Universal manga downloader</title>
<link rel="apple-touch-icon" sizes="57x57" href="./favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="./favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="./favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="./favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="./favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="./favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="./favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="./favicon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="./favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="./favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="./favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="./favicon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="./favicon/favicon-16x16.png">
<link rel="manifest" href="./manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="./favicon/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<script>const repoUrl = 'https://api.github.com/repos/__repo_name__/releases/latest';</script>
<script src="download_btns.js"></script>
<style>
i.d {color: #4f0800}i.d:after{content: ' - Debug mode'}
i.td {color: #4f0800}i.d:after{content: ' - Need test. Debug mode'}
i.v0 {color: #005}i.v0:after{content: ' - Version 0.x only'}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1 class="panel">Manga downloader</h1>
<div id="download-links" class="download-links">
<a class="zip" href="https://github.com/__repo_name__/zipball/master">Download .zip</a>
<a class="tar" href="https://github.com/__repo_name__/tarball/master">Download .tar</a>
</div>
</div>
<ul class="links">
<li>
<a href="https://github.com/__repo_name__/#universal-assistant-download-manga">Documentation</a>
</li><li>
<a href="./improvement.html">Plans for improvement</a>
</li><li>
<a href="#random" id="random-site">Go to random site</a>
</li>
</ul>
<hr>
<div class="resources-list">
<a name="resources-list"></a>
<ul class="list" id="supported-list"></ul>
</div>
<div class="questions">
<h2 class="panel">Questions</h2>
<ul>
<li>
<div class="quest">How to offer more resources?</div>
<div class="answer">
Very simple. Write to me at sttv&#45;pc&#64;mail&#46;ru or make a pull-request on &nbsp;
<a target="_blank" href="https://github.com/__repo_name__/pulls"> github.com</a>
</div>
</li>
<li>
<div class="quest">How to help?</div>
<div class="answer">
You can also make a &nbsp;
<a target="_blank" href="https://github.com/__repo_name__/pulls">pull-request</a>,
or create an &nbsp;
<a target="_blank" href="https://github.com/__repo_name__/issues">issue</a>.<br>
You can also crawl more
sites that have a manga online reading available.
</div>
</li>
</ul>
</div>
<div class="last-update">Latest update: __last_update__</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,41 @@
{
"name": "App",
"icons": [
{
"src": ".\/favicon\/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": ".\/favicon\/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": ".\/favicon\/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": ".\/favicon\/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": ".\/favicon\/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": ".\/favicon\/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
}
]
}

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 49 41" xmlns="http://www.w3.org/2000/svg"><g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><polyline id="Path" stroke="#4291DB" stroke-width="11" points="3.75653148 18.9804052 22.7537424 33.0899986 44.5883171 3.49546922"></polyline></g></svg>

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,355 @@
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
body {
background: #fff;
font-size: 16px;
font-family: 'Roboto', 'Noto', sans-serif;
}
h1, h2, h3, h4, h5, h6 {
display: block;
&.panel {
border-bottom: 1px solid #eaecef;
padding: .5rem .6rem;
max-width: 31.875rem;
}
}
.header h2.h2-panel {
font-size: 1.9rem;
max-width: 100%;
padding: .5rem .6rem;
}
h1 {
font-weight: bold;
font-size: 2.6rem;
margin-bottom: .2rem;
}
h2 {
font-weight: bold;
font-size: 2.2rem;
}
h3 {
font-weight: bold;
font-size: 1.8rem;
}
h4 {
font-weight: bold;
font-size: 1.4rem;
}
h5 {
font-weight: bold;
font-size: 1.2rem;
}
h6 {
font-size: 1.2rem;
color: #776;
}
a[href] {
color: #7bc7ff;
font-size: 1.1rem;
text-decoration: underline;
&:hover {
text-decoration: none;
}
}
ul.links {
& > li {
line-height: 3rem;
display: inline-flex;
margin-bottom: .5rem;
margin-right: .5rem;
}
a {
line-height: 1.25;
text-align: center;
white-space: nowrap;
vertical-align: middle;
user-select: none;
border: 1px solid #ccc;
padding: .5rem 1rem;
font-size: 1rem;
border-radius: .25rem;
transition: all .2s ease-in-out;
color: #292b2c;
background-color: #fff;
}
}
ul, ul > li {
list-style: none;
}
ul {
padding: 1rem 1rem;
background: #f6f8fa;
}
hr {
padding-bottom: 0.3em;
font-size: 1.5em;
border: 0;
border-bottom: 1px solid #eaecef;
margin: 0;
}
.questions {
font-size: 1.4rem;
li {
padding-left: 1rem;
& + li {
padding-top: 1rem;
}
}
.quest {
font-weight: bold;
padding-bottom: .3rem;
}
}
ul.list li {
& + li {
padding-top: .5rem;
}
a {
color: #63a7d2;
line-height: 1.7rem;
}
$blue: rgba(66, 145, 219, 0.53);
$active-blue: rgba(186, 214, 241, 0.53);
label {
position: relative;
cursor: pointer;
padding-left: 1em;
}
input[type=checkbox] {
display: none;
//position: absolute;
//width: 1px;
//height: 1px;
//border: 0 none;
//background: transparent;
//margin: 0;
//margin-top: 5px;
& + label {
background: #fff no-repeat center left 2px;
display: inline-block;
width: 1rem;
height: 1.25rem;
top: -.01rem;
position: relative;
border-radius: 3px;
border: 2px solid $active-blue;
//transition: border .3s ease;
font-size: 1rem;
box-sizing: border-box;
margin-right: .4rem;
}
&:checked {
& + label {
background-image: url('ok_flag.svg');
background-size: 75%;
border-color: $blue;
}
}
}
}
.header {
position: relative;
}
.download-links {
position: absolute;
top: .5rem;
right: 1rem;
a {
background: url('sprite_download.png');
background-position-y: bottom;
display: inline-block;
width: 90px;
height: 70px;
text-indent: -5000px;
overflow: hidden;
opacity: .9;
& + a {
background-position-x: right;
}
&[active] {
opacity: 1;
}
}
}
.container {
width: 100%;
margin: auto;
background: #f5f7fa;
min-height: 100vh;
}
// Small devices (landscape phones, 576px and up)
@media (max-width: 767px) {
.header h1.panel,
.header h2 {
max-width: 20rem;
max-width: calc(100% - 185px);
font-size: 2.2rem;
}
}
@media (max-width: 360px) {
.header h1.panel {
padding-top: 3rem;
}
}
@media (max-width: 575px) {
.header h1.panel {
max-width: 16rem;
max-width: calc(100% - 165px);
}
.download-links {
right: .1rem;
transform: scale(.9);
}
}
@media (min-width: 576px) {
.container {
width: 550px;
}
}
// Medium devices (tablets, 768px and up)
@media (min-width: 768px) {
.container {
width: 750px;
}
}
// Large devices (desktops, 992px and up)
@media (min-width: 992px) {
.container {
width: 750px;
}
}
// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) {
.container {
width: 750px;
}
}
// touch devices
@media (pointer: coarse) {
ul.list li {
a {
font-size: 1.4rem;
}
& + li {
padding-top: 1rem;
}
}
}
h4[data-symbol] {
margin-left: 1.3rem;
position: relative;
&:after {
font-weight: 500;
font-size: 1.2rem;
opacity: .9;
font-style: normal;
content: attr(data-symbol) ")";
position: absolute;
left: -1rem;
top: 1.05rem;
}
}
.h-ul {
padding: 1rem 1rem 0;
&.h-ul-two {
padding: 1rem 1rem 0 2rem;
}
}
.content-inner-wrapper {
padding-left: .4rem;
}
span.subcontent {
font-size: 1rem;
font-weight: normal;
color: #565656;
}
.last-update {
text-align: center;
font-size: .7rem;
color: #ccc;
padding-bottom: 1rem;
}

View File

@@ -0,0 +1,22 @@
from json import loads
from requests import get
from os import system, path
_path = path.dirname(path.dirname(path.realpath(__file__)))
all_manga_list = None
n = 0
while n < 10:
try:
all_manga_list = loads(get('http://inmanga.com/OnMangaQuickSearch/Source/QSMangaList.json').text)
break
except Exception:
pass
n += 1
if not all_manga_list:
print('Error! QSMangaList is not correct json?')
for i in all_manga_list:
print('Downloading %s' % i['Name'])
_str = 'cd {}; python3 manga.py --cli -i -u http://inmanga.com/ver/manga/{}/{}'
system(_str.format(_path, i['Name'], i['Name'], i['Identification']))

View File

@@ -0,0 +1,161 @@
FROM debian:jessie-slim
# ensure local python is preferred over distribution python
ENV PATH /usr/local/bin:$PATH
# http://bugs.python.org/issue19846
# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK.
ENV LANG C.UTF-8
# runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
netbase \
&& rm -rf /var/lib/apt/lists/*
ENV GPG_KEY 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D
ENV PYTHON_VERSION 3.6.8
# if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value '<VERSION>'"
ENV PYTHON_PIP_VERSION 19.1.1
ARG HOST_UID=1000
ARG HOST_GID=1000
ARG HOST_USER=manga
ARG HOST_GROUP=manga
ARG HOME='/home/manga'
RUN groupadd -g $HOST_GID $HOST_GROUP \
&& groupadd sudonopswd \
&& useradd -m -l -g $HOST_GROUP -u $HOST_UID $HOST_USER
RUN mkdir $HOME -p; \
chown $HOST_USER:$HOST_GROUP $HOME
RUN touch $HOME/.bashrc; \
mkdir $HOME/Manga; \
chown $HOST_USER:$HOST_GROUP $HOME/.bashrc; \
chown $HOST_USER:$HOST_GROUP $HOME/Manga
RUN set -ex \
\
&& savedAptMark="$(apt-mark showmanual)" \
&& apt-get update && apt-get install -y --no-install-recommends \
dpkg-dev \
gcc \
libbz2-dev \
libc6-dev \
libexpat1-dev \
libffi-dev \
libgdbm-dev \
liblzma-dev \
libncursesw5-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
make \
tk-dev \
build-essential \
wget \
xz-utils \
zlib1g-dev \
curl \
# python autocomplete utilite
python3-argcomplete \
# as of Stretch, "gpg" is no longer included by default
$(command -v gpg > /dev/null || echo 'gnupg dirmngr') \
\
&& wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" \
&& wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \
&& gpg --batch --verify python.tar.xz.asc python.tar.xz \
&& { command -v gpgconf > /dev/null && gpgconf --kill all || :; } \
&& rm -rf "$GNUPGHOME" python.tar.xz.asc \
&& mkdir -p /usr/src/python \
&& tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz \
&& rm python.tar.xz \
\
&& cd /usr/src/python \
&& gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \
&& ./configure \
--build="$gnuArch" \
--enable-loadable-sqlite-extensions \
--enable-shared \
--with-system-expat \
--with-system-ffi \
--without-ensurepip \
&& make -j "$(nproc)" \
&& make install \
&& ldconfig \
\
&& apt-mark auto '.*' > /dev/null \
&& apt-mark manual $savedAptMark \
&& find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' \
| awk '/=>/ { print $(NF-1) }' \
| sort -u \
| xargs -r dpkg-query --search \
| cut -d: -f1 \
| sort -u \
| xargs -r apt-mark manual; \
\
wget -O get-pip.py 'https://bootstrap.pypa.io/get-pip.py'; \
\
python3 get-pip.py \
--disable-pip-version-check \
--no-cache-dir \
"pip==$PYTHON_PIP_VERSION" \
; \
python3 -mpip --version \
\
&& python3 --version \
# Because it requires gcc
&& python3 -mpip install manga-py -U \
&& curl -sL https://deb.nodesource.com/setup_12.x | bash - \
&& apt-get install -y nodejs \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local -depth \
\( \
\( -type d -a \( -name test -o -name tests \) \) \
-o \
\( -type f -a \( -name '*.pyc' -o -name '*.pyo' \) \) \
\) -exec rm -rf '{}' + \
&& rm -rf /usr/src/python
# make some useful symlinks that are expected to exist
RUN cd /usr/local/bin \
&& ln -s idle3 idle \
&& ln -s pydoc3 pydoc \
&& ln -s python3 python \
&& ln -s python3-config python-config
RUN set -ex; \
\
savedAptMark="$(apt-mark showmanual)"; \
\
apt-mark auto '.*' > /dev/null; \
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
rm -rf /var/lib/apt/lists/*; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
\
find /usr/local -depth \
\( \
\( -type d -a \( -name test -o -name tests \) \) \
-o \
\( -type f -a \( -name '*.pyc' -o -name '*.pyo' \) \) \
\) -exec rm -rf '{}' +; \
rm -f get-pip.py
USER $HOST_USER
WORKDIR $HOME
RUN echo 'Manga-py version: '; \
manga-py --version; \
rm -rf /tmp/.P*
# docker run -it -v /tmp/destination:/home/manga mangadl/manga-py
CMD ["bash"]