1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
import logging
import urllib.parse
from transmission_rpc.client import Client
from transmission_rpc.constants import DEFAULT_TIMEOUT, LOGGER, IdleMode, Priority, RatioLimitMode
from transmission_rpc.error import (
TransmissionAuthError,
TransmissionConnectError,
TransmissionError,
TransmissionTimeoutError,
)
from transmission_rpc.session import Session, SessionStats, Stats
from transmission_rpc.torrent import FileStat, Status, Torrent, Tracker, TrackerStats
from transmission_rpc.types import File, Group
__all__ = [
"Client",
"Group",
"Status",
"DEFAULT_TIMEOUT",
"LOGGER",
"TransmissionError",
"TransmissionTimeoutError",
"TransmissionAuthError",
"TransmissionConnectError",
"Session",
"Stats",
"SessionStats",
"Torrent",
"File",
"FileStat",
"Tracker",
"TrackerStats",
"from_url",
"Priority",
"RatioLimitMode",
"IdleMode",
]
def from_url(
url: str,
timeout: float = DEFAULT_TIMEOUT,
logger: logging.Logger = LOGGER,
) -> Client:
"""
.. code-block:: python
from_url("http://127.0.0.1/transmission/rpc") # http://127.0.0.1:80/transmission/rpc
from_url("https://127.0.0.1/transmission/rpc") # https://127.0.0.1:443/transmission/rpc
from_url("http://127.0.0.1") # http://127.0.0.1:80/transmission/rpc
from_url("http://127.0.0.1/") # http://127.0.0.1:80/
Warnings:
you can't ignore scheme, ``127.0.0.1:9091`` is not valid url, please use ``http://127.0.0.1:9091``
And ``from_url("http://127.0.0.1")`` is not same as ``from_url("http://127.0.0.1/")``,
``path`` of ``http://127.0.0.1/`` is ``/``
"""
u = urllib.parse.urlparse(url)
protocol = u.scheme
if protocol == "http":
default_port = 80
elif protocol == "https":
default_port = 443
else:
raise ValueError(f"unknown url scheme {u.scheme}")
return Client(
protocol=protocol, # type: ignore
username=u.username,
password=u.password,
host=u.hostname or "127.0.0.1",
port=u.port or default_port,
path=u.path or "/transmission/rpc",
timeout=timeout,
logger=logger,
)
|