- Added
Trakt['sync/playback'].delete(<id>)
method (#54)
- Added
- Improved token refreshing (and added the "oauth.refresh" and "oauth.refresh.rejected" events)
- RequestFailedError exception will now be raised if no response was returned (if exceptions=True)
Trakt.http.keep_alive
property (defaults to :code:`True`)Trakt.http.ssl_version
property (defaults to :code:`None` / :code:`PROTOCOL_TLS` / :code:`PROTOCOL_SSLv23`)
- Changed
- Switched default API endpoint to https://api.trakt.tv
- SSL protocol version is now automatically negotiated with the server (instead of defaulting to TLS v1.0)
- Warning will now be displayed if a deadlock is detected inside token refresh events
- Fixed some inconsistencies in the handling of error responses
- Updated bundled emitter module (fuzeman/PyEmitter@3c558c7c2bc3ae07cb1e8e18b2c1c16be042c748)
- Interfaces:
Trakt['search']
- Updated to use the new search endpoints
- Methods:
Trakt['search'].lookup
- Now supports the
extended
parameter
- Now supports the
Trakt['search'].query
- Now supports the
fields
andextended
parameters
- Now supports the
- Fixed
@authenticated
decorator wasn't applied to some methods, resulting in tokens not being refreshed- Exception raised when
Trakt['scrobble']
methods are provided "app_version" or "app_date" parameters - Error responses weren't being returned correctly with
parse=False
- Issue handling
None
responses in the automatic token refresher - Inconsistent handling of error responses in some methods
- Added
- Properties
Movie
tagline
released
runtime
certification
updated_at
homepage
trailer
language
available_translations
genres
Show
first_aired
airs
runtime
certification
network
country
updated_at
status
homepage
language
available_translations
genres
aired_episodes
Season
first_aired
episode_count
aired_episodes
Episode
first_aired
updated_at
available_translations
- Changed
- Methods on the
Trakt['movies']
andTrakt['shows']
interfaces now support theextended
parameter (#51) - Minor improvements to property descriptions on the
Show
andEpisode
objects
- Methods on the
- Changed
- Removed some stray files from the source distribution
- Added
- Methods:
Trakt['shows'].next_episode
(#50)Trakt['shows'].last_episode
(#50)
- Added
- Properties:
Person.listed_at
Video.action
- Methods:
Trakt['sync/history'].get
Trakt['sync/history'].shows
Trakt['sync/history'].movies
- Changed
- Updated
SyncMapper
to support flat iterators - Methods:
Trakt['sync/ratings'].get
- Flat iterator will now be returned if no
media
parameter is provided
- Flat iterator will now be returned if no
Trakt['sync/watchlist'].get
- Pagination is now supported, can be enabled with
pagination=True
media
parameter can now be specified asNone
to return all items (with no type filter)
- Pagination is now supported, can be enabled with
- Updated
- Fixed
- Pagination wouldn't work correctly if a starting page was specified
- Added
- Lists containing people are now supported (instead of raising an exception)
SyncMapper
can now be used without thestore
parameter- Objects:
Person
- Properties:
Video.id
(history id)Video.watched_at
(history timestamp)
- Methods:
Media.get_key(<service>)
- Fixed
- Invalid classifier was defined in [setup.py]
- Added
- Support for multiple
media
options on theTrakt['search'].query()
method - Implemented the
media
parameter on theTrakt['search'].lookup()
method
- Support for multiple
- Changed
- "Request failed" warnings now display the request method and path to help with debugging
- Improved handling of requirements in [setup.py]
- Changed
- Updated request error messages
- Fixed
- Authorization tokens generated with device authentication wouldn't refresh correctly
- Added
Trakt['oauth/device']
(seeexamples/authentication/device.py
for usage details)Trakt['shows'].seasons()
now supports theextended="episodes"
parameter- Pagination can now be enabled with
pagination=True
, warnings will be displayed if you ignore pagination responses
- Changed
- Moved the
Trakt['oauth'].pin_url()
method toTrakt['oauth/pin'].url()
, the old method still works but will display a deprecation warning
- Moved the
- Fixed
- Issue retrieving lists by users with the
.
character in their usernames
- Issue retrieving lists by users with the
- Added
in_watchlist
property toMovie
,Show
,Season
andEpisode
objects (#45)Trakt.site_url
setter to override automatic detectionHttpClient
now supports direct calls (#43)
- Changed
- Tests are now included in builds, but are excluded from installations
- Fixed
- Issue installing trakt.py when "six" hasn't been installed yet
- Added
Trakt['users'].likes()
methodCustomList.items()
methodComment
objectMedia.index
attribute (list item position/rank)- Basic documentation generation (#29)
NullHandler
to the logger to avoid "No handler found" warnings (#33)
- Changed
- 'movies' and 'shows' interface methods to support the
exceptions=True
parameter (#32) Interface.get_data()
to only parse the response body if the request is successful (#32)
- 'movies' and 'shows' interface methods to support the
- Fixed
TypeError
was raised inSummaryMapper
if the request failed (#30, #31)- Constructing "Special" episodes could raise an
AttributeError
(#38, #39) Media._update()
"images" attribute- Issue serializing
List
objects
- Fixed
- Issue where the "_client" attribute on objects was being serialized
- Issue installing trakt.py when "arrow" isn't available yet
- Added
trending()
method toTrakt['shows']
andTrakt['movies']
interfaces (#23)seasons()
andepisodes()
methods to theTrakt['sync/watchlist']
interface (#26)- Custom lists support (
Trakt['users/*/lists']
,Trakt['users/*/lists/*']
) (#26) __eq__()
method on theRating
classproxies
attribute onTrakt.http
- Changed
datetime
objects are now returned offset-aware (make sure you use offset-aware `datetime` objects when comparing timestamps now)- Force requests to use
ssl.PROTOCOL_TLSv1
connections for https:// (#25) - Return site url from
Trakt['oauth'].authorize_url()
- Use season number from parent when one isn't defined in the episode
- Changes
- Added support for PIN authentication
- Added automatic OAuth token refreshing (see "examples/pin.py" for an example)
- Added
Trakt.configuration.oauth.from_response()
configuration method - Added tests for the
Trakt['oauth']
interface - Added tests to ensure authentication headers are being sent
Trakt['oauth']
methods now raise an exception if you are missing required configuration parametersTrakt['oauth'].token()
method has been renamed toTrakt['oauth'].token_exchange()
(old method is still present for compatibility)
- Fixed
Trakt['oauth']
"_url" methods could raise an exception in some cases
- Changes
- Added unit tests (with travis-ci.org and coveralls.io integrations)
- Added
/movies
,/shows
,/search
and/users/settings
interfaces - Added parent properties ("show", "season")
- Added "images", "overview" and "score" properties to the
Media
class - Added "last_watched_at" property to movies and episodes
- Updated
/sync/playback
interface (to include type filtering) - "progress" and "paused_at" properties are now included in
to_dict()
- Fixed
- "year" property could be returned as a string in some cases
- Catch an exception in
trakt.media_mapper
- Catch a case where
Interface.get_data()
can raise aKeyError: 'content-type'
exception
- Changes
- Updated to use the new v2 API endpoint (api-v2launch.trakt.tv)
- Episode and Movie
to_dict()
method now always returns "plays" as an integer - Added "http.retry_sleep" and "http.timeout" configuration parameters
- Setup travis/coveralls services
- Fixed
- Python 3.x compatibility issues
- Changes
- Added "exceptions" and "parse" parameter to Interface.get_data()
- Added additional error messages (502, 504, 520)
- Renamed media object to_info() method to to_identifier()
- Added new to_dict() method which returns a dictionary representation of the media object
- Request retrying (on 5xx errors) can now be enabled with Trakt.configuration.http(retry=True)
- requests/urllib3 now retries requests on connection errors (default: 3 retries)
- Fixed
- Thread synchronization issue with trakt.core.configuration
- [/sync] last_activities() used an incorrect path
- Catch all response errors to avoid issues parsing the returned body
- Handle a case where [media_mapper] processes an item with an empty "ids" dict
- Switched to manual interface importing to avoid security restrictions
- Convert all datetime properties to UTC
- Allow for charset definitions in "Content-Type" response header
- Display request failed messages in log (with error name/desc)
- Fixed broken logging message
- Properly handle responses where trakt.tv returns errors without a json body
- Re-designed to support trakt 2.0 (note: this isn't a drop-in update - interfaces, objects and methods have changed to match the new API)
- Support for OAuth and xAuth authentication methods
- Simple configuration system
- "title" and "year" parameters are now optional on scrobble() and watching() methods
- [movie] Added unseen() method
- [show/episode] Added unseen() method
- Return None if an action fails validation (instead of raising an exception)
- Added Trakt.configure() method
- Rebuild session on socket.gaierror (workaround for urllib error)
- Fixed bugs sending media actions
- Renamed cancel_watching() to cancelwatching()
- "title" and "year" parameters are now optional on media actions
- [movie] Added seen(), library() and unlibrary() methods
- [movie] Implemented media mapping
- [rate] Added shows(), episodes() and movies() methods
- [show] Added unlibrary() method
- [show/episode] Added library() and seen() methods
- Added @authenticated to MediaInterface.send()
- Fixed missing imports
- Initial release