Skip to content

broken-droid/XtreamClient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Buy Me a Coffee at ko-fi.com

module xtreamclient.py

Client class to use Xtream API.

Connect to a server using Xtream API, authorize, get user and server information, get live/vod/series information, get categories, get epgs, download a playlist or build one from JSON data.

function XtreamClient.__init__

__init__(
    url: str,
    username: str,
    password: str,
    headers: Optional[Dict[str, str]] = None
) → None

init method to initialize the client.

Set up request session and instance variables.

Args:

  • server_url (str): Required server url.
  • username (str): Required username.
  • password (str): Required password.
  • headers (Params | None, optional): Optional headers to pass to requests. Default headers are set to a browser user agent.

TODO: m3u8 playlists?, retry error handling may need more work


property XtreamClient.allowed_output_formats

List output formats allowed by the server.

Returns:

  • List[str]: List of output formats

property XtreamClient.headers

Headers used by this XC instance in http requests

Returns:

  • Params: a dictionary to use for headers in an http request

property XtreamClient.output_type

Stream output format for live streams, either '' or one of the valid types allowed by the server.

Returns:

  • str: the current output_type for this XC instance

property XtreamClient.password

Password used by this XC instance

Returns:

  • str: the password used by this XC instance

property XtreamClient.playlist_type

Playlist type to create, either 'm3u' or 'm3u_plus' Only creating m3u for now.

Returns:

  • str: the current playlist_type for this XC instance

property XtreamClient.server_info

Server Info. Contains the server_info data obtained during authorization. No setter defined, only auth sets this.

Raises:

  • XCAuthError: if auth fails

Returns:

  • JSON: dictionary of server_info data

property XtreamClient.server_url

Server url used by this XC instance

Returns:

  • str: the server url being used by this XC instance

property XtreamClient.user_info

User info from the server. Contains the user_info data obtained during authorization. No setter defined, only auth sets this.

Raises:

  • XCAuthError: If auth fails

Returns:

  • JSON: a dictionary with the user info from the server

property XtreamClient.username

Username used by this XC instance

Returns:

  • str: the username being used by this XC instance

function XtreamClient.auth

auth() → bool

Basic request to get user and server info.

Returns:

  • bool: True if successful

function XtreamClient.build_m3u_from_category

build_m3u_from_category(
    category: Dict[str, Any],
    file_path: str | None = None,
    tvg_chno: int | None = None,
    include_extm3u: bool | None = False
) → List[str]

Build an m3u from a single category. Optionally includes #EXTM3U line at the beginning.

Args:

  • category (JSON): JSON data with category information. A single item from what you would receive from get_categories.
  • file_path (str): Optional file path to save playlist to.
  • tvg_chno (int | None, optional): Optional channel number to start numbering from if using tvg-chno. Defaults to None.
  • include_extm3u (bool | None, optional): Includes #EXTM3U line at the beginning of the playlist. Defaults to False.

Returns:

  • List[str]: m3u data as a list of strings

function XtreamClient.build_m3u_from_json

build_m3u_from_json(
    file_path: str | None = None,
    live: bool | None = False,
    vod: bool | None = False,
    series: bool | None = False,
    tvg_chno: int | None = None,
    include_extm3u: bool | None = True
) → List[str]

Build and optionally write an m3u from JSON data from the server. Proceeds by category, no other sorting is done. Optionally includes #EXTM3U line at the beginning. If no stream types are selected, defaults to live streams.

Args:

  • file_path (str | None, optional): Write m3u to this path if provided. Defaults to None.
  • live (bool | None, optional): Get all live streams. Defaults to False.
  • vod (bool | None, optional): Get all vod streams. Defaults to False.
  • series (bool | None, optional): Get all series streams. Defaults to False.
  • tvg_chno (int | None, optional): If outputting a tvg-chno field, start at this number. Defaults to None.
  • include_extm3u (bool | None, optional): Include the #EXTM3U line if using this to write a file. Defaults to True.

