Git Product home page Git Product logo

theonlywayup / wattpaddownloader Goto Github PK

View Code? Open in Web Editor NEW
44.0 1.0 7.0 1.91 MB

Wattpad Books to EPUB Files. ๐Ÿช™Download Paid Stories! Metadata and Cover Support ๐Ÿท๏ธ, Lightweight Frontend ๐Ÿ‡, Dockerized ๐Ÿณ, Rapid Generation โšก, API Support ๐ŸŒ

Home Page: https://wpd.rambhat.la

Dockerfile 2.84% Python 42.10% JavaScript 9.51% CSS 0.69% Svelte 34.58% HTML 10.29%
api docker epub lightweight wattpad downloader wattpad-downloader

wattpaddownloader's Introduction

WattpadDownloader (Demo)

Straightforward, Extendable WebApp to download Wattpad Books as EPUB Files.

image

Stars โญ are appreciated. Thanks!

Features

  • โšก Lightweight Frontend and Minimal Javascript.
  • ๐ŸŒ API Support (Visit the /docs path on your instance for more.)
  • ๐Ÿ‡ Fast Generation, Basic Ratelimit Handling.
  • ๐Ÿณ Docker Support
  • ๐Ÿท๏ธ Generated EPUB File includes Metadata. (Dublin Core Spec)
  • ๐Ÿ“– Plays well with E-Readers. (Kindle Support if KOReader present)
  • ๐Ÿ’ป Easily Hackable. Extend with ease.

Set Up

  1. Clone the repository: git clone https://github.com/TheOnlyWayUp/WattpadDownloader/ && cd WattpadDownloader
  2. Build the image: docker build . -t 'wp_downloader' (This takes about 2 Minutes)
  3. Run the Container: docker run -d -p 5042:80 wp_downloader

That's it! You can use your instance at http://localhost:5042. API Documentation is available at http://localhost:5042/docs.


My thanks to aerkalov/ebooklib for a fast and well-documented package.


TheOnlyWayUp ยฉ 2023

wattpaddownloader's People

Contributors

imgbotapp avatar theonlywayup 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

Watchers

 avatar

wattpaddownloader's Issues

Exception thrown when executing multiple parallel requests

I am running an instance of this application as part of my own project that sends multiple requests to it in parallel. Although the application works perfectly when responding to one request at a time, it fails when hit with multiple at once, and outputs this to the logs

