All Projects → dbr → Tvdb_api

dbr / Tvdb_api

Licence: unlicense
Simple to use interface to TheTVDB.com API in Python

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Tvdb api

poloniex-api
PHP wrapper for the Poloniex API
Stars: ✭ 20 (-93.98%)
Mutual labels:  api-wrapper
ripe-atlas
RIPE Atlas API access in Go.
Stars: ✭ 21 (-93.67%)
Mutual labels:  api-wrapper
Pycoingecko
Python wrapper for the CoinGecko API
Stars: ✭ 270 (-18.67%)
Mutual labels:  api-wrapper
rredlist
IUCN Red List API Client
Stars: ✭ 31 (-90.66%)
Mutual labels:  api-wrapper
Scrython
A python wrapper for the Scryfall API
Stars: ✭ 87 (-73.8%)
Mutual labels:  api-wrapper
worrms
World Register of Marine Species R client
Stars: ✭ 13 (-96.08%)
Mutual labels:  api-wrapper
pushover
Go wrapper for the Pushover API
Stars: ✭ 112 (-66.27%)
Mutual labels:  api-wrapper
Sodapy
Python client for the Socrata Open Data API
Stars: ✭ 312 (-6.02%)
Mutual labels:  api-wrapper
JBWAPI
Pure Java BWAPI Client implementation for JVM languages
Stars: ✭ 16 (-95.18%)
Mutual labels:  api-wrapper
Hubspot Php
HubSpot PHP API Client
Stars: ✭ 273 (-17.77%)
Mutual labels:  api-wrapper
pastemyst-rs
An API Wrapper for https://paste.myst.rs written in rust
Stars: ✭ 14 (-95.78%)
Mutual labels:  api-wrapper
SoundCloud-API
SoundCloud API wrapped into a bunch of classes. Built with Retrofit2 and RxJava2.
Stars: ✭ 63 (-81.02%)
Mutual labels:  api-wrapper
kaggler
🏁 API client for Kaggle
Stars: ✭ 50 (-84.94%)
Mutual labels:  api-wrapper
doing-cli
CLI tool to simplify the development workflow on azure devops
Stars: ✭ 19 (-94.28%)
Mutual labels:  api-wrapper
Crawlertutorial
爬蟲極簡教學(fetch, parse, search, multiprocessing, API)- PTT 為例
Stars: ✭ 282 (-15.06%)
Mutual labels:  api-wrapper
oxford dictionary
📙 A Ruby wrapper for the Oxford Dictionary API
Stars: ✭ 23 (-93.07%)
Mutual labels:  api-wrapper
genshin-kit-node
原神玩家信息查询封装库 / An API wrapper for fetching player data of Genshin Impact from any servers.
Stars: ✭ 83 (-75%)
Mutual labels:  api-wrapper
Alpha vantage
A python wrapper for Alpha Vantage API for financial data.
Stars: ✭ 3,553 (+970.18%)
Mutual labels:  api-wrapper
Yahooquery
Python wrapper for an unofficial Yahoo Finance API
Stars: ✭ 288 (-13.25%)
Mutual labels:  api-wrapper
cl-kraken
A Common Lisp API wrapper for the Kraken cryptocurrency exchange.
Stars: ✭ 12 (-96.39%)
Mutual labels:  api-wrapper

tvdb_api

PyPI Build Status codecov

tvdb_api is an easy to use interface to thetvdb.com

It supports Python 2.7, and 3.5 onwards

tvnamer has moved to a separate repository: github.com/dbr/tvnamer - it is a utility which uses tvdb_api to rename files from some.show.s01e03.blah.abc.avi to Some Show - [01x03] - The Episode Name.avi (which works by getting the episode name from tvdb_api)

To install

You can easily install tvdb_api via pip

pip install --upgrade tvdb_api

You may need to use sudo, depending on your setup:

sudo pip install --upgrade tvdb_api

Basic usage

First initialise an instance of the Tvdb class with your API key:

import tvdb_api
t = tvdb_api.Tvdb() 

Note you must specify the apikey argument here, for example:

t = Tvdb(apikey="ENTER YOUR API KEY HERE") # doctest:+SKIP