Raises:

  • ValueError: at least one stream type needs to be True

Returns:

  • List[str]: m3u data in a list of strings

function XtreamClient.get_categories

get_categories(
    live: bool | None = False,
    vod: bool | None = False,
    series: bool | None = False
) → List[Dict[str, Any]]

Get Live, VOD, and/or Series categories. You can combine multiple types in one call. Returns Live categories by default.

Args:

  • live (bool | None, optional): Get live categories. Defaults to True.
  • vod (bool | None, optional): Get vod categories. Defaults to False.
  • series (bool | None, optional): Get series categories. Defaults to False.

Raises:

  • ValueError: if no category types are selected

Returns:

  • List[JSON]: List of JSON data for categories

function XtreamClient.get_epg

get_epg(stream_id: int | str | None = None) → Dict[str, Any]

Get EPG data for all streams, or for a specific stream with stream_id.

Not sure if this is widely used. Use get_xmltv if needed.

Args:

  • stream_id (int | str | None, optional): Optional stream id to use. Defaults to None.

Returns:

  • JSON: JSON data for the streams

function XtreamClient.get_info

get_info(
    stream_id: int | str,
    vod: bool | None = None,
    series: bool | None = None
) → Dict[str, Any]

Get info for a VOD or Series id

Args:

  • stream_id (int | str): stream id to get info for
  • vod (bool): use stream_id to get vod info
  • series (bool): use stream_id to get series info

Raises:

  • ValueError: invalid or missing arguments

Returns:

  • JSON: JSON data for the stream id

function XtreamClient.get_m3u

get_m3u(file_path: str | None = None) → str

Get m3u from the server, and save to file path if provided.

This endpoint might be missing. Be ready for errors.

Args:

  • file_path (str | None, optional): Save m3u to this path if provided. Defaults to None.

Returns:

  • str: String containing m3u data

function XtreamClient.get_panel

get_panel() → Dict[str, Any]

Get panel info from panel_api endpoint

This returns a lot of info such as user/server/stream information, but user and server info did not have as much data as an auth call. More may be missing. Not sure of the use case for this.

Returns:

  • JSON: JSON data for a lot of different things, but not as complete

function XtreamClient.get_short_epg

get_short_epg(stream_id: int | str) → Dict[str, Any]

Get short epg for a stream id.

Not sure if this is widely used. Use get_xmltv if needed.

Args:

  • stream_id (int | str): stream id to use

Returns:

  • JSON: JSON epg data

function XtreamClient.get_streams

get_streams(
    live: bool | None = None,
    vod: bool | None = False,
    series: bool | None = False,
    category_id: int | str | None = None
) → List[Dict[str, Any]]

Get all selected stream types from the server, optionally restricted by category.

Gets multiple types at a time. Defaults to live streams if no types are set to True.

Args:

  • live (bool | None, optional): Get Live streams. Defaults to False.
  • vod (bool | None, optional): Get VOD streams. Defaults to False.
  • series (bool | None, optional): Get Series streams. Defaults to False.
  • category_id (int | str | None, optional): Optional category id to get streams from. Defaults to None.

Raises:

  • ValueError: if both vod and series are True

Returns:

  • List[JSON]: List of JSON data for streams

function XtreamClient.get_xmltv

get_xmltv(file_path: str | None = None) → str

Get XML epg data from the server, and save to file_path if provided.

Args:

  • file_path (str | None, optional): Save xml to this path if provided . Defaults to None.

Returns:

  • str: String containing xml epg data

class XC404Error

Exception raised for 404 errors.

function XC404Error.__init__

__init__(message: str, code: int | None = None)

class XC503Error

Exception raised for 503 errors.

function XC503Error.__init__

__init__(message: str, code: int | None = None)

class XCAuthError

Exception raised for authentication errors.

function XCAuthError.__init__

__init__(message: str, code: int | None = None)

This filefile was automatically generated via lazydocs.

About

Python Xtream API client to interact with a server

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Languages