semvec/pypi-packages huggingface dataset:
tvshow-manager 1.0.0
console commands to turn video folders into kodi importable tv seriesj
License: MIT
Keywords: kodi

# Next Episode

next-episode is a set of console commands intended to make it easier to rename files into kodi series format. It is
intended to be used as hotkeys in the ranger or midnight commander file managers

- next-episode add .sxxexx in front of the file extension. With sxx being the current season and exx being the next
  episode number. Or s01e01 if the directory is 'fresh'
- next-season add .sxxe01 in front of the file extension. With sxx being the current season +1 or s01 if the directory
  is 'fresh'
- remove-episode remove .sxxexx tag from the given file
- fill-episode much the same as next-episode but it checks if there are missing episodes in seasons and assigns that tag
  instead.
- generate-nfo generate a minimal .nfo file with unique uuid and title based on the files filename without tag or
  extension
- generate-series-nfo generate a minimal tvseries.nfo with unique uuid and title based on the directory itlives in
- next-artwork copy image file to banner.jpg, season01-banner.jpg, season02-banner.jpg ...
aiontai 1.0.12
Async wrapper for nhentai API
License: MIT
Requires Python: >=3.8,<4.0

Aiontai
=======

Async wrapper for nhentai API


============
Installation
============

.. code:: shell

    $ pip install aiontai


==========
How to use
==========


Create client

.. code:: python

    import asyncio

    from aiohttp import ClientSession

    from aiontai import (
        NHentaiClient,
        NHentaiAPI,
        Conventer,
    )


    async def main() -> None:
        client_object = NHentaiClient(
            api=NHentaiAPI(
                ClientSession(),
            ),
            conventer=Conventer(),
        )

    asyncio.run(main())


Or can use ``injector`` that will create the object itself (Next examples will be using it)

.. code:: python

    import asyncio

    from injector import Injector

    from aiontai import (
        NHentaiClient,
        ClientModule,
    )


    async def main() -> None:
        injector = Injector(ClientModule())
        client_object = injector.get(NHentaiClient)

    asyncio.run(main())


Example of using the client

.. code:: python

    async def main() -> None:
        injector = Injector(ClientModule())
        client_object = injector.get(NHentaiClient)

        async with client_object as client:  # Will close the session itself
            doujin = await client.get_random_doujin()

            for page in doujin.images:
                print(page.url)

            print(doujin.to_json())

    asyncio.run(main())


Example of using the proxy

.. code:: python

    ...
    from injector import (
        provider,
        Injector,
        Module,
    )
    from aiohttp_proxy import ProxyConnector  # pip install aiohttp_proxy
    ...

    class AiohttpProxyModule(Module):
        def __init__(self, proxi_url: str) -> None:
            self._proxi_url = proxi_url

        @provider
        def provide_client_session(self) -> ClientSession:
            connector = ProxyConnector.from_url(self._proxi_url)
            return ClientSession(connector=connector)


    async def main() -> None:
        injector = Injector(
            modules=[
                ClientModule(),
                AiohttpProxyModule("http://user:password@127.0.0.1:1080"),
            ],
        )
        client_object = injector.get(NHentaiClient)

    asyncio.run(main())


Example of using the Low level api

.. code:: python

    async def main() -> None:
        injector = Injector(ClientModule())
        client_object = injector.get(NHentaiAPI)
        async with client_object as client:
            doujin = await client.get_random_doujin()  # Return: Dict[str, Any]
                                                       # from api without loss of information

            print(doujin)


    asyncio.run(main())