See https://thetvdb.com/api-information to register a key.

Then to use the API:

episode = t['My Name Is Earl'][1][3] # get season 1, episode 3 of show
print episode['episodename'] # Print episode name

Registering an API key

You must have an API key from http://thetvdb.com in order to use this module.

Registering for a key is easy to do and can be done within a few minutes - see the following page for details:

https://thetvdb.com/api-information

Note: In tvdb_api v2 a default key was included for convenience. However over time this key became very heavily used and this causes problems for TheTVDB.com admins. This old shared key will be deprecated and removed at some point soon.

Advanced usage

Most of the documentation is in docstrings. The examples are tested (using doctest) so will always be up to date and working.

The docstring for Tvdb.__init__ lists all initialisation arguments, including support for non-English searches, custom "Select Series" interfaces and enabling the retrieval of banners and extended actor information. You can also override the default API key using apikey, recommended if you're using tvdb_api in a larger script or application

Exceptions

There are several exceptions you may catch, these can be imported from tvdb_api:

  • tvdb_error - this is raised when there is an error communicating with thetvdb.com (a network error most commonly)
  • tvdb_userabort - raised when a user aborts the Select Series dialog (by ctrl+c, or entering q)
  • tvdb_shownotfound - raised when t['show name'] cannot find anything
  • tvdb_seasonnotfound - raised when the requested series (t['show name][99]) does not exist
  • tvdb_episodenotfound - raised when the requested episode (t['show name][1][99]) does not exist.
  • tvdb_attributenotfound - raised when the requested attribute is not found (t['show name']['an attribute'], t['show name'][1]['an attribute'], or t['show name'][1][1]['an attribute'])

Series data

All data exposed by thetvdb.com is accessible via the Show class. A Show is retrieved by doing..

>>> import tvdb_api
>>> t = tvdb_api.Tvdb()
>>> show = t['scrubs']
>>> type(show)
<class 'tvdb_api.Show'>

For example, to find out what network Scrubs is aired:

>>> t['scrubs']['network']
u'ABC'

The data is stored in an attribute named data, within the Show instance:

>>> t['scrubs'].data.keys()
['networkid', 'rating', 'airs_dayofweek', 'contentrating', 'seriesname', 'id', 'airs_time', 'network', 'fanart', 'lastupdated', 'actors', 'ratingcount', 'status', 'added', 'poster', 'tms_wanted_old', 'imdb_id', 'genre', 'banner', 'seriesid', 'language', 'zap2it_id', 'addedby', 'firstaired', 'runtime', 'overview']

Although each element is also accessible via t['scrubs'] for ease-of-use:

>>> t['scrubs']['rating']
u'9.0'

This is the recommended way of retrieving "one-off" data (for example, if you are only interested in "seriesname"). If you wish to iterate over all data, or check if a particular show has a specific piece of data, use the data attribute,

>>> 'rating' in t['scrubs'].data
True

Banners and actors

Since banners and actors are separate XML files, retrieving them by default is undesirable. If you wish to retrieve banners (and other fanart), use the banners Tvdb initialisation argument:

>>> from tvdb_api import Tvdb
>>> t = Tvdb(banners = True)

Then access the data using a Show's _banner key:

>>> t['scrubs']['_banners'].keys()
['fanart', 'poster', 'series', 'season']

The banner data structure will be improved in future versions.

Extended actor data is accessible similarly:

>>> t = Tvdb(actors = True)
>>> actors = t['scrubs']['_actors']
>>> actors[0]
<Actor "Zach Braff">
>>> actors[0].keys()
['sortorder', 'image', 'role', 'id', 'name']
>>> actors[0]['role']
u'Dr. John Michael "J.D." Dorian'

Remember a simple list of actors is accessible via the default Show data:

>>> t['scrubs']['actors']
u'|Zach Braff|Donald Faison|Sarah Chalke|Judy Reyes|John C. McGinley|Neil Flynn|Ken Jenkins|Christa Miller|Aloma Wright|Robert Maschio|Sam Lloyd|Travis Schuldt|Johnny Kastl|Heather Graham|Michael Mosley|Kerry Bish\xe9|Dave Franco|Eliza Coupe|'
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].