INFO:     172.19.0.4:59578 - "GET /download/[REDACTED] HTTP/1.1" 500 Internal Server Error                                                                                                                                                                                             
wattpad-downloader         | ERROR:    Exception in ASGI application                                                                                                                                                                                                                                              
wattpad-downloader         | Traceback (most recent call last):
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 408, in run_asgi                                                                                                                                                                           
wattpad-downloader         |     result = await app(  # type: ignore[func-returns-value]                                                                                                                                                                                                                          
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__                                                                                                                                                                           
wattpad-downloader         |     return await self.app(scope, receive, send)                                                                                                                                                                                                                                      
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/fastapi/applications.py", line 1054, in __call__                                                                                                                                                                                     
wattpad-downloader         |     await super().__call__(scope, receive, send)
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/applications.py", line 116, in __call__                                                                                                                                                                                    
wattpad-downloader         |     await self.middleware_stack(scope, receive, send)                                                                                                                                                                                                                                
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 186, in __call__                                                                                                                                                                               
wattpad-downloader         |     raise exc                                                                                                                                                                                                                                                                        
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 164, in __call__                                                                                                                                                                               
wattpad-downloader         |     await self.app(scope, receive, _send)                                                                                                                                                                                                                                            
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
wattpad-downloader         |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)                                                                                                                                                                                                         
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/_exception_handler.py", line 55, in wrapped_app                                                                                                                                                                            
wattpad-downloader         |     raise exc                                                                                                                                                                                                                                                                        
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/_exception_handler.py", line 44, in wrapped_app                                                                                                                                                                            
wattpad-downloader         |     await app(scope, receive, sender)                                                                                                                                                                                                                                                
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 746, in __call__
wattpad-downloader         |     await route.handle(scope, receive, send)                                                                                                                                                                                                                                         
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 288, in handle                                                                                                                                                                                           
wattpad-downloader         |     await self.app(scope, receive, send)                                                                                                                                                                                                                                             
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 75, in app                                                                                                                                                                                               
wattpad-downloader         |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)                                                                                                                                                                                                           
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/_exception_handler.py", line 55, in wrapped_app
wattpad-downloader         |     raise exc                                                                                                                                                                                                                                                                        
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/_exception_handler.py", line 44, in wrapped_app                                                                                                                                                                            
wattpad-downloader         |     await app(scope, receive, sender)                                                                                                                                                                                                                                                
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/starlette/routing.py", line 70, in app                                                                                                                                                                                               
wattpad-downloader         |     response = await func(request)                                                                                                                                                                                                                                                   
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/fastapi/routing.py", line 299, in app                                                                                                                                                                                                
wattpad-downloader         |     raise e
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/fastapi/routing.py", line 294, in app                                                                                                                                                                                                
wattpad-downloader         |     raw_response = await run_endpoint_function(                                                                                                                                                                                                                                      
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/fastapi/routing.py", line 191, in run_endpoint_function                                                                                                                                                                              
wattpad-downloader         |     return await dependant.call(**values)                                                                                                                                                                                                                                            
wattpad-downloader         |   File "/app/main.py", line 30, in download_book                                                                                                                                                                                                                                     
wattpad-downloader         |     async for title in add_chapters(book, data):                                                                                                                                                                                                                                     
wattpad-downloader         |   File "/app/create_book.py", line 131, in add_chapters                                                                                                                                                                                                                              
wattpad-downloader         |     content = await fetch_part_content(part["id"])                                                                                                                                                                                                                                   
wattpad-downloader         |   File "/app/create_book.py", line 42, in fetch_part_content                                                                                                                                                                                                                         
wattpad-downloader         |     async with session.get(                                                                                                                                                                                                                                                          
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 1187, in __aenter__                                                                                                                                                                                         
wattpad-downloader         |     self._resp = await self._coro                                                                                                                                                                                                                                                    
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiohttp_client_cache/session.py", line 51, in _request
wattpad-downloader         |     response, actions = await self.cache.request(                                                                                                                                                                                                                                    
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiohttp_client_cache/backends/base.py", line 139, in request                                                                                                                                                                         
wattpad-downloader         |     response = None if actions.skip_read else await self.get_response(actions.key)                                                                                                                                                                                                   
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiohttp_client_cache/backends/base.py", line 147, in get_response                                                                                                                                                                    
wattpad-downloader         |     response = await self.responses.read(key) or await self._get_redirect_response(str(key))                                                                                                                                                                                         
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiohttp_client_cache/backends/base.py", line 169, in _get_redirect_response
wattpad-downloader         |     redirect_key = await self.redirects.read(key)                                                                                                                                                                                                                                    
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiohttp_client_cache/backends/sqlite.py", line 180, in read                                                                                                                                                                          
wattpad-downloader         |     row = await cursor.fetchone()                                                                                                                                                                                                                                                    
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiosqlite/cursor.py", line 65, in fetchone                                                                                                                                                                                           
wattpad-downloader         |     return await self._execute(self._cursor.fetchone)                                                                                                                                                                                                                                
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiosqlite/cursor.py", line 40, in _execute                                                                                                                                                                                           
wattpad-downloader         |     return await self._conn._execute(fn, *args, **kwargs)
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiosqlite/core.py", line 133, in _execute                                                                                                                                                                                            
wattpad-downloader         |     return await future                                                                                                                                                                                                                                                              
wattpad-downloader         |   File "/usr/local/lib/python3.10/site-packages/aiosqlite/core.py", line 106, in run                                                                                                                                                                                                 
wattpad-downloader         |     result = function()                                                                                                                                                                                                                                                              
wattpad-downloader         | sqlite3.ProgrammingError: Cannot operate on a closed database.

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.