Skip to main content

No project description provided

Project description

aiorezka

Installation

Without cache

pip install aiorezka

With cache

It's recommended to use cache, because it will reduce load on Rezka API.

pip install aiorezka[request_cache]

Usage

from aiorezka.api import RezkaAPI
import asyncio

async def main():
    async with RezkaAPI() as api:
        details = await api.movie_detail.get(
            'https://rezka.ag/cartoons/comedy/2136-rik-i-morti-2013.html'
        )
        print(details)

asyncio.run(main())

You can find more examples in examples directory.

Download TV series

  1. Install aria2 and ffmpeg.
  2. Install yt-dlp:
pip install yt-dlp
  1. Install downloader extras for aiorezka:
pip install aiorezka[downloader]
  1. Run download process:
python -m aiorezka -u https://rezka.ag/cartoons/comedy/2136-rik-i-morti-2013-latest.html -a Сыендук -s 1
Aiorezka CLI

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -u URL, --url URL     URL of the movie or TV series to download. Can be full
                        URL or just urn (e.g. /films/series/12345.html)
  -p PATH, --path PATH  Path to save downloaded files (default: current
                        directory)
  -s SEASON, --season SEASON
                        Season number for TV series (default: 1)
  -a AUDIO_TRACK, --audio-track AUDIO_TRACK
                        Preferred audio track for TV series

Configuration

Hostname configuration

You can configure hostname for requests. By default it will use rezka.ag hostname. To change it, you can pass environment variable REZKA_HOSTNAME or change it in code:

import aiorezka

aiorezka.host = 'rezka.co'

Concurrency configuration

You can configure concurrency for API client, basically it will limit number of concurrent requests via asyncio.Semaphore. By default it will use 60 concurrent requests. To change it, you can pass environment variable REZKA_CONCURRENCY_LIMIT or change it in code:

import aiorezka

aiorezka.concurrency_limit = 100

Retry configuration

You can configure retry policy for requests. By default it will retry 3 times with 1 * (backoff ** retry_no) second delay. To change it, you can pass environment variables, such as REZKA_MAX_RETRY and REZKA_RETRY_DELAY or change it in code:

import aiorezka

aiorezka.max_retry = 5
aiorezka.retry_delay = 2

Cache configuration

You can configure cache for requests. By default, it will use aiorezka.cache.QueryCache + aiorezka.cache.DiskCacheThreadProvider with 1 day TTL. Cache will periodically save to disk, so you can use it between restarts.

use_cache

Enable or disable cache. By default, it's disabled.

import aiorezka

aiorezka.use_cache = False  # disable cache

or use environment variable REZKA_USE_CACHE

cache_directory

Directory where cache will be stored. By default, it's /tmp/aiorezka_cache.

import aiorezka

aiorezka.cache_directory = '/tmp/aiorezka_cache'

or use environment variable REZKA_CACHE_DIRECTORY

memcache_max_len

Max number of items in memory cache. When it's reached, it will be saved to disk.

By default, it's 1000.

import aiorezka

aiorezka.memcache_max_len = 1000

or use environment variable REZKA_MEMCACHE_MAX_LEN

cache_ttl

TTL for cache objects.

By default, it's 1 day.

import aiorezka

aiorezka.cache_ttl = 60 * 60 * 24  # 1 day

or use environment variable REZKA_CACHE_TTL

max_open_files

Max number of open files for cache. It's used for aiorezka.cache.DiskCacheThreadProvider. When app starts cache will be rebuilt on disk, so it will open a lot of files to check if they are expired.

By default, it's 5000.

import aiorezka

aiorezka.max_open_files = 5000

or use environment variable REZKA_MAX_OPEN_FILES

You can disable cache rebuild on start, then TTL will be ignored.

from aiorezka.api import RezkaAPI

async def main():
    async with RezkaAPI(cache_rebuild_on_start=False) as api:
        pass

Logging configuration

You can configure logging for aiorezka. By default, it will use logging.INFO level.

import aiorezka

aiorezka.log_level = "DEBUG"

or use environment variable REZKA_LOG_LEVEL

Debugging

Measure RPS

Measure requests per second, use it only for debug purposes.

import asyncio

from aiorezka.api import RezkaAPI
from aiorezka.cli import measure_rps


@measure_rps
async def main():
    async with RezkaAPI() as api:
        movies = await api.movie.iter_pages(range(1, 10), chain=True)
        detailed_movies = await api.movie_detail.many(movies)
        for movie in detailed_movies:
            attributes = '\n'.join([f'{attr["key"]}: {attr["value"]}' for attr in movie.attributes])
            print(f'{movie.title}\n{attributes}\n')

if __name__ == '__main__':
    asyncio.run(main())

Output will look like:

[main][333 requests in 37.82s] 8.81 rps

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiorezka-1.3.1.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiorezka-1.3.1-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file aiorezka-1.3.1.tar.gz.

File metadata

  • Download URL: aiorezka-1.3.1.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.11.0 Linux/6.11.0-1018-azure

File hashes

Hashes for aiorezka-1.3.1.tar.gz
Algorithm Hash digest
SHA256 a87c6936d6fc82de26f8da3d85a42194550a6eadf9ad6bf2513e64ca18964664
MD5 1e4ef2b53f2fe299fa8fb6a8e40846af
BLAKE2b-256 1a50185c56e6cf03a57af2838661719d7491d6e981e39cc2da560c43f6824513

See more details on using hashes here.

File details

Details for the file aiorezka-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: aiorezka-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.11.0 Linux/6.11.0-1018-azure

File hashes

Hashes for aiorezka-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a76fe3ee2d9b5e91b6f436cc1830c003fff5528948165a2ca10a578c6f59ed79
MD5 9d6d2192ecbc28387d7ed0314f6f276b
BLAKE2b-256 007fcf28ef422ab77a3f03060c3934c6cff06c6f707394ab536e8f125d8dab49

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page