Skip to main content

Support Aria2 rpc client and manage server with async/await

Project description

aioaria2

pypi python implementation wheel license

Support async rpc call with aria2 and process management

Usage:

example

import asyncio
from pprint import pprint

import aioaria2


async def main():
    async with aioaria2.Aria2HttpClient("http://117.0.0.1:6800/jsonrpc",
                                        token="token") as client:
        pprint(await client.getVersion())


asyncio.run(main())

The ip address should be replaced with your own

See aria2 manual for more detail about client methods

# exampe of http
import asyncio
from pprint import pprint

import aioaria2
import ujson


async def main():
    async with aioaria2.Aria2HttpClient("http://127.0.0.1:6800/jsonrpc",
                                        token="token",
                                        loads=ujson.loads,
                                        dumps=ujson.dumps) as client:
        pprint(await client.addUri(["http://www.demo.com"]))  # that would start downloading


asyncio.run(main())
# exampe of websocket
import asyncio
from pprint import pprint

import aioaria2
import ujson


@aioaria2.run_sync
def on_download_complete(trigger, data):
    print(f"downlaod complete {data}")


async def main():
    client: aioaria2.Aria2WebsocketTrigger = await aioaria2.Aria2WebsocketTrigger.new("http://127.0.0.1:6800/jsonrpc",
                                                                                      token="token",
                                                                                      loads=ujson.loads,
                                                                                      dumps=ujson.dumps)
    client.onDownloadComplete(on_download_complete)
    pprint(await client.addUri(["http://www.demo.com"]))


loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()
  • Run that coroutine function and each method represent an aria2-rpc call. As for server, each instance represent an aria2 process.
import aioaria2
import asyncio


async def main():
    server = aioaria2.AsyncAria2Server(r"aria2c.exe",
                                       r"--conf-path=aria2.conf", "--rpc-secret=admin", daemon=True)
    await server.start()
    await server.wait()


asyncio.run(main())

this start an aria2 process

Aria2 Manual

todolist

  • async http
  • async websocket
  • async process management
  • unitest

This module is built on top of aria2jsonrpc with async and websocket support.

For windows users, you should

# for start async aria2 process
asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
asyncio.set_event_loop(asyncio.ProactorEventLoop())

For python version greater than 3.8, asyncio uses ProactorEventLoop by default, so there is no need to modify

v1.2.0

new Aria2WebsocketTrigger class for websocket events, use on* methods to add callbacks

Like

@trigger.onDownloadStart
async def onDownloadStart(trigger, future):
    print("下载开始{0}".format(future.result()))

v1.2.3

Now you can add multiple callbacks for one event ,must be coroutine function or an async callable, use aioaria2.run_sync to wrap a sync function

@trigger.onDownloadStart
async def callback1(trigger, future):
    print("第一个回调{0}".format(future.result()))

@trigger.onDownloadStart
@run_sync
def callback2(trigger, future):
    print("第二个回调{0}".format(future.result()))

v1.3.0

  • Big changes for classAria2WebsocketTrigger

  • Callbacks now acceptdictas second parameter instead ofasyncio.Future

  • methods of classAria2WebsocketTrigger now have same return value as Aria2HttpClient

  • id parameter now accept a callable as idfactory to generate uuid, otherwise default uuid factory is used.

@trigger.onDownloadStart
async def callback1(trigger, data:dict):
    print("第一个回调{0}".format(data))

@trigger.onDownloadStart
@run_sync
def callback2(trigger, data:dict):
    print("第二个回调{0}".format(data))

v1.3.1

  • custom json library with keyword arguments loads dumps

v1.3.2

  • fix unclosed client_session when exception occurs during ws_connect
  • alias for Aria2WebsocketTrigger,named Aria2WebsocketClient

v1.3.3

  • fix method problems in client

v1.3.4rc1

  • handle reconnect simply
  • handle InvalidstateError while trying to ping aria2

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

aioaria2-1.3.4rc1.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

aioaria2-1.3.4rc1-py3-none-any.whl (31.3 kB view details)

Uploaded Python 3

File details

Details for the file aioaria2-1.3.4rc1.tar.gz.

File metadata

  • Download URL: aioaria2-1.3.4rc1.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.7.1 requests/2.24.0 setuptools/49.6.0.post20210108 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.8.5

File hashes

Hashes for aioaria2-1.3.4rc1.tar.gz
Algorithm Hash digest
SHA256 259f41437ca369d6ad9636695fd80defec8cbe2a735944afab1b94e4407d8796
MD5 9232f6173a1ff5cdc32cf67c10d86635
BLAKE2b-256 40bb08749306890f5f1b2b8b9921ff1bd93ad116d9f685048d2ec8fc3ce6eb5f

See more details on using hashes here.

File details

Details for the file aioaria2-1.3.4rc1-py3-none-any.whl.

File metadata

  • Download URL: aioaria2-1.3.4rc1-py3-none-any.whl
  • Upload date:
  • Size: 31.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.7.1 requests/2.24.0 setuptools/49.6.0.post20210108 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.8.5

File hashes

Hashes for aioaria2-1.3.4rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 e27a635786a69238ef0ecbafd3e796ae57ad030edbc03e8f5c9aa4f91f49e8fa
MD5 e5f0126153128a6b371a60e69a51d807
BLAKE2b-256 6ef0ce53fd34d4c49a4c92fd7d465a220f6104946682888841c5bb40eeb2d745

See more details on using hashes here.

Supported by

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