Metadata-Version: 2.1
Name: upsies
Version: 2024.2.27
Summary: Media metadata aggregator
Author-email: plotski <plotski@example.org>
License: GPL-3.0-or-later
Project-URL: Repository, https://codeberg.org/plotski/upsies
Project-URL: Documentation, https://upsies.readthedocs.io
Project-URL: Bug Tracker, https://codeberg.org/plotski/upsies/issues
Project-URL: Changelog, https://codeberg.org/plotski/upsies/raw/branch/master/NEWS
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: aiobtclientapi==1.1.*
Requires-Dist: async-lru==2.*
Requires-Dist: beautifulsoup4==4.*
Requires-Dist: countryguess==0.*
Requires-Dist: guessit==3.*,>=3.5.0
Requires-Dist: httpx==0.*
Requires-Dist: langcodes==3.*
Requires-Dist: natsort==8.*
Requires-Dist: packaging
Requires-Dist: prompt_toolkit==3.*,>=3.0.6
Requires-Dist: pyimgbox==1.*
Requires-Dist: pyxdg
Requires-Dist: setuptools>=66.1
Requires-Dist: term_image==0.7.*
Requires-Dist: torf==4.*,>=4.1.2
Requires-Dist: Unidecode==1.3.*
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Requires-Dist: pytest-timeouts; extra == "dev"
Requires-Dist: pytest-httpserver; extra == "dev"
Requires-Dist: trustme; extra == "dev"
Requires-Dist: tox; extra == "dev"
Requires-Dist: coverage; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: isort; extra == "dev"

.. image:: https://img.shields.io/pypi/pyversions/upsies
           :target: https://www.python.org/
.. image:: https://img.shields.io/pypi/l/upsies
           :target: https://www.gnu.org/licenses/gpl-3.0.en.html
.. image:: https://img.shields.io/pypi/v/upsies
           :target: https://pypi.org/project/upsies/
.. image:: https://img.shields.io/librariesio/release/pypi/upsies
           :target: https://libraries.io/pypi/upsies
.. image:: https://img.shields.io/pypi/dm/upsies
           :target: https://pypistats.org/packages/upsies

------------------------------------------------------------

``upsies`` is a toolkit for collecting, generating, normalizing and sharing
video metadata. It comes with a command line interface and can be used in shell
scripts. It is written in pure Python and is designed to be friendly to users
and useful for Python developers.

.. figure:: docs/demo.gif

   ``dummy`` is a no-op tracker and client. Every tracker defines a custom set
   of jobs that generate the metadata needed for submission.

Features
--------

* Search IMDb, TMDb and TVmaze for ID
* Generate standardized release name
* Create screenshots at auto-generated timestamps and optimize them with `oxipng
  <https://github.com/shssoichiro/oxipng/>`_
* Upload screenshots to an image hosting service with fallback options if the
  service is down
* Create ``.torrent`` file or re-use an existing torrent file by copying piece
  size and piece hashes
* Add ``.torrent`` file to supported BitTorrent client or copy it to a watch
  directory
* Identify and verify scene releases
* Submit generated metadata to a supported tracker
* Do everything simultaneously

``upsies`` is developed on `Codeberg <https://codeberg.org/plotski/upsies>`_.

The latest release is available on `PyPI <https://pypi.org/project/upsies>`_.

Documentation is hosted on `Read the Docs <https://upsies.readthedocs.io/en/stable/>`_.
