Skip to main content

PlayOn facilities, primarily access to the download API. Includes a nice command line tool.

Latest release 20230217:

  • Move some core stuff off into cs.service_api.HTTPServiceAPI.
  • Move core Recording.is_stale() method to TagSet.is_stale(), leave override method behind.
  • Persist login tokens in a db for reuse while still fresh.
  • "playon dl": allow interrupting downloads.
  • Cleaner handling of playon.Name having a leading SNNeNN prefix.

Function main(argv=None)

Playon command line mode; see the PlayOnCommand class below.

Class PlayOnAPI(cs.service_api.HTTPServiceAPI, cs.service_api.ServiceAPI, cs.resources.MultiOpenMixin, cs.context.ContextManagerMixin)

Access to the PlayOn API.

Class PlayOnCommand(cs.cmdutils.BaseCommand)

Playon command line implementation.

Command line usage:

Usage: playon subcommand [args...]

    Environment:
      PLAYON_USER               PlayOn login name, default from $EMAIL.
      PLAYON_PASSWORD           PlayOn password.
                                This is obtained from .netrc if omitted.
      PLAYON_FILENAME_FORMAT  Format string for downloaded filenames.
                                Default: {series_prefix}{playon.Name}--{resolution}--{playon.ProviderID}--playon--{playon.ID}
      PLAYON_TAGS_DBURL         Location of state tags database.
                                Default: ~/var/playon.sqlite

    Recording specification:
      an int        The specific recording id.
      all           All known recordings.
      downloaded    Recordings already downloaded.
      expired       Recording which are no longer available.
      pending       Recordings not already downloaded.
      /regexp       Recordings whose Series or Name match the regexp,
                    case insensitive.

  Subcommands:
    account
      Report account state.
    api suburl
      GET suburl via the API, print result.
    cds suburl
      GET suburl via the content delivery API, print result.
      Example subpaths:
        content
        content/provider-name
    dl [-j jobs] [-n] [recordings...]
      Download the specified recordings, default "pending".
      -j jobs   Run this many downloads in parallel.
                The default is 2.
      -n        No download. List the specified recordings.
    help [-l] [subcommand-names...]
      Print the full help for the named subcommands,
      or for all subcommands if no names are specified.
      -l  Long help even if no subcommand-names provided.
    ls [-l] [recordings...]
      List available downloads.
      -l        Long listing: list tags below each entry.
      -o format Format string for each entry.
      Default format: {playon.ID} {playon.HumanSize} {resolution} {playon.Series} {playon.Name} {playon.ProviderID} {status:upper}
    poll ...
    q [-l] [recordings...]
      List queued recordings.
      -l        Long listing: list tags below each entry.
      -o format Format string for each entry.
      Default format: {playon.ID} {playon.Series} {playon.Name} {playon.ProviderID}
    queue [-l] [recordings...]
      List queued recordings.
      -l        Long listing: list tags below each entry.
      -o format Format string for each entry.
      Default format: {playon.ID} {playon.Series} {playon.Name} {playon.ProviderID}
    refresh [queue] [recordings]
      Update the db state from the PlayOn service.
    service [service_id]
      List services.

Class PlayOnSQLTags(cs.sqltags.SQLTags, cs.tagset.BaseTagSets, cs.resources.MultiOpenMixin, cs.context.ContextManagerMixin, collections.abc.MutableMapping, collections.abc.Mapping, collections.abc.Collection, collections.abc.Sized, collections.abc.Iterable, collections.abc.Container, cs.deco.Promotable)

SQLTags subclass with PlayOn related methods.

Class Recording(cs.sqltags.SQLTagSet, cs.obj.SingletonMixin, cs.tagset.TagSet, builtins.dict, cs.dateutils.UNIXTimeMixin, cs.lex.FormatableMixin, cs.lex.FormatableFormatter, string.Formatter, cs.mappings.AttrableMappingMixin)

An SQLTagSet with knowledge about PlayOn recordings.

Release Log

Release 20230217:

  • Move some core stuff off into cs.service_api.HTTPServiceAPI.
  • Move core Recording.is_stale() method to TagSet.is_stale(), leave override method behind.
  • Persist login tokens in a db for reuse while still fresh.
  • "playon dl": allow interrupting downloads.
  • Cleaner handling of playon.Name having a leading SNNeNN prefix.

Release 20221228:

  • PlayOnAPI.suburl_data: progress reporting, raise on bad response, upgrade JSON error warning.
  • PlayOnAPI: use a common cookie jar across API calls.
  • PlayOnCommand: new "api" and "cds" API access subcommands.
  • PlayOnCommand._refresh_sqltags_data: bugfix "expired cache" logic.
  • PlayOnCommand: new "poll" subcommand reporting the API notifications response.

Release 20220311: Bugfix criteria for refreshing the PlayOn state.

Release 20211212: Initial release.

Metadata

Release files for cs-app-playon 20230217

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cs-app-playon 20230217
File Size Uploaded Provenance Actions
cs.app.playon-20230217.tar.gz 15.0 kB Without provenance Details for cs.app.playon-20230217.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cs-app-playon 20230217
File Interpreter ABI Platform Actions
cs.app.playon-20230217-py3-none-any.whl Python 3 none any Details for cs.app.playon-20230217-py3-none-any.whl

Total release size: 27.5 kB

Release files / cs.app.playon-20230217.tar.gz

Download URL cs.app.playon-20230217.tar.gz
Size 15.0 kB
Tags Source
SHA-256 checksum
How to use checksums
11d9a948d86a5594ef25c88bc377383769bc48669ad307239e6c47bf91581e13
BLAKE2b-256 checksum
How to use checksums
92960a082899251fad2ee8bf32b8f5afcc9bdf09d1b4691fa033fe75599b5c28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / cs.app.playon-20230217-py3-none-any.whl

Download URL cs.app.playon-20230217-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
338cd0dfd7dff85a312165af819cce5a127b7764ea298c8a898b26ea300d9727
BLAKE2b-256 checksum
How to use checksums
ba8517c232597268cb9e1ad78870d4c81f30d09b9eff26e87356753f4a5c807d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Security for cs-app-playon 20230217

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page