GithubHelp home page GithubHelp logo

aplanas / kmanga Goto Github PK

View Code? Open in Web Editor NEW
142.0 23.0 39.0 7.18 MB

KManga site

License: GNU General Public License v3.0

Python 86.00% Shell 4.48% HTML 9.23% CSS 0.03% JavaScript 0.26%
kindle manga manga-reader

kmanga's Introduction

KManga

This is the source code of the KManga site.

With KManga you can subscribe and receive manga directly in your Kindle.

kmanga's People

Contributors

aplanas 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

kmanga's Issues

heroku Application error

thanks for this project, was greatest. now i tried to use it on heroku, when i deploy it throws an error
"You're using the staticfiles app without having set the STATIC_ROOT setting #48"
so i add this to settings.py
STATIC_ROOT =os.path.join(BASE_DIR, 'static')
after that deploy was successful but on app it says Application error check logs.
Here is the logs. i would be appreciated if someone help me. Thanks

-----> Python app detected
-----> Installing python-3.6.9
-----> Installing pip
-----> Installing SQLite3
-----> Installing requirements with pip
Collecting Django==2.0.6 (from -r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 1))
Downloading https://files.pythonhosted.org/packages/56/0e/afdacb47503b805f3ed213fe732bff05254c8befaa034bbada580be8a0ac/Django-2.0.6-py3-none-any.whl (7.1MB)
Collecting django-rq==1.3.1 (from -r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 2))
Downloading https://files.pythonhosted.org/packages/4a/83/23de75cf067c72b64bbe624ac6308d5e774b019c4cb60ad7fe8d16be7bc3/django_rq-1.3.1-py2.py3-none-any.whl (50kB)
Collecting easy-thumbnails==2.5 (from -r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 3))
Downloading https://files.pythonhosted.org/packages/5a/50/15211bfae0096feced4b97c69e76f01758c6ceac802ee468f7d478d43c5d/easy-thumbnails-2.5.tar.gz (67kB)
Collecting Pillow==5.1.0 (from -r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 4))
Downloading https://files.pythonhosted.org/packages/5f/4b/8b54ab9d37b93998c81b364557dff9f61972c0f650efa0ceaf470b392740/Pillow-5.1.0-cp36-cp36m-manylinux1_x86_64.whl (2.0MB)
Collecting psycopg2-binary==2.7.4 (from -r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 5))
Downloading https://files.pythonhosted.org/packages/5f/0b/aa7078d3f6d27d951c38b6a1f4b99b71b2caecebb2921b2d808b5bf0e2e0/psycopg2_binary-2.7.4-cp36-cp36m-manylinux1_x86_64.whl (2.7MB)
Collecting Scrapy==1.5.0 (from -r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/db/9c/cb15b2dc6003a805afd21b9b396e0e965800765b51da72fe17cf340b9be2/Scrapy-1.5.0-py2.py3-none-any.whl (251kB)
Collecting service-identity==17.0.0 (from -r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 7))
Downloading https://files.pythonhosted.org/packages/29/fa/995e364220979e577e7ca232440961db0bf996b6edaf586a7d1bd14d81f1/service_identity-17.0.0-py2.py3-none-any.whl
Collecting spidermonkey==58.0a1.post2 (from -r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 8))
Downloading https://files.pythonhosted.org/packages/78/93/916cd3f5563ee989251a8e1db17575de803765da8325e5ca55e226a8dca7/spidermonkey-58.0a1.post2.tar.gz (20.3MB)
Collecting pytz (from Django==2.0.6->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 1))
Downloading https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl (509kB)
Collecting redis>=3 (from django-rq==1.3.1->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 2))
Downloading https://files.pythonhosted.org/packages/cc/ed/c7447328a3d9fb26961ca4ee877629a9514705b9442d3179456cb860c70f/redis-3.3.10-py2.py3-none-any.whl (66kB)
Collecting rq<1.0,>=0.13 (from django-rq==1.3.1->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 2))
Downloading https://files.pythonhosted.org/packages/73/49/ab50a9277231f9d2cb74575869ce70f428e608a4bc92678ad7b4c1a64f32/rq-0.13.0-py2.py3-none-any.whl (54kB)
Collecting six>=1.5.2 (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Collecting PyDispatcher>=2.0.5 (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/cd/37/39aca520918ce1935bea9c356bcbb7ed7e52ad4e31bff9b943dfc8e7115b/PyDispatcher-2.0.5.tar.gz
Collecting parsel>=1.1 (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/86/c8/fc5a2f9376066905dfcca334da2a25842aedfda142c0424722e7c497798b/parsel-1.5.2-py2.py3-none-any.whl
Collecting pyOpenSSL (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/01/c8/ceb170d81bd3941cbeb9940fc6cc2ef2ca4288d0ca8929ea4db5905d904d/pyOpenSSL-19.0.0-py2.py3-none-any.whl (53kB)
Collecting Twisted>=13.1.0 (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/14/49/eb654da38b15285d1f594933eefff36ce03106356197dba28ee8f5721a79/Twisted-19.7.0-cp36-cp36m-manylinux1_x86_64.whl (3.1MB)
Collecting queuelib (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/4c/85/ae64e9145f39dd6d14f8af3fa809a270ef3729f3b90b3c0cf5aa242ab0d4/queuelib-1.5.0-py2.py3-none-any.whl
Collecting cssselect>=0.9 (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/3b/d4/3b5c17f00cce85b9a1e6f91096e1cc8e8ede2e1be8e96b87ce1ed09e92c5/cssselect-1.1.0-py2.py3-none-any.whl
Collecting w3lib>=1.17.0 (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/6a/45/1ba17c50a0bb16bd950c9c2b92ec60d40c8ebda9f3371ae4230c437120b6/w3lib-1.21.0-py2.py3-none-any.whl
Collecting lxml (from Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/ec/be/5ab8abdd8663c0386ec2dd595a5bc0e23330a0549b8a91e32f38c20845b6/lxml-4.4.1-cp36-cp36m-manylinux1_x86_64.whl (5.8MB)
Collecting attrs (from service-identity==17.0.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 7))
Downloading https://files.pythonhosted.org/packages/6b/e8/2ecaf86b128a34e225807f03b22664302937ab826bd3b7eccab6754d29ea/attrs-19.2.0-py2.py3-none-any.whl (40kB)
Collecting pyasn1-modules (from service-identity==17.0.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 7))
Downloading https://files.pythonhosted.org/packages/52/50/bb4cefca37da63a0c52218ba2cb1b1c36110d84dcbae8aa48cd67c5e95c2/pyasn1_modules-0.2.7-py2.py3-none-any.whl (131kB)
Collecting pyasn1 (from service-identity==17.0.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 7))
Downloading https://files.pythonhosted.org/packages/a1/71/8f0d444e3a74e5640a3d5d967c1c6b015da9c655f35b2d308a55d907a517/pyasn1-0.4.7-py2.py3-none-any.whl (76kB)
Collecting click>=5.0 (from rq<1.0,>=0.13->django-rq==1.3.1->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 2))
Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
Collecting cryptography>=2.3 (from pyOpenSSL->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/97/18/c6557f63a6abde34707196fb2cad1c6dc0dbff25a200d5044922496668a4/cryptography-2.7-cp34-abi3-manylinux1_x86_64.whl (2.3MB)
Collecting incremental>=16.10.1 (from Twisted>=13.1.0->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/f5/1d/c98a587dc06e107115cf4a58b49de20b19222c83d75335a192052af4c4b7/incremental-17.5.0-py2.py3-none-any.whl
Collecting zope.interface>=4.4.2 (from Twisted>=13.1.0->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/19/17/1d198a6aaa9aa4590862fe3d3a2ed7dd808050cab4eebe8a2f2f813c1376/zope.interface-4.6.0-cp36-cp36m-manylinux1_x86_64.whl (167kB)
Collecting PyHamcrest>=1.9.0 (from Twisted>=13.1.0->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/9a/d5/d37fd731b7d0e91afcc84577edeccf4638b4f9b82f5ffe2f8b62e2ddc609/PyHamcrest-1.9.0-py2.py3-none-any.whl (52kB)
Collecting constantly>=15.1 (from Twisted>=13.1.0->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/b9/65/48c1909d0c0aeae6c10213340ce682db01b48ea900a7d9fce7a7910ff318/constantly-15.1.0-py2.py3-none-any.whl
Collecting hyperlink>=17.1.1 (from Twisted>=13.1.0->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/7f/91/e916ca10a2de1cb7101a9b24da546fb90ee14629e23160086cf3361c4fb8/hyperlink-19.0.0-py2.py3-none-any.whl
Collecting Automat>=0.3.0 (from Twisted>=13.1.0->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/a3/86/14c16bb98a5a3542ed8fed5d74fb064a902de3bdd98d6584b34553353c45/Automat-0.7.0-py2.py3-none-any.whl
Collecting cffi!=1.11.3,>=1.8 (from cryptography>=2.3->pyOpenSSL->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/5f/bf/6aa1925384c23ffeb579e97a5569eb9abce41b6310b329352b8252cee1c3/cffi-1.12.3-cp36-cp36m-manylinux1_x86_64.whl (430kB)
Collecting asn1crypto>=0.21.0 (from cryptography>=2.3->pyOpenSSL->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/6e/1e/fb0e487b5229e5fb7b15c6d00b4e8082a3414fe62b1da4c9a905b106e672/asn1crypto-1.1.0-py2.py3-none-any.whl (103kB)
Collecting idna>=2.5 (from hyperlink>=17.1.1->Twisted>=13.1.0->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
Collecting pycparser (from cffi!=1.11.3,>=1.8->cryptography>=2.3->pyOpenSSL->Scrapy==1.5.0->-r /tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/requirements/base.txt (line 6))
Downloading https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz (158kB)
Installing collected packages: pytz, Django, redis, click, rq, django-rq, Pillow, easy-thumbnails, psycopg2-binary, six, PyDispatcher, lxml, cssselect, w3lib, parsel, pycparser, cffi, asn1crypto, cryptography, pyOpenSSL, incremental, zope.interface, PyHamcrest, constantly, idna, hyperlink, attrs, Automat, Twisted, queuelib, pyasn1, pyasn1-modules, service-identity, Scrapy, spidermonkey
Running setup.py install for easy-thumbnails: started
Running setup.py install for easy-thumbnails: finished with status 'done'
Running setup.py install for PyDispatcher: started
Running setup.py install for PyDispatcher: finished with status 'done'
Running setup.py install for pycparser: started
Running setup.py install for pycparser: finished with status 'done'
Running setup.py install for spidermonkey: started
Running setup.py install for spidermonkey: finished with status 'done'
Successfully installed Automat-0.7.0 Django-2.0.6 Pillow-5.1.0 PyDispatcher-2.0.5 PyHamcrest-1.9.0 Scrapy-1.5.0 Twisted-19.7.0 asn1crypto-1.1.0 attrs-19.2.0 cffi-1.12.3 click-7.0 constantly-15.1.0 cryptography-2.7 cssselect-1.1.0 django-rq-1.3.1 easy-thumbnails-2.5 hyperlink-19.0.0 idna-2.8 incremental-17.5.0 lxml-4.4.1 parsel-1.5.2 psycopg2-binary-2.7.4 pyOpenSSL-19.0.0 pyasn1-0.4.7 pyasn1-modules-0.2.7 pycparser-2.19 pytz-2019.3 queuelib-1.5.0 redis-3.3.10 rq-0.13.0 service-identity-17.0.0 six-1.12.0 spidermonkey-58.0a1.post2 w3lib-1.21.0 zope.interface-4.6.0
-----> $ python kmanga/manage.py collectstatic --noinput
118 static files copied to '/tmp/build_957eb7b73e9314a7e7e9bdf6a1c33b8e/kmanga/static', 22 unmodified.
-----> Discovering process types
Procfile declares types -> (none)
-----> Compressing...
Done: 94.9M
-----> Launching...
Released v5
https://kmng.herokuapp.com/ deployed to Heroku

Please allow filtering languages in the search result

If I search for e.g. "one punch man", the first three results are portuguese-only results.

The user preferences already contains a "preferred languages" selector, I believe the search results should at least consider that value and sort appropriately.

Possibly even better, I would be able to specify a list of languages I can read and the search could return only those (note in this case the search results should contain a "some results were hidden due to language limitation, click to see everything" link)

[feature-request] Panel View (Region Magnification)

I've noticed that sometimes the manga sent to my kindle are not using the correct reading order for Kindle's "Virtual Panel" feature (ref: https://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf)

It seems that you can't get the right LR or RL value from the different sources.

Instead would it be possible to leverage something like https://github.com/Ajira-FR/comics-splitter
to get the bounding box co-ordinates for a panel and then set that up as for "Panel View (Region Magnification)" feature (ref: https://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf)

Please make the number of issues per page configurable

I'd love to have different value of number of issues per page in the subscription page, as 25 is really too low for my testes.

It would be nice if it was configurable in the user preferences.

PS. Thank you for the great service!!

mark completed subscriptions

In the list of subscriptions (i.e. /kmanga/subscription/) completed manga (with "issues sent" == "total issues") are interleaved to ongoing ones, despite usually being less interesting than the ongoing ones.

Therefore I'd like to propose adding a clear mark for the ended ones, so when they are mixed I can quickly visually distinguish them.

Index of chapters becomes disordered on update

When updating the list of chapters from Batoto, new chapters are put in-between already existing chapters, as such:

ss 2016-12-27 at 10 24 08

Notice how 82 and 83 are in the wrong order. Before I updated it, 81 was the latest chapter from Batoto.

Unsubscribing and resubscribing does not resolve the issue. This manga is being published as of filing this bug.

ImportError: No module named cache

Lately I've been trying to set up kmanga on my own server, unfortunately I've run into some problems
root@pixelggamer:~/kmanga# kmanga/manage.py makemigrations Traceback (most recent call last): File "kmanga/manage.py", line 22, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 363, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 355, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 327, in execute self.check() File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 359, in check include_deployment_checks=include_deployment_checks, File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 346, in _run_checks return checks.run_checks(**kwargs) File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 81, in run_checks new_errors = check(app_configs=app_configs) File "/usr/local/lib/python2.7/dist-packages/django/core/checks/urls.py", line 16, in check_url_config return check_resolver(resolver) File "/usr/local/lib/python2.7/dist-packages/django/core/checks/urls.py", line 26, in check_resolver return check_method() File "/usr/local/lib/python2.7/dist-packages/django/urls/resolvers.py", line 254, in check for pattern in self.url_patterns: File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 35, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/usr/local/lib/python2.7/dist-packages/django/urls/resolvers.py", line 405, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 35, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/usr/local/lib/python2.7/dist-packages/django/urls/resolvers.py", line 398, in urlconf_module return import_module(self.urlconf_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/root/kmanga/kmanga/kmanga/urls.py", line 32, in <module> url(r'^kmanga/', include('core.urls')), File "/usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py", line 50, in include urlconf_module = import_module(urlconf_module) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/root/kmanga/kmanga/core/urls.py", line 3, in <module> from .views import AboutTemplateView File "/root/kmanga/kmanga/core/views.py", line 19, in <module> from .forms import ContactForm File "/root/kmanga/kmanga/core/forms.py", line 8, in <module> from scrapyctl.utils import send File "/root/kmanga/kmanga/scrapyctl/utils.py", line 7, in <module> from scrapyctl.mobictl import create_mobi_and_send File "/root/kmanga/kmanga/scrapyctl/mobictl.py", line 13, in <module> from scrapyctl.emailctl import send_mobi File "/root/kmanga/kmanga/scrapyctl/emailctl.py", line 9, in <module> from mobi.cache import MobiCache ImportError: No module named cache root@pixelggamer:~/kmanga#
I installed all the requirements, I don't know what I am doing wrong, since there is no documentation

[feature-request] Adding series data to generated ebook file

First I'd like to say great job with this, really useful.

I have a feature request to add series metadata to the generated ebook files.
This should make it easier for Calibre to manage the automatic collection generation based on the added series metadata.

I think that it would take adding to this block of code:
https://github.com/aplanas/kmanga/blob/master/mobi/mobi.py#L554-L560

The following:

ET.SubElement(metadata, 'meta', {
    'property': 'calibre:series'
}).text =  self.info.series_name

if isAcceptableCalibreSeriesIndex(self.info.number_in_series):
    ET.SubElement(metadata, 'meta', {
        'property': 'calibre:series_index'
    }).text = self.info.number_in_series

isAcceptableCalibreSeriesIndex returns true if it is a parse-able number else false. I'm not sure what happens in Calibre if you started creating books with "13a" for a series_index though it looks like "11.1" and such is supported (ref: https://manual.calibre-ebook.com/template_lang.html and search "If you use series indices with sub values (e.g., 1.1)")

You would also need to expose these new properties on MobiInfo here:

def __init__(self, issue, multi_vol=False, vol=None, total_vols=1):

I think the right value for each is probably series_name = issue.manga.name and number_in_series = issue.number

You may also be interested in adding the Mobi3 standard series metadata which is shown here:
dteviot/WebToEpub#1
Though not sure if anyone would immediately benefit.

Thanks, hope you can add this feature.

Incorporating Marvel and DC Comic sources?

I am trying to incorporate Marvel and DC Comics sources into the code, but am unable to understand some parts, can anyone look into it? I am a not very versed in python.

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.