## v7.4.3+beta.1
### Fixed
- Updates to resolve inconsistent Python2 string encoding/decoding
- Ensure parameters to Kodi builtin functions are parsed as string literals
- Allow trailing slashes in url of html pages served by internal http server

### Changed
- Open confirmation dialog, with a link for further information, when sign in process fails
- Update API config page html
- Improve handling of API key settings changes
- Detect and notify when API requests cannot be completed
- Use consistent language for signing in/out

### New
- Add button in API settings to view address of API config page
- Fallback to playing channel uploads if no live stream is available
- Add fallback method to load playlists when v3 API request cannot be made

## v7.4.2
### Fixed
- Ensure updated context is used in client instance when rerouting to existing provider handler methods #1418
- Fix required ID potentially not being passed to YouTubeDataClient.(add|remove)_video_from_playlist() #1418
- Skip unplayable live manifests #1377
- Handle inconsistent error codes and names used in Python 2 #1412
- Simplify byte range to timestamp conversion for compatibility with Python 2 #1412
- Fix unnecessarily reloading listing when adding items to Bookmarks

### Changed
- Update parsing of plugin urls for path params and ID lists #1418
- Rework addon debug log settings (Addon > Settings > Advanced > Debug > Enable debug logging) #1385
  - Allowable values:
    - Disabled (addon logging output disabled)
    - Auto (default, addon logging output enabled if Kodi debug logging enabled)
    - Always enabled (addon logging output enabled)
    - Verbose (additional addon logging output enabled)
- Various other improvement to addon logging

### New
- Update Setup Wizard to account for user possibly using mismatched watch history settings

## v7.4.2+beta.2
### Fixed
- Ensure updated context is used in client instance when rerouting to existing provider handler methods #1418
- Fix required ID potentially not being passed to YouTubeDataClient.(add|remove)_video_from_playlist() #1418

### Changed
- Update parsing of plugin urls for path params and ID lists #1418

## v7.4.2+beta.1
### Fixed
- Skip unplayable live manifests #1377
- Handle inconsistent error codes and names used in Python 2 #1412
- Simplify byte range to timestamp conversion for compatibility with Python 2 #1412
- Fix unnecessarily reloading listing when adding items to Bookmarks

### Changed
- Rework addon debug log settings (Addon > Settings > Advanced > Debug > Enable debug logging) #1385
  - Allowable values:
    - Disabled (addon logging output disabled)
    - Auto (default, addon logging output enabled if Kodi debug logging enabled)
    - Always enabled (addon logging output enabled)
    - Verbose (additional addon logging output enabled)
- Various other improvement to addon logging

### New
- Update Setup Wizard to account for user possibly using mismatched watch history settings

## v7.4.1.1
### Fixed
- Address possible race condition resulting in KeyError exception when calling pop() on an empty set

## v7.4.1
### Fixed
- Fix unnecessary double resolve on playback #1371
- Attempt to break busy dialog workaround loop if post run action succeeds #1386
- Don't swallow unhandled plugin exceptions without logging and running listing end callback #1386
- Python 2 compatibility fix for urllib3 only checking for str type when accessing module constants using getattr
- Always refresh missing access tokens if partially logged in and refresh tokens are available #1389
- Fix missing post run plugin runner option used when search input is a plugin url
- Fix incorrectly identifying and removing Opus audio from list of available streams #537
- Clean up window properties in case of exception during plugin invocation #1386

### Changed
- Simplify caching and fetching of updated subscriptions for My Subscriptions #1395
- Always load cached My Subscriptions feed data and load cached data if feed update fails #1395
- Use available access token when first initialising client rather than setting access tokens at later stage of client initialisation #1389
- Don't cache main plugin menu so that Sign-In/Out item always reflects actual logged in status
- Automatically add/remove items from local watch later list when using YouTube WL list

### New
- Add Auto-like after watch feature with optional channel filtering

## v7.4.1+beta.3
### Changed
- Always load cached My Subscriptions feed data and load cached data if feed update fails #1395

## v7.4.1+beta.2
### Fixed
- Fix unnecessary double resolve on playback #1371
- Attempt to break busy dialog workaround loop if post run action succeeds #1386
- Don't swallow unhandled plugin exceptions without logging and running listing end callback #1386
- Python 2 compatibility fix for urllib3 only checking for str type when accessing module constants using getattr

## v7.4.1+beta.1
### Fixed
- Always refresh missing access tokens if partially logged in and refresh tokens are available #1389
- Fix missing post run plugin runner option used when search input is a plugin url
- Fix incorrectly identifying and removing Opus audio from list of available streams #537
- Clean up window properties in case of exception during plugin invocation #1386

### Changed
- Use available access token when first initialising client rather than setting access tokens at later stage of client initialisation #1389
- Don't cache main plugin menu so that Sign-In/Out item always reflects actual logged in status
- Automatically add/remove items from local watch later list when using YouTube WL list

### New
- Add Auto-like after watch feature with optional channel filtering

## v7.4.0.1
### Fixed
- Use correct default value if view count is missing from player requests response #1386

## v7.4.0
### Fixed
- Fix exceptions caused by retrieving incorrect setting for audio only streams
- Add ForceResolvePlugin property to resolved ListItem #1371
- Fix continuously loading SSL certificate when not required
- Ensure logged URLs are redacted
- Improve workarounds and fallbacks used to query Kodi language settings #1372
- Fix error in PlayerMonitorThread.run #1368
- Don't prevent JSON file writes if there is no existing file to read #1362
- Improve sqlite3 exception handling
- Various Python 2 compatibiliy fixes
- Avoid creating PlayerMonitorThread as a subclass of threading.Thread
- Additional workarounds for JSON file operations failing due to addon service start delays #1362
- Avoid unnecessary window navigation when opening More... context menu dialog
- Fix typo in evaluating whether plugin container is loaded or active
- Fix possible exception when using default fallback for failed search
- Fix retrieving items from local history database #1356
- Fix fallback method for retrieving string list setting when setting has no value
- Update workaround for Python strptime bug
- Fix not updating authorised client request result used for playback tracking #1343
- Don't process results in resource_manager methods if no items are available
- Set default MPEG-DASH timescale to 1000
- Disable request cache if response is streamed

### Changed
- Update and trigger Setup Wizard to set default value for My Subscription sources
- Pass additional headers to all player request and manifest urls by default
- Workaround Kodi not executing Play action on listitems in non-video containers
- Improve context menu runtime checks when used with widget containers
- Re-organise post play settings
- Enable streaming for My Subscriptions feed requests

### New
- Add context menu items to open Settings/Setup Wizard from Setup Wizard/Settings main menu entries
- Log summary of stream proxy request and response details #1363
- Log stream proxy request range #1363
- Add setting to choose what sources are used for My Subscriptions
- Add aspect ratio info to video ListItem #1348
- Enable using saved playlists in My Subscriptions

## v7.4.0+beta.5
### Fixed
- Fix exceptions caused by retrieving incorrect setting for audio only streams

## v7.4.0+beta.4
### Fixed
- Add ForceResolvePlugin property to resolved ListItem #1371
- Fix continuously loading SSL certificate when not required
- Ensure logged URLs are redacted
- Improve workarounds and fallbacks used to query Kodi language settings #1372
- Fix error in PlayerMonitorThread.run #1368
- Don't prevent JSON file writes if there is no existing file to read #1362
- Improve sqlite3 exception handling
- Various Python 2 compatibiliy fixes

## v7.4.0+beta.3
### Fixed
- Avoid creating PlayerMonitorThread as a subclass of threading.Thread
- Additional workarounds for JSON file operations failing due to addon service start delays #1362
- Avoid unnecessary window navigation when opening More... context menu dialog
- Fix typo in evaluating whether plugin container is loaded or active
- Fix possible exception when using default fallback for failed search

### Changed
- Update and trigger Setup Wizard to set default value for My Subscription sources
- Pass additional headers to all player request and manifest urls by default
- Workaround Kodi not executing Play action on listitems in non-video containers
- Improve context menu runtime checks when used with widget containers

### New
- Add context menu items to open Settings/Setup Wizard from Setup Wizard/Settings main menu entries
- Log summary of stream proxy request and response details #1363
- Log stream proxy request range #1363

## v7.4.0+beta.2
### Fixed
- Fix retrieving items from local history database #1356

## v7.4.0+beta.1
### Fixed
- Fix fallback method for retrieving string list setting when setting has no value
- Update workaround for Python strptime bug
- Fix not updating authorised client request result used for playback tracking #1343
- Don't process results in resource_manager methods if no items are available
- Set default MPEG-DASH timescale to 1000
- Disable request cache if response is streamed

### Changed
- Re-organise post play settings
- Enable streaming for My Subscriptions feed requests

### New
- Add setting to choose what sources are used for My Subscriptions
- Add aspect ratio info to video ListItem #1348
- Enable using saved playlists in My Subscriptions

## v7.3.0.1
### Fixed
- Workaround crash caused by non-thread safe behaviour of sqlite connection when used as context manager #1346

### Changed
- Delay gc collection rather than disabling

## v7.3.0
### Fixed
- Revert change to busy polling interval #1339
- Prune invalid entries from DB when closing connection #1331
- Fix regressions with SQLite db operations #1331
- Disable label masks being used in Kodi 18 #1327
- Python 2 compatibility workaround for lack of timeout when trying to acquire an RLock #1327
- More expansive handling of inconsistent urllib3 exception re-raising
- Fix regression in handling audio only setting after d154325c5b672dccc6a17413063cfdeb32256ffd
- Fix comments not using correct sort methods
- Fix incorrectly using playlist cache entries that have been invalidated by playlist modification
- Fix some context menu actions failing for video item bookmarks
- Ensure listings and items added by the addon have correct sort order
- Fix resetting client region when playing media with subtitles enabled
- Only add playable items to playlist when adding related items
- Fix using invalid default end limit with Playlist.GetItems JSONRPC method
- Fix conversion of SRT subtitles to WebVTT #1256
- Workaround playback failure of progressive streams
- Fix re-sorting live search lists
- Disable use of custom thumbnail urls #1245
- Workaround addon service not starting prior to plugin invocation #1298
- Fix unofficial version using localised sort order #1309
- Fix parsing of logged_in query parameter
- Fix typo in YouTubePlayerClient error hook
- Fix not resolving single playable items when using the uri2addon plugin endpoint #1300
- Correctly check whether access tokens are available to be used for player requests
- Fix not correctly resetting client instance
- Dont restore container position on forced refresh when playback ends
- Better handle urllib3 re-raising low level errors but sometimes not
- Ignore unused parameters in item constructors #1282
- Various misc fixes for focus and position loss on refresh
- Fix possible unnecessary listing refresh after playlist action
- Don't check items added to non music or video playlists
- Re-enable setting for displaying saved playlists #1023
- Fix exceptions with using non-existent request response as context manager #1279
- Use different default player client request which provides more captions in response #1250
- Exclude retrying player clients that do not support authentication if authentication is required #1273
- Only request authenticated player request once, if not otherwise required #1273
- Fix not updating breadcrumb after certain context menu actions
- Fix setting focus on items in listing when parent item is not shown #1012
- Reduce CPU usage of service runner loop when idle
- Simplify window history fallback for search inputs #1070 #1266
- Fix MPD quality selection #1268
- Fix stream feature for disabling HFR at max resolution #539
- Don't re-raise BrokenPipeError in RequestHandler.handle_one_request #1259
- Fix including details in label2 mask when video details in listings is disabled #1265
- Fix incorrect modification of custom thumbnails #1245
- Refresh stale cached entries if new player data is available #1259
- Disable use of captions from clients that are sometimes aggressively rate limited #1250
- Switch browse client for recommended videos #1254
- Ignore failing player requests that require signing in but won't accept OAuth2 authentication #1254
- Improve querying of GUI info to work with widgets and custom windows #1243
- Fix using locale specific abbreviations for weekday and month in If-Modified-Since header #1246
- Workaround various Kodi 18 and Python 2 issues #1246
- Fix inconsistencies between item IDs used as params that could result in exceptions
- Fix generated page token not working for first page in listing
- Don't replace non-standard JPEG thumbnails with WebP thumbnails #1245
- Fix not parsing infolabels used in plugin url path #1239 #1243
- Fix not parsing infolabels used as plugin url query params #1239
- Fix unnecessarily processing window properties #1238
- Workaround for distributions that patch Kodi to disable System.InternetState #1224
- Workaround issue with search not returning items if no search query is used
- Misc updates to try and prevent some GVS requests from failing #1222
- Fix not correctly updating channel details of subscriptions #1226
- Redact IP address in stream urls when not using InputStream.Adaptive
- Fix implementation of logging module debugging property
- Python 2 compatibility fix to automatically handle timezones when determining timestamps
- Fix not skipping invalid items in plugin list response
- Fix not showing Create bookmark item if bookmarks list is empty
- Python 2 compatibility fixes for pretty print logging and lack of datetime.datetime.timestamp
- Fix typo resulting in spatial audio streams not being correctly enabled/disabled
- Ensure DELETE API requests are properly authorised #1226
- Update XbmcContext.localize to handle string interpolation #1225
- Attempt to mitigate possible memory leaks associated with use of Python Requests
- Ensure plugin folders in channel listings are not processed as YouTube items
- Fix not refreshing cached data when not logged in #1224
- Fix potentially misidentifying vp9.2 video streams #1222
- Fix not fully redacting logged stream data
- Fix clip start and end time parsing
- Fix possible exception when fetching subtitles after http server fails to wakeup
- Improve concurrent JSON file IO operations #1218
- Change pruning of sqlite databases to avoid potential deadlocks #1161
- Avoid potential deadlock in v3._process_list_response #1161
- Improve listing pre and post fill methods #1161
- Fix repeating previous V1 browse/next requests when no continuation is available #1161
- Fix typo in allowable search parameters
- Ensure best available quality is used for thumbnails as fanart #1212
- Fix double forward slash in channel url in description
- Fix toggling watched status on non-forced refresh
- Ensure logged in status is properly (re)set when client is reset #1210
- Don't rely on dict insertion order for client groups #1185
- Ensure authenticated requests are used only when necessary #1210 #1196
- Workaround playlistNotFound error in Related Videos #1210 #1196
- Fix stream quality checks incorrectly identifying 480p streams as 360p
- Add workarounds for various Kodi/ISA subtitle incompatibilities and formatting issues #489 #1147
- Identify API requests requiring authentication
- Fix incorrect page number used when post filling listings
- Prevent unnecessary API requests when refreshing listing that uses channel filters
- Improve loading of malformed/partial access_manager.json #1173

### Changed
- Improve robustness of fetching recommended and related videos
- Improve workarounds for SQLite concurrency issues
- Remove possibly invalid access token if an authentication error occurs
- Better organise and use standard labels for http server address and port settings
- Try to make http server IP address selection even more obvious when running Setup Wizard #1320
- Improve logging of errors caused by localised strings that have been incorrectly translated
- Improve offline access to cached data
- Updates to SQLite database lock handling
- Ignore player request failures that may incorrectly indicate a need to sign-in #1312
- Include playlist_id listitem property for items from virtual playlists
- Don't list users own playlists in listing of saved playlists
- Allow sign-in when partially logged in without needing to sign-out
- Identify if user is only partially logged in
- Use persistent visitor data where possible except when incognito
- Allow additional query parameters to be inherited from parent listing #1282
- Improve process for initial player request if remote history not enabled #1273
- Disable unusable player clients #1273
- Disable multiple busy dialog crash workarounds in Kodi 22
- Include visitorData in subtitle request headers along with referer #1250
- Revert use of WEBP thumbnails #1245
- Improve notification of player request errors #1254 #1262
  - Add notification if reCaptcha check is required
- Improve workarounds for failing authorised player requests #1254
- Allow plugin url query parameters to hide folders in search and channel playlist listing #1251
- Use WebP thumbnails instead of JPEG thumbnails
- Update Setup Wizard for the various new Stream Features that have been added
- Don't cache playback associated requests
- Bypass requests cache when a listing is refreshed
- Update order and wording of prompts used when adding custom bookmark
- Allow bookmarking channel of videos within Bookmarks list
- Return empty listing on failure to parse YouTube url
- Update known itag details
- Do not show notification when automatically removing played video from Watch Later list
- Add visitor ID to stream headers #1222
- Improve logging of adaptive streams from player requests #1222
- Identify and de-prioritise DRC audio streams
- Specifically use elapsed time for plugin profiling if available
- Use new BookmarkItem class for custom bookmarks to allow updating details like normal bookmarks
- Default to list as path command if not given when navigating to various internal listings
- Re-enable http server idle shutdown for all platforms
- Update default cache size to 50 MiB
- Enable caching of YouTube virtual lists #1220
- Improve fetching of cached playlist items #1220
- Allow for use of last known good value if JSON file read IPC timeout occurs #1220
- Limit JSON-RPC usage when interacting with Kodi playlist #1220
- Improve syncing local history with Kodi play count
- api_keys.json not backwards compatible with older addon versions
- Set default live stream type to adaptive HLS
- Allow saving of play count and last played date for live streams
- Disable script.trakt scrobbling when playing YouTube videos
- Allow failure of unauthorised player requests to be ignored #1211
- Try to prevent misuse of strm files #1208
- Update thumbnails size settings and selection logic #1204
- Only show folders in channel playlists listing on first page and if not hidden
- Improve cache performance and reliability
- Improve management of user data stored as JSON files

### New
- Add refresh to context menu of playlists
- Allow watch urls from music.youtube.com to be directly handled by the addon
- Allow urls from www.youtubekids.com to be directly handled by the addon
- Add support for listing members only content of channels
- Add selections to hide various folders from listings #1282
- Add support for additional OAuth2 client to allow playback of age restricted videos #1273
- Add dubbed audio preferences to stream features #1036 #1228 #1232
- Add support for directly adding YouTube URL as custom bookmark
- Add support for 3D/VR video and spatial audio in stream selections
- Add Setup Wizard steps to change custom Watch History and Watch Later playlists to internal YouTube lists #1210
- Add support for viewing YouTube history list (HL)
- Add support for podcasts in related videos #1161
- Add notification on successfully adding item to local Watch Later list #1210
- Add support for saving/removing playlists to/from YouTube library (Saved Playlists) #1023
- Add support for removing liked videos from YouTube Liked videos list
- Add support for auto removing videos from YouTube Watch Later list after playback #1210
- Add support for removing videos from YouTube Watch Later list #1210
- Add support for adding videos to YouTube Watch Later list #1210
- Initial support for viewing Saved Playlists #1023
- Initial support for viewing YouTube Watch Later list (WL) #1210
- Implement request cache
- Add ability to create custom bookmarks #1208
- Add subtitle type selection to stream features
- Add plugin execution timeout to forcibly terminate execution after set time limit #1161
- Improve addon logging using customised Python logging module

## v7.3.0+beta.10
### Fixed
- Prune invalid entries from DB when closing connection #1331
- Fix regressions with SQLite db operations #1331

## v7.3.0+beta.9
### Fixed
- Disable label masks being used in Kodi 18 #1327
- Python 2 compatibility workaround for lack of timeout when trying to acquire an RLock #1327
- More expansive handling of inconsistent urllib3 exception re-raising

### Changed
- Improve robustness of fetching recommended and related videos
- Improve workarounds for SQLite concurrency issues
- Remove possibly invalid access token if an authentication error occurs
- Better organise and use standard labels for http server address and port settings
- Try to make http server IP address selection even more obvious when running Setup Wizard #1320
- Improve logging of errors caused by localised strings that have been incorrectly translated

## v7.3.0+beta.8
### Fixed
- Fix regression in handling audio only setting after d154325c5b672dccc6a17413063cfdeb32256ffd
- Fix comments not using correct sort methods
- Fix incorrectly using playlist cache entries that have been invalidated by playlist modification
- Fix some context menu actions failing for video item bookmarks
- Ensure listings and items added by the addon have correct sort order
- Fix resetting client region when playing media with subtitles enabled

### Changed
- Improve offline access to cached data
- Updates to SQLite database lock handling

## v7.3.0+beta.7
### Fixed
- Only add playable items to playlist when adding related items
- Fix using invalid default end limit with Playlist.GetItems JSONRPC method
- Fix conversion of SRT subtitles to WebVTT #1256
- Workaround playback failure of progressive streams
- Fix re-sorting live search lists
- Disable use of custom thumbnail urls #1245
- Workaround addon service not starting prior to plugin invocation #1298
- Fix unofficial version using localised sort order #1309
- Fix parsing of logged_in query parameter

### Changed
- Ignore player request failures that may incorrectly indicate a need to sign-in #1312
- Include playlist_id listitem property for items from virtual playlists

### New
- Add refresh to context menu of playlists
- Allow watch urls from music.youtube.com to be directly handled by the addon
- Allow urls from www.youtubekids.com to be directly handled by the addon

## v7.3.0+beta.6
### Fixed
- Fix typo in YouTubePlayerClient error hook

## v7.3.0+beta.5
### Fixed
- Fix not resolving single playable items when using the uri2addon plugin endpoint #1300
- Correctly check whether access tokens are available to be used for player requests
- Fix not correctly resetting client instance
- Dont restore container position on forced refresh when playback ends
- Better handle urllib3 re-raising low level errors but sometimes not
- Ignore unused parameters in item constructors #1282

### Changed
- Don't list users own playlists in listing of saved playlists
- Allow sign-in when partially logged in without needing to sign-out
- Identify if user is only partially logged in
- Use persistent visitor data where possible except when incognito

## v7.3.0+beta.4
### Fixed
- Various misc fixes for focus and position loss on refresh
- Fix possible unnecessary listing refresh after playlist action
- Don't check items added to non music or video playlists
- Re-enable setting for displaying saved playlists #1023
- Fix exceptions with using non-existent request response as context manager #1279
- Use different default player client request which provides more captions in response #1250
- Exclude retrying player clients that do not support authentication if authentication is required #1273
- Only request authenticated player request once, if not otherwise required #1273
- Fix not updating breadcrumb after certain context menu actions
- Fix setting focus on items in listing when parent item is not shown #1012
- Reduce CPU usage of service runner loop when idle
- Simplify window history fallback for search inputs #1070 #1266
- Fix MPD quality selection #1268
- Fix stream feature for disabling HFR at max resolution #539
- Don't re-raise BrokenPipeError in RequestHandler.handle_one_request #1259
- Fix including details in label2 mask when video details in listings is disabled #1265
- Fix incorrect modification of custom thumbnails #1245
- Refresh stale cached entries if new player data is available #1259
- Disable use of captions from clients that are sometimes aggressively rate limited #1250

### Changed
- Allow additional query parameters to be inherited from parent listing #1282
- Improve process for initial player request if remote history not enabled #1273
- Disable unusable player clients #1273
- Disable multiple busy dialog crash workarounds in Kodi 22
- Include visitorData in subtitle request headers along with referer #1250
- Revert use of WEBP thumbnails #1245
- Improve notification of player request errors #1254 #1262
  - Add notification if reCaptcha check is required
- Improve workarounds for failing authorised player requests #1254

### New
- Add support for listing members only content of channels
- Add selections to hide various folders from listings #1282
- Add support for additional OAuth2 client to allow playback of age restricted videos #1273

## v7.3.0+beta.3
### Fixed
- Switch browse client for recommended videos #1254
- Ignore failing player requests that require signing in but won't accept OAuth2 authentication #1254
- Improve querying of GUI info to work with widgets and custom windows #1243
- Fix using locale specific abbreviations for weekday and month in If-Modified-Since header #1246
- Workaround various Kodi 18 and Python 2 issues #1246
- Fix inconsistencies between item IDs used as params that could result in exceptions
- Fix generated page token not working for first page in listing
- Don't replace non-standard JPEG thumbnails with WebP thumbnails #1245
- Fix not parsing infolabels used in plugin url path #1239 #1243

### Changed
- Allow plugin url query parameters to hide folders in search and channel playlist listing #1251

## v7.3.0+beta.2
### Fixed
- Fix not parsing infolabels used as plugin url query params #1239
- Fix unnecessarily processing window properties #1238

## v7.3.0+beta.1
### Fixed
- Workaround for distributions that patch Kodi to disable System.InternetState #1224
- Workaround issue with search not returning items if no search query is used
- Misc updates to try and prevent some GVS requests from failing #1222

### Changed
- Use WebP thumbnails instead of JPEG thumbnails
- Update Setup Wizard for the various new Stream Features that have been added
- Don't cache playback associated requests
- Bypass requests cache when a listing is refreshed
- Update order and wording of prompts used when adding custom bookmark

### New
- Add dubbed audio preferences to stream features #1036 #1228 #1232

## v7.3.0+alpha.5
### Fixed
- Fix not correctly updating channel details of subscriptions #1226
- Redact IP address in stream urls when not using InputStream.Adaptive
- Fix implementation of logging module debugging property
- Python 2 compatibility fix to automatically handle timezones when determining timestamps
- Fix not skipping invalid items in plugin list response

## v7.3.0+alpha.4
### Fixed
- Fix not showing Create bookmark item if bookmarks list is empty
- Python 2 compatibility fixes for pretty print logging and lack of datetime.datetime.timestamp
- Fix typo resulting in spatial audio streams not being correctly enabled/disabled
- Ensure DELETE API requests are properly authorised #1226
- Update XbmcContext.localize to handle string interpolation #1225
- Attempt to mitigate possible memory leaks associated with use of Python Requests

### Changed
- Allow bookmarking channel of videos within Bookmarks list
- Return empty listing on failure to parse YouTube url
- Update known itag details

### New
- Add support for directly adding YouTube URL as custom bookmark

## v7.3.0+alpha.3
### Fixed
- Ensure plugin folders in channel listings are not processed as YouTube items
- Fix not refreshing cached data when not logged in #1224
- Fix potentially misidentifying vp9.2 video streams #1222
- Fix not fully redacting logged stream data

### Changed
- Do not show notification when automatically removing played video from Watch Later list
- Add visitor ID to stream headers #1222
- Improve logging of adaptive streams from player requests #1222
- Identify and de-prioritise DRC audio streams
- Specifically use elapsed time for plugin profiling if available
- Use new BookmarkItem class for custom bookmarks to allow updating details like normal bookmarks
- Default to list as path command if not given when navigating to various internal listings

### New
- Add support for 3D/VR video and spatial audio in stream selections

## v7.3.0+alpha.2
### Fixed
- Fix clip start and end time parsing
- Fix possible exception when fetching subtitles after http server fails to wakeup

### Changed
- Re-enable http server idle shutdown for all platforms
- Update default cache size to 50 MiB
- Enable caching of YouTube virtual lists #1220
- Improve fetching of cached playlist items #1220
- Allow for use of last known good value if JSON file read IPC timeout occurs #1220
- Limit JSON-RPC usage when interacting with Kodi playlist #1220

### New
- Add Setup Wizard steps to change custom Watch History and Watch Later playlists to internal YouTube lists #1210

## v7.3.0+alpha.1
### Fixed
- Improve concurrent JSON file IO operations #1218
- Change pruning of sqlite databases to avoid potential deadlocks #1161
- Avoid potential deadlock in v3._process_list_response #1161
- Improve listing pre and post fill methods #1161
- Fix repeating previous V1 browse/next requests when no continuation is available #1161
- Fix typo in allowable search parameters
- Ensure best available quality is used for thumbnails as fanart #1212
- Fix double forward slash in channel url in description
- Fix toggling watched status on non-forced refresh
- Ensure logged in status is properly (re)set when client is reset #1210
- Don't rely on dict insertion order for client groups #1185
- Ensure authenticated requests are used only when necessary #1210 #1196
- Workaround playlistNotFound error in Related Videos #1210 #1196
- Fix stream quality checks incorrectly identifying 480p streams as 360p
- Add workarounds for various Kodi/ISA subtitle incompatibilities and formatting issues #489 #1147
- Identify API requests requiring authentication
- Fix incorrect page number used when post filling listings
- Prevent unnecessary API requests when refreshing listing that uses channel filters
- Improve loading of malformed/partial access_manager.json #1173

### Changed
- Improve syncing local history with Kodi play count
- api_keys.json not backwards compatible with older addon versions
- Set default live stream type to adaptive HLS
- Allow saving of play count and last played date for live streams
- Disable script.trakt scrobbling when playing YouTube videos
- Allow failure of unauthorised player requests to be ignored #1211
- Try to prevent misuse of strm files #1208
- Update thumbnails size settings and selection logic #1204
- Only show folders in channel playlists listing on first page and if not hidden
- Improve cache performance and reliability
- Improve management of user data stored as JSON files

### New
- Add support for viewing YouTube history list (HL)
- Add support for podcasts in related videos #1161
- Add notification on successfully adding item to local Watch Later list #1210
- Add support for saving/removing playlists to/from YouTube library (Saved Playlists) #1023
- Add support for removing liked videos from YouTube Liked videos list
- Add support for auto removing videos from YouTube Watch Later list after playback #1210
- Add support for removing videos from YouTube Watch Later list #1210
- Add support for adding videos to YouTube Watch Later list #1210
- Initial support for viewing Saved Playlists #1023
- Initial support for viewing YouTube Watch Later list (WL) #1210
- Implement request cache
- Add ability to create custom bookmarks #1208
- Add subtitle type selection to stream features
- Add plugin execution timeout to forcibly terminate execution after set time limit #1161
- Improve addon logging using customised Python logging module

## v7.2.0.3
### Fixed
- Fix performance regression with channel filters
- Fix regression preventing video playback from Kodi Info dialog #1184
- Fix exception in youtube.helper.v3.response_to_items when using Kodi 18 (Python 2) #1188
- Fix exception in YouTubeRequestClient.json_traverse when using Kodi 18 (Python 2) #1187
- Fix handling of custom Watch Later playlist in add to playlist dialog
- Fix Liked video playlist not loading #1175
- Fix typo preventing some video only searches from working
- Fix incorrect deletion of provider parameter in 10c3758 #1160
- Fix possible hangs in multiple busy dialog workaround
- Fix misidentifying channels in channel filter #1159
- Attempt to avoid race condition where user input occurs prior to window rerouting #1021
- Fix incorrectly referencing channels as playlist in My Subscriptions after db44928
- Improve handling of invalid playlists in My Subscriptions after db44928
- Update YouTube.get_related_videos and YouTube.get_related_for_home #1161
- Fix error with listing comments if number of replies is 1000+
- Fix regression in opening playlists of logged in user #1154
- Fix regressions in checking channel filters
- Clear old function cache values on initial run after install #1150
- Fix My Subscriptions not loading old or previously accessed content #1123
- Manually redirect video server requests if required #1127 #1135
- Improve logging of client ID #1117
- Fix possible exception that may occur if video thumbnails fail to update
- Fix unsubscribing from My Subscriptions #1137
- Fix folders for channel shorts and live streams not being routed correctly #988 #1060
- Update YouTube.get_recommended_for_home #1107
- Improve url resolver error handling
- Fix showing Uploads playlist if all videos are private #988 #1060
- Fix updating progress of background progress dialogs #1032
- Fix showing duplicate channel progress dialogs in My Subscriptions #1032
- Ensure correct playlist_type_hint is used with audio only playback
- Workaround various issues with Kodi window opening and history navigation when accepting search inputs #1070
- Fix various Python2 unicode encoding errors
- Disable refresh parameter on Kodi forced refresh #1072
- Improve handling of playlists feeds in My Subscriptions
- Reprioritise clients and avoid re-authenticating requests if authentication already provided #1076
- Reduce CPU usage while waiting for HTTP server input/output to be ready #1103
- Fix repeated subtitle queries/prompts #1056
- Fix always using video playlist even for audio items
- Improve error handling and http server shutdown/restart #1056
- Fix possible exception in creating request clients if client_data is not provided
- Only force playback if plugin invocation was triggered through UI
- Ensure that any set UI playback properties are cleared if playback does not start
- Fix episode and season getter/setter not being available for AudioItem
- Fix full playlist listings not being able to be redirected
- Fix audio langauge fallback selection #989 #1036
  - Also correctly distinguish between original vs default audio streams
  - Respect Kodi Prefer default audio streams setting
    - Applies to both default audio and original audio
- Fix search context menu items for Next Page and New Search items
- Fix lock acquire/release logic in My Subscriptions #1032
- Avoid potential player request loop
- Revert using configured language settings for player requests
- Fix missing message argument for InvalidGrant #1038
- Fix incorrectly trying to refresh access tokens when no refresh tokens exist #1038
- Fix issues with handling duplicated and unavailable items in lists
- Fix issues with processing channel handles
- Fix processing of "q" and "channelId" search query params
- Fix using incorrect client headers with cURL when ISA is not used
- Fix incorrect use of str.lstrip
- Ensure language and region are passed to StreamInfo instances #989
- Fix not updating cache for empty feeds in My Subscriptions
- Make parsing and serialising of list type parameters a reversible operation
- Fix logic used to filter out various type of streams
  - Was previously checking any inclusion filters
  - Now any exclusion filter that matches will filter stream out
- Fix plugin URI redirect from search
- Fix incorrect path handling during migration of old sqlite databases in Setup Wizard
- Fix errors with progress dialogs in Kodi 18 #1000
- Fix remote watch history not updating #1008
- Fix error when all subtitles are requested
- Fix Python2 syntax error #1000
- Fix interaction between certain plugin URI query parameters when used in STRM files
- Fix playing clips in a playlist #1007
- Fix not identifying own playlists in personal channel
- Fix API requests when not signed in #1013
- Fix potential leak of sensitive data via HTTPServer logging #1016
- Fix adding/removing subscriptions to/from filter list
- Fix playback not working when no API key is provided #1018
- Fix using provided keys for requests that can't use them #1018
- Fix window redirect on video playback failure #1018

### Changed
- Update client details #1185
- Properly identify custom History playlist in add to playlist dialog
- Use channel handle by default when adding/removing/matching channels
  - Channel filters may need to be updated to use handles instead of channel name
  - e.g. "@channel_1_handle,@channel_2_handle" instead of "channel 1 name, channel 2 name"
  - Channels can be added/removed from the filter through the Subscriptions or Bookmarks context menu
- Use channel handle as artist and in channel info for visibility
- Reduce number of GET requests when using v3 Data API
- Improve listing filler handling #1035
  - Migrate My Subscriptions, Recommendations, Related, Trending and channel listings to use new filler methods
- Show comment statistics before text in listings
- Respect hide_folders plugin url query parameter in My Subscriptions
  - Also respect value of hide_videos (new), hide_shorts, and hide_live params
- Improve handling of using filtered playlists in channels #988 #1060
- Base64 encode/decode header query param to obfuscate in debug logs
- Update client details
- Automatically handle different types of identifiers as channel_id parameter
- Improve pagination of filtered listings #984 #1035
- Split My Subscriptions into Long Form, Shorts and Live folders #988
- Various improvements to thread handling and cache usage in My Subscriptions #1072
- Delay progress dialog creation if other dialogs are open #1072
- Minor optimisation and improve reliability of stream proxy
- Update client details and include player response visitorData
- Improve handling of invalid filter attributes #1102 #984
- Disable http server idle shutdown on Linux systems #1056
- Fetch last updated subscription feeds first and fetch playlists feeds in My Subscriptions
- Hide empty/unavailable standard playlists in channels #1060
- Store date added to playlist for playlist items #1059
- Add indication to Next page item if listing has been filtered #1035
- Proxy stream requests using HTTPServer #527 #1040
  - Correct primary video server url #1040
  - Allow skipping adaptive formats for clients that may need PO tokens #1040
  - Add option to redirect streams using stream proxy #1040
    - As headers are not matched this can lead to detection of Kodi being used as a client
- Use default http server listen address of 127.0.0.1
- Allow playback parameters to be applied for entire listings
- Further improvements to fallback window handling to minimise crashes and loss of window history
  - Enable intercepting and redirecting PlayMedia calls
  - Improve handling of search keyboard input when navigating through window history
    - Also allow bookmarks/favourites to be created for Quick Search
    - Remove need to store search query in data cache
    - Improve handling of searching for YouTube urls
- Store modified date from player requests as publishedAt for local history #991
- Update player request client details
- Reorganise video item context menu
- Re-enable player request clients that require specific OAuth tokens
- Re-enable OAuth authorisation for YouTube TV
- Update itags for 30fps HLS VP9.2 streams
- Update player client details and selections
- Add some ultra low quality itags
- Optimise wakeup to ensure http server is only started when required
- Improve check for Kodi subtitle language
- Improve handling of audio language selection #989
- Replace preferred language subtitle option with preferred language + fallback + no ASR option #992
- Allow for caching of subscriptions API requests in My Subscriptions
- Only use OAuth tokens if necessary #994 #996
- Set default live stream type to MPEG-DASH for Kodi 21+ #1004
- Skip asking or re-ordering playlists if there is only 1 item in the list
- Prevent caching in incognito mode
- Improve caching and updating of playlist details #1024
- Improve listen address config in Setup Wizard #1016
  - Also make 127.0.0.1 the default listen address
  - Fallback to 0.0.0.0 if no other local address works

### New
- Add hide_progress plugin url query parameter
- Show broadcasting streams at the top of channel live streams folder listings #1092
- Send JSON-RPC event notification when video playback fails
- Add additional debug logging of complete API response content #1107
- Add "Play recently added" context menu item to playlists #1059
  - Will play all videos added to the playlist in the last day
- Allow channels and playlists to be played from Info dialog
- Add IPv6 support for http server #1039
- Show total number of uploads, shorts and live videos in channel playlists
- Add support for more channel url formats
- Update display of comments to be match other listings
  - Make comment details follow "Show video details in video lists" setting
  - Allow various sorting options
  - Truncate comment to 140 characters in listing, full comment available in info dialog
  - Show user thumbnail in listing
  - Show user with thumbnail in info dialog
  - Show video/comment details in navigation breadcrumb bar
- Overhaul update of fanart and other channel info for listings
  - Add additional channel info to all items in listings in one pass
    - channel name thumbnail in info dialog
    - channel name in context menu items
    - channel fanart if enabled
  - Reduce network requests
  - Improve cache usage
  - Reduce thread usage
- Add custom Shorts duration #984
- Allow use of HLS streams in external players
  - Also allows for playing in Kodi without InputStream.Adaptive
- Add ability to create arbitrary filter criteria to My Subscriptions #984
  - "{ATTR_1}{OPERATOR_1}{VALUE_1}[{ATTR_X}{OPERATOR_X}{VALUE_X}...]"
    - where ATTR_X can be any valid item getter or property e.g.
      - "duration", "title", "artists"/"artists_string", "plot", "date", etc. or
      - ".live", ".upcoming", ".completed" etc. Note the "." prefix
    - where OPERATOR_X can be
      - ">", ">=" (default), "<", "<=", "=", "==", "!=" typically for a int/float/bool type VALUE or
      - "contains", "startswith", "endswith", "search" for a string type VALUE
    - where VALUE_X is the desired criteria value.
      - String type values are wrapped in double quote marks eg. "example"
        - "," must be encoded as "%2C" eg. "example,test" becomes "example%2Ctest"
        - "}" must be encoded as "%7D" eg. "example}test" becomes "example%7Dtest"
    - any number of criteria rules can be used together
      - rules seperated by a comma are OR rules
      - rules contained within a comma group are AND rules
- Add filler parameter to v3.response_to_items
  - Allows listings to be recursively filled after post request filtering
  - Also show progress dialog for all listings
- Add support for sequentially filling Recommendations listing
- Add support for sequentially filling Trending listing
- Add new advanced list filter setting
  - Works in the same manner as the My Subscriptions filter, but for all listings
  - Can also be set using the item_filter plugin URI query parameter
- Add option to prefer lower resolution streams for unselected codecs
- Populate My Subscription listings using feed details
- Store video details from player requests for local history #991
- Add separate Shorts sub-folder in Channel folders #988
  - Implementation by @mhomak
- Allow adding/removing bookmarks to/from filter list
- Add direct playback of temporary playlists from YouTube or plugin urls in the form
  - plugin://plugin.video.youtube/play?video_ids=xxxxxxxx,xxxxxxxx

## v7.2.0+beta.9
### Fixed
- Fix incorrect deletion of provider parameter in 10c3758 #1160
- Fix possible hangs in multiple busy dialog workaround
- Fix misidentifying channels in channel filter #1159
- Attempt to avoid race condition where user input occurs prior to window rerouting #1021
- Fix incorrectly referencing channels as playlist in My Subscriptions after db44928
- Improve handling of invalid playlists in My Subscriptions after db44928
- Update YouTube.get_related_videos and YouTube.get_related_for_home #1161
- Fix error with listing comments if number of replies is 1000+

### Changed
- Use channel handle by default when adding/removing/matching channels
  - Channel filters may need to be updated to use handles instead of channel name
  - e.g. "@channel_1_handle,@channel_2_handle" instead of "channel 1 name, channel 2 name"
  - Channels can be added/removed from the filter through the Subscriptions or Bookmarks context menu
- Use channel handle as artist and in channel info for visibility
- Reduce number of GET requests when using v3 Data API
- Improve listing filler handling #1035
  - Migrate My Subscriptions, Recommendations, Related, Trending and channel listings to use new filler methods
- Show comment statistics before text in listings
- Respect hide_folders plugin url query parameter in My Subscriptions
  - Also respect value of hide_videos (new), hide_shorts, and hide_live params

### New
- Add hide_progress plugin url query parameter

## v7.2.0+beta.8
### Fixed
- Fix regression in opening playlists of logged in user #1154
- Fix regressions in checking channel filters

## v7.2.0+beta.7
### Fixed
- Clear old function cache values on initial run after install #1150

## v7.2.0+beta.6
### Fixed
- Fix My Subscriptions not loading old or previously accessed content #1123
- Manually redirect video server requests if required #1127 #1135
- Improve logging of client ID #1117
- Fix possible exception that may occur if video thumbnails fail to update
- Fix unsubscribing from My Subscriptions #1137
- Fix folders for channel shorts and live streams not being routed correctly #988 #1060
- Update YouTube.get_recommended_for_home #1107

### Changed
- Improve handling of using filtered playlists in channels #988 #1060
- Base64 encode/decode header query param to obfuscate in debug logs
- Update client details
- Automatically handle different types of identifiers as channel_id parameter
- Improve pagination of filtered listings #984 #1035
- Split My Subscriptions into Long Form, Shorts and Live folders #988

### New
- Show broadcasting streams at the top of channel live streams folder listings #1092

## v7.2.0+beta.5
### Fixed
- Improve url resolver error handling
- Fix showing Uploads playlist if all videos are private #988 #1060
- Fix updating progress of background progress dialogs #1032
- Fix showing duplicate channel progress dialogs in My Subscriptions #1032
- Ensure correct playlist_type_hint is used with audio only playback
- Workaround various issues with Kodi window opening and history navigation when accepting search inputs #1070
- Fix various Python2 unicode encoding errors
- Disable refresh parameter on Kodi forced refresh #1072
- Improve handling of playlists feeds in My Subscriptions
- Reprioritise clients and avoid re-authenticating requests if authentication already provided #1076
- Reduce CPU usage while waiting for HTTP server input/output to be ready #1103

### Changed
- Various improvements to thread handling and cache usage in My Subscriptions #1072
- Delay progress dialog creation if other dialogs are open #1072
- Minor optimisation and improve reliability of stream proxy
- Update client details and include player response visitorData
- Improve handling of invalid filter attributes #1102 #984

### New
- Send JSON-RPC event notification when video playback fails
- Add additional debug logging of complete API response content #1107

## v7.2.0+beta.4
### Fixed
- Fix repeated subtitle queries/prompts #1056
- Fix always using video playlist even for audio items
- Improve error handling and http server shutdown/restart #1056

### Changed
- Disable http server idle shutdown on Linux systems #1056
- Fetch last updated subscription feeds first and fetch playlists feeds in My Subscriptions
- Hide empty/unavailable standard playlists in channels #1060
- Store date added to playlist for playlist items #1059
- Add indication to Next page item if listing has been filtered #1035

### New
- Add "Play recently added" context menu item to playlists #1059
  - Will play all videos added to the playlist in the last day

## v7.2.0+beta.3
### Fixed
- Fix possible exception in creating request clients if client_data is not provided
- Only force playback if plugin invocation was triggered through UI
- Ensure that any set UI playback properties are cleared if playback does not start
- Fix episode and season getter/setter not being available for AudioItem
- Fix full playlist listings not being able to be redirected

### Changed
- Proxy stream requests using HTTPServer #527 #1040
  - Correct primary video server url #1040
  - Allow skipping adaptive formats for clients that may need PO tokens #1040
  - Add option to redirect streams using stream proxy #1040
    - As headers are not matched this can lead to detection of Kodi being used as a client
- Use default http server listen address of 127.0.0.1
- Allow playback parameters to be applied for entire listings

## v7.2.0+beta.2
### Fixed
- Fix audio langauge fallback selection #989 #1036
  - Also correctly distinguish between original vs default audio streams
  - Respect Kodi Prefer default audio streams setting
    - Applies to both default audio and original audio
- Fix search context menu items for Next Page and New Search items
- Fix lock acquire/release logic in My Subscriptions #1032
- Avoid potential player request loop
- Revert using configured language settings for player requests
- Fix missing message argument for InvalidGrant #1038
- Fix incorrectly trying to refresh access tokens when no refresh tokens exist #1038
- Fix issues with handling duplicated and unavailable items in lists
- Fix issues with processing channel handles

### Changed
- Further improvements to fallback window handling to minimise crashes and loss of window history
  - Enable intercepting and redirecting PlayMedia calls
  - Improve handling of search keyboard input when navigating through window history
    - Also allow bookmarks/favourites to be created for Quick Search
    - Remove need to store search query in data cache
    - Improve handling of searching for YouTube urls
- Store modified date from player requests as publishedAt for local history #991
- Update player request client details
- Reorganise video item context menu

### New
- Allow channels and playlists to be played from Info dialog
- Add IPv6 support for http server #1039
- Show total number of uploads, shorts and live videos in channel playlists
- Add support for more channel url formats

## v7.2.0+beta.1
### Fixed
- Fix processing of "q" and "channelId" search query params
- Fix using incorrect client headers with cURL when ISA is not used
- Fix incorrect use of str.lstrip
- Ensure language and region are passed to StreamInfo instances #989
- Fix not updating cache for empty feeds in My Subscriptions
- Make parsing and serialising of list type parameters a reversible operation
- Fix logic used to filter out various type of streams
  - Was previously checking any inclusion filters
  - Now any exclusion filter that matches will filter stream out
- Fix plugin URI redirect from search
- Fix incorrect path handling during migration of old sqlite databases in Setup Wizard
- Fix errors with progress dialogs in Kodi 18 #1000
- Fix remote watch history not updating #1008
- Fix error when all subtitles are requested
- Fix Python2 syntax error #1000
- Fix interaction between certain plugin URI query parameters when used in STRM files
- Fix playing clips in a playlist #1007
- Fix not identifying own playlists in personal channel
- Fix API requests when not signed in #1013
- Fix potential leak of sensitive data via HTTPServer logging #1016
- Fix adding/removing subscriptions to/from filter list
- Fix playback not working when no API key is provided #1018
- Fix using provided keys for requests that can't use them #1018
- Fix window redirect on video playback failure #1018

### Changed
- Re-enable player request clients that require specific OAuth tokens
- Re-enable OAuth authorisation for YouTube TV
- Update itags for 30fps HLS VP9.2 streams
- Update player client details and selections
- Add some ultra low quality itags
- Optimise wakeup to ensure http server is only started when required
- Improve check for Kodi subtitle language
- Improve handling of audio language selection #989
- Replace preferred language subtitle option with preferred language + fallback + no ASR option #992
- Allow for caching of subscriptions API requests in My Subscriptions
- Only use OAuth tokens if necessary #994 #996
- Set default live stream type to MPEG-DASH for Kodi 21+ #1004
- Skip asking or re-ordering playlists if there is only 1 item in the list
- Prevent caching in incognito mode
- Improve caching and updating of playlist details #1024
- Improve listen address config in Setup Wizard #1016
  - Also make 127.0.0.1 the default listen address
  - Fallback to 0.0.0.0 if no other local address works

### New
- Update display of comments to be match other listings
  - Make comment details follow "Show video details in video lists" setting
  - Allow various sorting options
  - Truncate comment to 140 characters in listing, full comment available in info dialog
  - Show user thumbnail in listing
  - Show user with thumbnail in info dialog
  - Show video/comment details in navigation breadcrumb bar
- Overhaul update of fanart and other channel info for listings
  - Add additional channel info to all items in listings in one pass
    - channel name thumbnail in info dialog
    - channel name in context menu items
    - channel fanart if enabled
  - Reduce network requests
  - Improve cache usage
  - Reduce thread usage
- Add custom Shorts duration #984
- Allow use of HLS streams in external players
  - Also allows for playing in Kodi without InputStream.Adaptive
- Add ability to create arbitrary filter criteria to My Subscriptions #984
  - "{ATTR_1}{OPERATOR_1}{VALUE_1}[{ATTR_X}{OPERATOR_X}{VALUE_X}...]"
    - where ATTR_X can be any valid item getter or property e.g.
      - "duration", "title", "artists"/"artists_string", "plot", "date", etc. or
      - ".live", ".upcoming", ".completed" etc. Note the "." prefix
    - where OPERATOR_X can be
      - ">", ">=" (default), "<", "<=", "=", "==", "!=" typically for a int/float/bool type VALUE or
      - "contains", "startswith", "endswith", "search" for a string type VALUE
    - where VALUE_X is the desired criteria value.
      - String type values are wrapped in double quote marks eg. "example"
        - "," must be encoded as "%2C" eg. "example,test" becomes "example%2Ctest"
        - "}" must be encoded as "%7D" eg. "example}test" becomes "example%7Dtest"
    - any number of criteria rules can be used together
      - rules seperated by a comma are OR rules
      - rules contained within a comma group are AND rules
- Add filler parameter to v3.response_to_items
  - Allows listings to be recursively filled after post request filtering
  - Also show progress dialog for all listings
- Add support for sequentially filling Recommendations listing
- Add support for sequentially filling Trending listing
- Add new advanced list filter setting
  - Works in the same manner as the My Subscriptions filter, but for all listings
  - Can also be set using the item_filter plugin URI query parameter
- Add option to prefer lower resolution streams for unselected codecs
- Populate My Subscription listings using feed details
- Store video details from player requests for local history #991
- Add separate Shorts sub-folder in Channel folders #988
  - Implementation by @mhomak
- Allow adding/removing bookmarks to/from filter list
- Add direct playback of temporary playlists from YouTube or plugin urls in the form
  - plugin://plugin.video.youtube/play?video_ids=xxxxxxxx,xxxxxxxx

## v7.1.1.6
### Fixed
- Fix http server not listening on any interface if listen IP is 0.0.0.0 #927
- Standardise return type of LoginClient.refresh_token #932
- Fix curl headers not being used when set on path of setResolvedUrl listitem
- Fix HEAD requests to MPD manifests
- Fix various Python2 incompatible changes
- Properly distinguish between VP9 and VP9.2 with HDR info
- Fix http server not running when script shows client IP
- Fix not listing full stream details in selection dialog
- Fix translated subtitles not being available for some videos #945
- Fix labelling for auto dubbed audio tracks
- Fix regressions in handling VP9.2 video streams
- Fix error handling items without headers #946
- Fix incorrectly determining Kodi release name
- Fix search window history navigation when using direct links
- Fix Python2/Android incompatibilty when checking CPU count #958
- Fix method used to determine address of local network interface #938
- Fix potential infinite loop with corrupted access_manager.json
- Various improvements to multiple busy dialog crash workarounds #938
- Fallback to search listing when search query is empty
- Fix debug log string formatting error #938
- Fix duplicated separators in context menu
- Fix Kodi builtin using wrong playlist type #938
- Ensure http server is started prior to creating MPD for playback #961
- Fix shuffle play of playlists not working
- Fix plugin category label not being applied if content type not set
- Fix Kodi navigating to root path of Video window if plugin listing fails
- Fix loading of Watch Later playlist #971
 - Also fix other incorrect/missing parameter names
- Fix possible exception if plugin navigation fails #976
- Fix sign in when one or more access token requests fail #979
- Attempt to fix possible deadlock on http server shutdown
- Fix potential infinite loop with old data from access_manager.json #980
- Reduce unnecessary window navigation fallback attempts
- Fix incorrect duration display in Kodi 18 and Kodi 19 #999
- Fix possible error with getting names of bookmarks that have not been updated with info
- Fix missing "Live" label in Kodi 18
- Fix uncaught exception when sign-in does not succeed #985
- Fix missing "Ask" translation string
- Fix incorrect parameter name breaking auto-remove from Watch Later #993
- Fix processing of "q" and "channelId" search query params #1004
- Fix errors with progress dialogs in Kodi 18 #1000
- Fix remote watch history not updating #1008
- Fix API requests when not signed in #1013
- Fix playback not working when no API key is provided #1018

### Changed
- Improve display and update of bookmarks
- Explicitly set http server protocol version to HTTP/1.1
- Improve logging
- Use alternative streams to improve compatibility with external players
- Improve https server sleep and wakeup #810 #951
- Update Setup Wizard to disable all alternative player settings if not required #938
- Improve support for optional search API parameters #689
- Ensure changing sort order of search replaces existing search
- Use redirect in multiple busy dialog crash workaround #938
- Disable unusable alternate players #966
- Standardise plugin URIs for routing
  - path parameters used for folders and sub-folders
  - query parameters used for changing display modes, filtering, sorting and inputs
- Don't retry server wakeup on error unless settings change
- Allow ISA and MPD in 720p performance preset in Setup Wizard
- Only use OAuth tokens if necessary #994 #996

### New
- Explicitly enable TCP keep alive #913
- Add localised title and description for videos, channels and playlists
- Update display of playlists to show the following details:
  - item count
  - date
  - channel name
  - description
  - web url
  - podcast status
- Update display of channels to show the following details:
  - view count
  - subscriber count
  - video count
  - date
  - description
  - channel name in description
  - web url
- Add View all and Shuffle context menu items for playlists
- New setting to enable debug logging for addon
  - Setting > Advanced > Logging > Enable debug logging
- Improvements to searching
  - Add context menu items for changing sort order of saved searches #172
  - Allow search parameters to be stored per search #172 #689
  - Allow additional optional search parameters to be used #689
  - Improve parsing of date offset when searching  for completed live events
- Add additional search type links to search results #689
- Add ability to replace window when rerouting using window_replace query parameter
- Add search sort context menu items to search results #172
- Add prompts and notifications for deleting items and clearing lists
- Add Quick Search and search management context menu items to Search folders
- Add context menu items to Clear and Play All/Shuffle in Bookmarks/Watch Later/Watch History folders
- Add progress dialog to My Subscription loading

## v7.1.1+beta.7
### Fixed
- Fix loading of Watch Later playlist #971
 - Also fix other incorrect/missing parameter names

### Changed
- Don't retry server wakeup on error unless settings change

## v7.1.1+beta.6
### Fixed
- Ensure http server is started prior to creating MPD for playback #961
- Fix shuffle play of playlists not working
- Fix plugin category label not being applied if content type not set
- Fix Kodi navigating to root path of Video window if plugin listing fails

### Changed
- Use redirect in multiple busy dialog crash workaround #938
- Disable unusable alternate players #966
- Standardise plugin URIs for routing
  - path parameters used for folders and sub-folders
  - query parameters used for changing display modes, filtering, sorting and inputs

### New
- Add Quick Search and search management context menu items to Search folders
- Add context menu items to Clear and Play All/Shuffle in Bookmarks/Watch Later/Watch History folders
- Add progress dialog to My Subscription loading

## v7.1.1+beta.5
### Fixed
- Fix Python2/Android incompatibilty when checking CPU count #958
- Fix method used to determine address of local network interface #938
- Fix potential infinite loop with corrupted access_manager.json
- Various improvements to multiple busy dialog crash workarounds #938
- Fallback to search listing when search query is empty
- Fix debug log string formatting error #938
- Fix duplicated separators in context menu
- Fix Kodi builtin using wrong playlist type #938

### Changed
- Improve support for optional search API parameters #689
- Ensure changing sort order of search replaces existing search

### New
- Add additional search type links to search results #689
- Add ability to replace window when rerouting using window_replace query parameter
- Add search sort context menu items to search results #172
- Add prompts and notifications for deleting items and clearing lists

## v7.1.1+beta.4
### Fixed
- Fix incorrectly determining Kodi release name
- Fix search window history navigation when using direct links

### Changed
- Improve https server sleep and wakeup #810 #951
- Update Setup Wizard to disable all alternative player settings if not required #938

### New
- Improvements to searching
  - Add context menu items for changing sort order of saved searches #172
  - Allow search parameters to be stored per search #172 #689
  - Allow additional optional search parameters to be used #689
  - Improve parsing of date offset when searching  for completed live events

## v7.1.1+beta.3
### Fixed
- Fix not listing full stream details in selection dialog
- Fix translated subtitles not being available for some videos #945
- Fix labelling for auto dubbed audio tracks
- Fix regressions in handling VP9.2 video streams
- Fix error handling items without headers #946

### Changed
- Use alternative streams to improve compatibility with external players

## v7.1.1+beta.2
### Fixed
- Standardise return type of LoginClient.refresh_token #932
- Fix curl headers not being used when set on path of setResolvedUrl listitem
- Fix HEAD requests to MPD manifests
- Fix various Python2 incompatible changes
- Properly distinguish between VP9 and VP9.2 with HDR info
- Fix http server not running when script shows client IP

### Changed
- Improve display and update of bookmarks
- Explicitly set http server protocol version to HTTP/1.1
- Improve logging

### New
- Add View all and Shuffle context menu items for playlists
- New setting to enable debug logging for addon
  - Setting > Advanced > Logging > Enable debug logging

## v7.1.1+beta.1
### Fixed
- Fix http server not listening on any interface if listen IP is 0.0.0.0 #927

### New
- Explicitly enable TCP keep alive #913
- Add localised title and description for videos, channels and playlists
- Update display of playlists to show the following details:
  - item count
  - date
  - channel name
  - description
  - web url
  - podcast status
- Update display of channels to show the following details:
  - view count
  - subscriber count
  - video count
  - date
  - description
  - channel name in description
  - web url

## v7.1.0.1
### Fixed
- Fix logging/retry of sqlite3.OperationalError
- Fix trying to use ISA for progressive live streams
- Retain list position when refreshing listings
- Add workarounds for trying to play videos using RunPlugin rather PlayMedia
- Fix possible regression causing 6s delay on first play
- Fix regression in building client details causing wrong referer to be used
- Only reroute to new window if container was not filled by the plugin #896
- Only reroute to new window if modal dialog is not open #896
- Fix various timing and sync issues with script, service, plugin and Kodi settings
- Fix playback history related context menu items not being shown #904
- Fix new resume details not being saved in plugin local playback history #904
- Fix default thumbnails not being updated if available
- Fix login to personal project only #910
- Fix regression with not using content type when routing after f239764 #922
- Partially revert eb0f81c to avoid merge error in unofficial version #924
- Only attempt to import InputStream Helper if necessary #923

### Changed
- Update multiple busy dialog crash workaround #891
- Use all playable codecs but deprioritise if not selected in stream features
- Change default live stream type to suit ISA and Youtube stream availability
- Use a CommandItem that opens the Info dialog for comments to avoid log spam
- Revert old workaround for Kodi treating a non-folder listitem as playable
- Improve parsing of plugin url query parameters to allow empty values
- Move IP location lookup to script and add to settings dialog
- Move language and region selection to script and add to settings dialog
- Allow default thumbnail selection fallbacks for all results
- Simplify handling of local history
  - Incognito will no longer prevent existing local history from being shown
  - Incognito will continue to prevent any update to local history
- Remove revoked API credentials #905
- Improve handling of "forbidden - The caller does not have permission" errors #905
- Allow retries on POST requests #913

### New
- Allow ask for quality from context menu to override audio only setting
- Add items_per_page query parameter to allow number of items in widgets to be customised #896
- Add item_filter query parameter to override "Hide videos from listings" setting #896
  - Comma seperated string of item types to be filtered out of listing
  - "?item_filter=shorts" will remove shorts from listing
  - "?item_filter=shorts,live" will remove shorts and live streams from listing
  - "?item_filter" will show all item types
  - Allowable item types:
    - shorts
    - upcoming
    - upcoming_live
    - live
    - premieres
    - completed
    - vod
- Add hide_next_page query parameter to hide plugin Next page item #896
- Add new input_prompt command for search endpoint to bypass Kodi window caching
  - plugin://plugin.video.youtube/kodion/search/input_prompt
- Add support for proxy settings #884
- Preliminary support for /watch_videos YouTube urls
- Player client updates

## v7.1.0+beta.5
### Fixed
- Fix default thumbnails not being updated if available

### Changed
- Remove revoked API credentials #905
- Improve handling of "forbidden - The caller does not have permission" errors #905

### New
- Preliminary support for /watch_videos YouTube urls
- Player client updates

## v7.1.0+beta.4
### Fixed
- Fix playback history related context menu items not being shown #904
- Fix new resume details not being saved in plugin local playback history #904

### Changed
- Allow default thumbnail selection fallbacks for all results
- Simplify handling of local history
  - Incognito will no longer prevent existing local history from being shown
  - Incognito will continue to prevent any update to local history

### New
- Add support for proxy settings #884

## v7.1.0+beta.3
### Fixed
- Fix various timing and sync issues with script, service, plugin and Kodi settings

### Changed
- Move IP location lookup to script and add to settings dialog
- Move language and region selection to script and add to settings dialog

### New
- Add hide_next_page query parameter to hide plugin Next page item #896
- Add new input_prompt command for search endpoint to bypass Kodi window caching
  - plugin://plugin.video.youtube/kodion/search/input_prompt

## v7.1.0+beta.2
### Fixed
- Fix possible regression causing 6s delay on first play
- Fix regression in building client details causing wrong referer to be used
- Only reroute to new window if container was not filled by the plugin #896
- Only reroute to new window if modal dialog is not open #896

### Changed
- Use a CommandItem that opens the Info dialog for comments to avoid log spam
- Revert old workaround for Kodi treating a non-folder listitem as playable
- Improve parsing of plugin url query parameters to allow empty values

### New
- Add items_per_page query parameter to allow number of items in widgets to be customised #896
- Add item_filter query parameter to override "Hide videos from listings" setting #896
  - Comma seperated string of item types to be filtered out of listing
  - "?item_filter=shorts" will remove shorts from listing
  - "?item_filter=shorts,live" will remove shorts and live streams from listing
  - "?item_filter" will show all item types
  - Allowable item types:
    - shorts
    - upcoming
    - upcoming_live
    - live
    - premieres
    - completed
    - vod

## v7.1.0+beta.1
### Fixed
- Fix logging/retry of sqlite3.OperationalError
- Fix trying to use ISA for progressive live streams
- Retain list position when refreshing listings
- Add workarounds for trying to play videos using RunPlugin rather PlayMedia

### Changed
- Update multiple busy dialog crash workaround #891
- Use all playable codecs but deprioritise if not selected in stream features
- Change default live stream type to suit ISA and Youtube stream availability

### New
- Allow ask for quality from context menu to override audio only setting

## v7.0.9.2
### Fixed
- Fix various Kodi 18 listitem setInfo compatibility issues
- Additional fixes and compatibility shims for playing AudioItems #873
- Fix early thread loop termination in My Subscriptions #888

## v7.0.9.1
### Fixed
- Add playlist_type_hint property to workaround issues with CPlayListPlayer::Play #873
- Fix comments not displaying for recommended videos #878
- Fix not correctly loading bookmarks for My Subscriptions
- Fix invalid escape sequence in non-raw string #885
- Attempt to fix various threading issues with My Subscriptions #882

### New
- Add refresh settings to Setup Wizard

## v7.0.9
### Fixed
- Fix renaming playlists
- Improve http server wakeup #746 #801
- Fix ask for video quality setting being inconsistently applied
- Fix http server not sleeping after initial start of service #746 #801
- Fix not reloading WL playlist if open after playback of video in WL
- Fix navigating to search page after playback and prompt re-opening
- Fix issues with next page and jump to page in related video listings
- Attempt to workaround issue with getting system idle time on Xbox #839
- Better handle unknown errors in player request responses #845
- Fix double playback due to busy dialog crash workaround
- Fix disabling certification verification #841
- Fix not using player request fallbacks #845
- Fix incorrectly identifying VP9 streams #833
- Fix videos not able to be re-opened from Kodi playlist #810
- Fix http server not working in Kodi 18
- Fix issues with http server wakeup and sleep on initial start/restart
- Fix API requests failing if not logged in
- Fix multi-audio streams failing to play
- Fix not properly defining default audio role #861
- Don't retry player requests for offline live streams
- Fix incorrectly updating playing live stream details
- Fix typo causing http server to restart when checking status

### Changed
- Make live query parameter optional when playing channel live stream
- Allow for removal of custom watch later and history playlists from settings #818
  - Use default value of "HL" for history or "WL" for watch later as reset value
  - This will then clear the setting and clear value from access_manager.json
  - Old values will be stored as a backup, just in case
- Update cached data when playlists are modified (removed/renamed)
- Changed bandwidth attribute of subtitles in MPEG-DASH manifest to 0
- Rename My Subscriptions plugin url
  - From:
    - plugin://plugin.video.youtube/special/new_uploaded_videos_tv
    - plugin://plugin.video.youtube/special/new_uploaded_videos_tv_filtered
  - To:
    - plugin://plugin.video.youtube/special/my_subscriptions
    - plugin://plugin.video.youtube/special/my_subscriptions_filtered
  - Old url retained for backwards compatibility, to be removed with Kodi v22
- Disable OPUS audio again by default #537
- Respect disable certificate verification setting with cURL in ISA #841
- Update bookmarks when listing rather than only using item snapshot
- Player requests no longer use configured plugin language
- Alternate client selections removed

### New
- Add notifications for creating/removing/clearing bookmarks #720
- Add support for channel handles
- Enable loop to first page on last page of manually paginated listings (My Subscriptions)
- Improve use of progressive streams
- Improve stream selection for HLS stream in InputStream.Adaptive
- Add script action to refresh settings
  - Settings > Maintenance > Refresh settings.xml
  - Will remove unused settings from settings.xml to stop log spam
- Add context menu item to play live stream from start #320

## v7.0.9+beta.10
### Fixed
- Don't retry player requests for offline live streams
- Fix incorrectly updating playing live stream details

### New
- Add context menu item to play live stream from start #320

## v7.0.9+beta.9
### Fixed
- Fix not properly defining default audio role #861

## v7.0.9+beta.8
### Fixed
- Fix API requests failing if not logged in
- Fix multi-audio streams failing to play

### New
- Add script action to refresh settings
  - Settings > Maintenance > Refresh settings.xml
  - Will remove unused settings from settings.xml to stop log spam

## v7.0.9+beta.7
### New
- Improve use of progressive streams
- Improve stream selection for HLS stream in InputStream.Adaptive

## v7.0.9+beta.6
### Fixed
- Fix http server not working in Kodi 18
- Fix issues with http server wakeup and sleep on initial start/restart

### Changed
- Player requests no longer use configured plugin language
- Alternate client selections removed

## v7.0.9+beta.5
### Fixed
- Fix disabling certification verification #841
- Fix not using player request fallbacks #845
- Fix incorrectly identifying VP9 streams #833
- Fix videos not able to be re-opened from Kodi playlist #810

## v7.0.9+beta.4
### Fixed
- Fix issues with next page and jump to page in related video listings
- Attempt to workaround issue with getting system idle time on Xbox #839
- Better handle unknown errors in player request responses #845
- Fix double playback due to busy dialog crash workaround

### Changed
- Respect disable certificate verification setting with cURL in ISA #841
- Update bookmarks when listing rather than only using item snapshot

### New
- Enable loop to first page on last page of manually paginated listings (My Subscriptions)

## v7.0.9+beta.3
### Fixed
- Fix navigating to search page after playback and prompt re-opening

### Changed
- Disable OPUS audio again by default #537

### New
- Add support for channel handles

## v7.0.9+beta.2
### Fixed
- Fix ask for video quality setting being inconsistently applied
- Fix http server not sleeping after initial start of service #746 #801
- Fix not reloading WL playlist if open after playback of video in WL

### Changed
- Rename My Subscriptions plugin url
  - From:
    - plugin://plugin.video.youtube/special/new_uploaded_videos_tv
    - plugin://plugin.video.youtube/special/new_uploaded_videos_tv_filtered
  - To:
    - plugin://plugin.video.youtube/special/my_subscriptions
    - plugin://plugin.video.youtube/special/my_subscriptions_filtered
  - Old url retained for backwards compatibility, to be removed with Kodi v22

### New
- Add notifications for creating/removing/clearing bookmarks #720

## v7.0.9+beta.1
### Fixed
- Fix renaming playlists
- Improve http server wakeup #746 #801

### Changed
- Make live query parameter optional when playing channel live stream
- Allow for removal of custom watch later and history playlists from settings #818
  - Use default value of "HL" for history or "WL" for watch later as reset value
  - This will then clear the setting and clear value from access_manager.json
  - Old values will be stored as a backup, just in case
- Update cached data when playlists are modified (removed/renamed)
- Changed bandwidth attribute of subtitles in MPEG-DASH manifest to 0

## v7.0.8
### Fixed
- Update selection and sorting of streams to fix missing live streams
- Fix using cached settings for XbmcContext.use_inputstream_adaptive
- Wakeup http server on playback start if required #746
- Improve handling of context menu play items
- Use consistent return values for function cache to avoid caching errors #782
- Attempt to fix PlaylistPlayer race condition error #704
- Fix not reloading access manager when performing user actions #780
- Fix page jump when page_token is not used
- Ensure container is always refreshed when required and available
- Fix incorrect comparison after cd45122
- Fix various caching issues #786 #797
- Fix including un-redacted IP address in debug logs
- Additional fixes for redacting IP addresses in debug logs #801
- Various minor fixes for external player use
- Fix trying to access playlists for account that has no Youtube channel #803
- Poll for http server restart when required for playback #746 #808
- Fix unsubscribe from My Subscriptions #809
- Fix Python2 UnicodeDecodeError when removing/renaming searches #815
- Fix not catching socket.error in Python2 when force shutting down socket
- Fix deleting window property with multiple threads causing hang on exit #813

### Changed
- Update icons
- Only enable recommendations when logged in
- Improve sync with internal Kodi watched state #709
- Align default value for watched percentage with Kodi default #746
- Limit need to check window property for sleep and wakeup
- Only show Next Page listitem linking to first page when in the GUI #787
- Use youtu.be urls with external players to work with different types of videos
- Test not starting/checking for http server until required for playback #746
- Invalidate portion of playlist cache if item added to playlist #797
- Update 720p preset in Setup Wizard #807
- Update itags found in HLS playlists and exclude them in quality selection #806

### New
- Cache and update My Subscriptions content per channel feed #785 #786
- Use separate database for My Subscription feed history #785
- Enable action parameter in play playlist route
- Use placeholder in empty listings to provide info and allow refreshing #797
- Enable subtitles for alternative client 2 #806

## v7.0.8+beta.5
### Fixed
- Fix Python2 UnicodeDecodeError when removing/renaming searches #815
- Fix not catching socket.error in Python2 when force shutting down socket
- Fix deleting window property with multiple threads causing hang on exit #813

### Changed
- Update 720p preset in Setup Wizard #807
- Update itags found in HLS playlists and exclude them in quality selection #806

### New
- Enable subtitles for alternative client 2 #806

## v7.0.8+beta.4
### Fixed
- Poll for http server restart when required for playback #746 #808
- Fix unsubscribe from My Subscriptions #809

## v7.0.8+beta.3
### Fixed
- Additional fixes for redacting IP addresses in debug logs #801
- Various minor fixes for external player use
- Fix trying to access playlists for account that has no Youtube channel #803

## v7.0.8+beta.2
### Fixed
- Fix various caching issues #786 #797
- Fix including un-redacted IP address in debug logs

### Changed
- Test not starting/checking for http server until required for playback #746
- Invalidate portion of playlist cache if item added to playlist #797

### New
- Use placeholder in empty listings to provide info and allow refreshing #797

## v7.0.8+beta.1
### Fixed
- Update selection and sorting of streams to fix missing live streams
- Fix using cached settings for XbmcContext.use_inputstream_adaptive
- Wakeup http server on playback start if required #746
- Improve handling of context menu play items
- Use consistent return values for function cache to avoid caching errors #782
- Attempt to fix PlaylistPlayer race condition error #704
- Fix not reloading access manager when performing user actions #780
- Fix page jump when page_token is not used
- Ensure container is always refreshed when required and available
- Fix incorrect comparison after cd45122

### Changed
- Update icons
- Only enable recommendations when logged in
- Improve sync with internal Kodi watched state #709
- Align default value for watched percentage with Kodi default #746
- Limit need to check window property for sleep and wakeup
- Only show Next Page listitem linking to first page when opening listings from the GUI #787
- Use shortened YouTube url with external players for better compatibility with different types of videos

### New
- Cache and update My Subscriptions content per channel feed #785 #786
- Use separate database for My Subscription feed history #785
- Enable action parameter in play playlist route

## v7.0.7
### Fixed
- Fixed not being able to re-refresh a directory listing that has already been refreshed
- Fixed various window and history nagivation issues
- Fixed http server idle shutdown not restarting if plugin is run but GUI is still idle
- Additional improvements to busy dialog crash workaround
- Workaround for new settings interface not updated correctly
- Fix bookmarks icon background colour
- Fix adding channel items directly to bookmarks
- Fixes for player monitoring preventing item being marked as watched #746
- Fix invalid pageToken error by removing jump from unsupported listings #715
- Fix issues with post play refresh possibly causing loss of window history
- Fix bug that could lead to plugin continuously reloading #608
- Attempted fix for socket error 98 on Linux #746
  - For error 10013 on Windows try either of the following:
    - Start-Process powershell -Verb runAs -ArgumentList "net stop winnat; net start winnat"
    - Start-Process powershell -Verb runAs -ArgumentList "net stop hns; net start hns"
- Fix changing fanart type on My Subscriptions #751
- Fix not using thumbnail fanart for channels/subscriptions/playlists when enabled #751
- Fix My Subscriptions threading issues #529
- Fix failing to login #759
- Improve resource usage
- Fix adding video to playlist #764
- Fix plugin settings raising exception in Kodi 19-20 #769

### Changed
- Removed Settings > Advanced > Views > Show channel fanart
  - Now included as option in Settings > Advanced > Views > Show fanart
- MPEG-DASH for live streams only enabled by default in Kodi v21
- Make better use of reuselanguageinvoker and various memory usage improvements
- Use internal Kodi resume enable/disable for all playback #693
  - For playback where Kodi does not prompt to resume, the plugin will also no longer resume
  - For playback where Kodi does prompt to resume, the plugin will follow whatever is selected
- Cached data for My Subscriptions and Related Videos will be replaced due to changes in cached data
- Use channel fanart as backup to thumbnail fanart for channel items without thumbnails #751

### New
- Improvements to plugin page navigation #715
  - Refresh added to context menu of Next page item
  - Jump to page added to context menu of Next page item
    - Can also be used in plugin url: plugin://plugin.video.youtube/goto_page/<PAGE>/<PATH> #317
  - Home added to context menu of Next page item
  - Quick search added to context menu of Next page item
  - Next page item added to last page of directory list to go back to first page
- Add option to use channel name as studio and/or cast #717
  - Settings > Advanced > Views > Use channel name as
- Add option to use best available thumbnail quality
  - Settings > Advanced > Views > Thumbnail size
- Added option to use video thumbnail as fanart in Settings > Advanced > Views > Show fanart #716
  - Also added plugin url query parameter fanart_type to override settings
    - Can be used to set fanart for specific widgets only: plugin://plugin.video.youtube/<PATH>?fanart_type=<0/1/2/3>
    - Allowable values are the same as the setting:
      - 0: No fanart
      - 1: Default
      - 2: Channel
      - 3: Thumbnail
- Enable syncing of plugin watched state with Kodi watched state when using Kodi mark as (un)watched #709
- Add website link to video descriptions #721
- Update video filtering for live streams #755
  - Add options to filter/hide the following types of videos
    - shorts
    - upcoming videos (either live streams or premieres)
    - upcoming live streams
    - currently live streams
    - upcoming premieres
    - completed videos (previously either live or premieres)
  - No currently live streams will be shown in searches, only in the Live subfolder
  - No currently live or upcoming live streams will be shown in channels, only in the Live subfolder
    - Should also be much faster
  - Completed stream will continue to be shown in listings unless filtered out
  - Live subfolders will not be filtered by default
  - Filter selection dialog has option to also filter the Live subfolder
  - Most other listings will be filtered using whatever options have been set

## v7.0.7+beta.3
### Fixed
- Fix plugin settings raising exception in Kodi 19-20 #769

## v7.0.7+beta.2
### Fixed
- Fix invalid pageToken error by removing jump from unsupported listings #715
- Fix issues with post play refresh possibly causing loss of window history
- Fix bug that could lead to plugin continuously reloading #608
- Attempted fix for socket error 98 on Linux #746
  - For error 10013 on Windows try either of the following:
    - Start-Process powershell -Verb runAs -ArgumentList "net stop winnat; net start winnat"
    - Start-Process powershell -Verb runAs -ArgumentList "net stop hns; net start hns"
- Fix changing fanart type on My Subscriptions #751
- Fix not using thumbnail fanart for channels/subscriptions/playlists when enabled #751
- Fix My Subscriptions threading issues #529
- Fix failing to login #759
- Improve resource usage
- Fix adding video to playlist #764

### Changed
- Use internal Kodi resume enable/disable for all playback #693
  - For playback where Kodi does not prompt to resume, the plugin will also no longer resume
  - For playback where Kodi does prompt to resume, the plugin will follow whatever is selected
- Cached data for My Subscriptions and Related Videos will be replaced due to changes in cached data
- Use channel fanart as backup to thumbnail fanart for channel items without thumbnails #751

### New
- Enable syncing of plugin watched state with Kodi watched state when using Kodi mark as (un)watched #709
- Add website link to video descriptions #721
- Update video filtering for live streams #755
  - Add options to filter/hide the following types of videos
    - shorts
    - upcoming videos (either live streams or premieres)
    - upcoming live streams
    - currently live streams
    - upcoming premieres
    - completed videos (previously either live or premieres)
  - No currently live streams will be shown in searches, only in the Live subfolder
  - No currently live or upcoming live streams will be shown in channels, only in the Live subfolder
    - Should also be much faster
  - Completed stream will continue to be shown in listings unless filtered out
  - Live subfolders will not be filtered by default
  - Filter selection dialog has option to also filter the Live subfolder
  - Most other listings will be filtered using whatever options have been set

## v7.0.7+beta.1
### Fixed
- Fixed not being able to re-refresh a directory listing that has already been refreshed
- Fixed various window and history nagivation issues
- Fixed http server idle shutdown not restarting if plugin is run but GUI is still idle
- Additional improvements to busy dialog crash workaround
- Workaround for new settings interface not updated correctly
- Fix bookmarks icon background colour
- Fix adding channel items directly to bookmarks
- Fixes for player monitoring preventing item being marked as watched #746

### Changed
- Removed Settings > Advanced > Views > Show channel fanart
  - Now included as option in Settings > Advanced > Views > Show fanart
- MPEG-DASH for live streams only enabled by default in Kodi v21
- Make better use of reuselanguageinvoker and various memory usage improvements

### New
- Improvements to plugin page navigation #715
  - Refresh added to context menu of Next page item
  - Jump to page added to context menu of Next page item
    - Can also be used in plugin url: plugin://plugin.video.youtube/goto_page/<PAGE>/<PATH> #317
  - Home added to context menu of Next page item
  - Quick search added to context menu of Next page item
  - Next page item added to last page of directory list to go back to first page
- Add option to use channel name as studio and/or cast #717
  - Settings > Advanced > Views > Use channel name as
- Add option to use best available thumbnail quality
  - Settings > Advanced > Views > Thumbnail size
- Added option to use video thumbnail as fanart in Settings > Advanced > Views > Show fanart #716
  - Also added plugin url query parameter fanart_type to override settings
    - Can be used to set fanart for specific widgets only: plugin://plugin.video.youtube/<PATH>?fanart_type=<0/1/2/3>
    - Allowable values are the same as the setting:
      - 0: No fanart
      - 1: Default
      - 2: Channel
      - 3: Thumbnail

## v7.0.6.3
### Fixed
- Improve updating containers and (re)loading windows #681
- Fix refreshing video listing also forcing next pages to refresh when loaded
- Fix overflow error resulting from parsing hashtags as episode numbers
- Fix 6s delay on video playback start
- Further fixes for multiple busy dialog crash workaround
  - Possibly fix issues reported in comments of #704
- Update error checks to avoid unnecessary retries of player requests
- Fix adding and viewing items to internal bookmarks and watchlater list #720
- Fix error checks to prevent prematurely stopping retries of player requests #730
- Disable using android client player request by default #737

### Changed
- Setup Wizard default settings now disable pre-downloading subtitles if MPEG-DASH is enabled
- Ask for quality, Play with subtitles, Play audio only context menu items only displayed if associated setting is not already enabled
- Only make extra request for subtitles for Android client when all subtitle languages are enabled
- Overhaul alternative player support due to Kodi changes and also improve external player support
- Make "Support alternative player" and "Use YouTube website urls with default player" mutually exclusive options #692
- Enable OPUS audio by default #537
- Enable MPEG-DASH for live streams by default #680
- Setup Wizard will prompt to run when plugin first opens after updating, in order to update default settings
- http server will shutdown on idle timeout #699
- Update client details used for player requests

### New
- Add recommended settings in Setup Wizard for Raspberry Pi 1/2 class devices #688
- Added Bookmarks
  - Save videos, channels, playlists to Bookmarks
  - Bookmarked channels will be checked for updates in My Subscriptions
  - Data is stored locally, without needing to be logged in

## v7.0.6+beta.3
### Fixed
- Fix adding and viewing items to internal bookmarks and watchlater list #720

## v7.0.6+beta.2
### Fixed
- Further fixes for multiple busy dialog crash workaround
  - Possibly fix issues reported in comments of #704
- Update error checks to avoid unnecessary retries of player requests

### Changed
- Make "Support alternative player" and "Use YouTube website urls with default player" mutually exclusive options #692
- Enable OPUS audio by default #537
- Enable MPEG-DASH for live streams by default #680
- Setup Wizard will prompt to run when plugin first opens after updating, in order to update default settings
- http server will shutdown on idle timeout #699

## v7.0.6+beta.1
### Fixed
- Improve updating containers and (re)loading windows #681
- Fix refreshing video listing also forcing next pages to refresh when loaded
- Fix overflow error resulting from parsing hashtags as episode numbers
- Fix 6s delay on video playback start

### Changed
- Setup Wizard default settings now disable pre-downloading subtitles if MPEG-DASH is enabled
- Ask for quality, Play with subtitles, Play audio only context menu items only displayed if associated setting is not already enabled
- Only make extra request for subtitles for Android client when all subtitle languages are enabled
- Overhaul alternative player support due to Kodi changes and also improve external player support

### New
- Add recommended settings in Setup Wizard for Raspberry Pi 1/2 class devices #688
- Added Bookmarks
  - Save videos, channels, playlists to Bookmarks
  - Bookmarked channels will be checked for updates in My Subscriptions
  - Data is stored locally, without needing to be logged in

## v7.0.5
### Fixed
- Fix typo causing no fractional frame rate hinting to fail #679
- Fix typo that caused android player requests to fail
- Fix error message when rating video #666
- Fix various issues with Kodi 18 and Python 2 #668
- Fix issues with video playback #654, #659, #663
- Fix typos #661
- Fix typo that prevented videos from being listed in Kodi versions prior to v20 #662
- Try to prevent Kodi freezing when settings are updated and container is reloaded
- Fix lockups when using xbmc.executebuiltin #647, #653
- Fix searching for preferred language subtitles not using non-region specific subtitles
- Fix not being able to set custom watch later history playlist per user #646
- Update workarounds for multiple busy dialog crashes #640, #649
- Fix playing incorrect video when player request is blocked #654

### Changed
- Update language used for maintenance action prompts that clear data
- Display search history as list rather than videos
- Update Setup Wizard
  - Add settings for Raspberry Pi 3 class devices (1080p30, VP9 enabled)
  - Update settings for Raspberry Pi 4 class devices (1080p60, VP9 enabled)
  - Move option to disable list details to last step in wizard
- Shared playlist play using default order without prompting
- Removed dependency on script.module.infotagger #479
- Removed Nexus specific releases
  - Matrix releases will now work in Kodi v19+
  - Leia releases will work, but are unsupported, for Kodi v18 only
- Updated client versions used for player requests
  - Use iOS client as fallback for default client selection

### New
- Add new client that may provide 1080p non-adaptive formats
  - Can be accessed as Alternate #2
- Allow channel name to be displayed/sorted in listing depending on sort order #644

## v7.0.5+beta.5
### Fixed
- Fix typo causing no fractional frame rate hinting to fail #679

## v7.0.5+beta.4
### Fixed
- Fix typo that caused android player requests to fail

## v7.0.5+beta.3
### Fixed
- Fix error message when rating video #666
- Fix various issues with Kodi 18 and Python 2 #668
- Fix issues with video playback #654, #659, #663

## v7.0.5+beta.2
### Fixed
- Fix typos #661
- Fix typo that prevented videos from being listed in Kodi versions prior to v20 #662

### Changed
- Update language used for maintenance action prompts that clear data

### New
- Add new client that may provide 1080p non-adaptive formats
  - Can be accessed as Alternate #2
- Allow channel name to be displayed/sorted in listing depending on sort order #644

## v7.0.5+beta.1
### Fixed
- Try to prevent Kodi freezing when settings are updated and container is reloaded
- Fix lockups when using xbmc.executebuiltin #647, #653
- Fix searching for preferred language subtitles not using non-region specific subtitles
- Fix not being able to set custom watch later history playlist per user #646
- Update workarounds for multiple busy dialog crashes #640, #649
- Fix playing incorrect video when player request is blocked #654

### Changed
- Display search history as list rather than videos
- Update Setup Wizard
  - Add settings for Raspberry Pi 3 class devices (1080p30, VP9 enabled)
  - Update settings for Raspberry Pi 4 class devices (1080p60, VP9 enabled)
  - Move option to disable list details to last step in wizard
- Shared playlist play using default order without prompting
- Removed dependency on script.module.infotagger #479
- Removed Nexus specific releases
  - Matrix releases will now work in Kodi v19+
  - Leia releases will work, but are unsupported, for Kodi v18 only
- Updated client versions used for player requests
  - Use iOS client as fallback for default client selection

## v7.0.4
### Fixed
- Fix issues with Profiler running without timer when debug logging was enabled
- Fix additional Python 2 unicode handling issues when accessing My Subscription #639

### Changed
- Only set combined cache size to 20 MB in Setup Wizard if value is not already larger
- Cached playlist items will be forced to reload when deleting item from playlist rather than waiting 5 minutes

### New
- Make colours used for extra details in video listings customisable in Kodi 20+

## v7.0.4+beta.2
### Fixed
- Overhaul of http server settings to try and fix #633
- Fix unicode handling error when accessing My Subscriptions in Kodi 18 #636
- Update url resolver
  - remove redundant resolving attempt
  - attempt to bypass cookie consent redirect #631

### Changed
- Live stream sorting changed
  - Upcoming sorted by date
  - Live sorted by most viewed
  - Completed by most viewed in last 3 days
- Update setup wizard performance tier settings
  - Disable MPEG-DASH for old devices
  - Enable VP9 for low powered devices

### New
- Kodi 18 (Leia) release available
  - These releases are unsupported and may not be completely functional
  - If something works, then that is good
  - If something doesn't work, it will not be addressed unless it applies to Kodi 19+
  - Known issues:
    - accessing script actions through settings does not work (e.g. maintenance and user actions)
- Setup wizard will disable use of website urls if no playercorefactory.xml is found #632

## v7.0.4+beta.1
### Fixed
- Workarounds for buggy language and region details in Kodi
- Incorrect language fallbacks for subtitles
- Trying to use InputStream.Adaptive to load downloaded subtitles #624
- Duplicated/overridden subtitles with same language but different type
- Missing order parameter used when loading playlists #607

### Changed
- Setup Wizard replaces Settings in main menu
  - Settings available as seperate item
- Settings have been re-organised to group similar settings together
  - Less commonly changed settings have all been moved to Advanced settings tab
- Updated client versions used for API, login, and player requests
- Improve language display for subtitles loaded through InputStream.Adaptive
- Updated translatons to reflect API config page moving to http://<ipaddress>:<port>/youtube/api #618
- Update script.module.requests min version required #610

### New
- Setup Wizard now provides ability to set recommended setting values
- Old search history and playback history will be imported when Setup Wizard is run #619
- Respect Kodi preferred subtitle language setting when attempting to load subtitles
- Include original video language as a default fallback language for subtitles
- Enable profiler when Kodi debug logging is enabled

## v7.0.3.2
### Fixed
- Fix settings not being saved and setup wizard repeatedly activating in Kodi 20 and lower #604
- Fix plugin refresh on settings change

## v7.0.3.1
### Fixed
- Restore support for old format plugin urls used for trailers #598
- Restore support for plugin search urls #599

## v7.0.3
### Fixed
- Fix incorrect labelling of subtitle language in Kodi subtitle selection dialog #595
- Fix failure to play videos when MPEG-DASH and subtitles were enabled in Kodi 20 and lower #595
- Fix Python 2 compatibility

## v7.0.3+beta.5
### Fixed
- Properly fix infotagger error with Kodi v19
- Disable non-functioning saved playlists menu item #569
- Fix forced logout on upgrade from v7.0.2.2 or below
- Fix Youtube progress tracking #581

## v7.0.3+beta.4
### Fixed
- Fix handling of isPostLiveDrv streams #579
- Fix infotagger error with Kodi v19
- Fix errors with creating and deleting temporary folders
- Fix listing more than 50 items in local history list
- Fix context menus in local history and local watch later list
- Fix not using user API key when not logged in #585, #587
- Fix unofficial version not using correct content type for videos #586, #589

### New
- Add setting to disable label details #559
- Allow searching by Youtube url to access unlisted videos that can't be searched for
- New option to list all subtitles in Kodi subtitle dialog when MPEG-DASH is enabled #121, #201, #247, #305, #489

## v7.0.3+beta.3
### Fixed
- Fix invalid error when removing subscriptions #568
- Fix removing item from playlist #570
- Fix related videos and respect pagination limits #572
- Fix not correctly including visitor data in continuation requests
- Fix for possible database locks during setup
- Fix incorrect timezone details for premiered time #574

### Changed
- Don't show subscribe context menu item in My Subscriptions #568

### New
- Add ability to unsubscribe from My Subscriptions #240, #568
- Make MPEG-DASH frame rate details configurable #336

## v7.0.3+beta.2
### Changed
- Function and data cache are now created per user
- Video channel no longer used as studio infolabel
- Since v7.0.3+beta.1 setting values are logged to the debug log
  - Now sensitive details (location, API key, etc.) are masked
- Deprecated plugin actions removed
- Changed caching of playlists
  - First page of playlists are only cached for 5 minutes
  - Following pages are cached for 1 hour

### Fixed
- Fix error when opening My Subscriptions after login #555
- Fix directory items being treated as short videos #556
- Fix error with Setup Wizard not loading #557
- Refresh context menu item will now actually refresh listings #558

## v7.0.3+beta.1
### New
- Add display of extra video information (premieres, views, comments, likes) #18, #464, #503
- Add support for Clips #450
- Add ability to combine playlists #480
- Add support for timestamps in links #502
- Add initial support for higher bitrate streams #505
- Add ability to limit video FPS at max resolution #539
- Add local Watch Later and History for use when not logged in or custom playlist not set
- Update main menu items:
  - New Recommended videos (similar to YouTube home page, will use login if available)
  - Old Recommended videos renamed to Related videos (requires local/remote history enabled)
  - Popular right now renamed to Trending

### Changed
- Local history made optional and enabled by default
- Existing user data will be lost due to changes in data format:
  - Search, local history, and local watch later is stored per user
  - Function and data cache will be wiped (will also become per user in future)
- Disable OPUS audio by default #537

### Fixed
- Fix sharing links #115, #250, #538
- Fix date and sorting issues #411, #425, #434
- Fix issues with randomising playlists #485
- Fix Recommendations, Related Videos, and Auto-play next #508
- Fix issue with switching between H264/AV1 streams #532
- Fix issues with live streams #530, #540
- Fix prompt for subtitles #534
- Fix issues with corrupt user data #536
- Fix issues with loading large playlists #545
- Fix queuing from current playlist #549
- Workaround for crashes #113, #540

## v7.0.2.2
[fix] Fix Matrix compatibility
[fix] Update unofficial patch

## v7.0.2.1
[fix] fix Matrix InputStream.Adaptive dependency version

## v7.0.2
[new] quality and stream feature selection
[new] enable HLS live streams
[new] stream and language labelling
[chg] separately enable local/remote history
[chg] restore unsupported compatibility for Kodi v19 (Matrix)
[fix] fix various playback issues |contrib: various|
[fix] Limit host connections getting subscription feeds |contrib: cas--|
[fix] fix handling of connection failures
[upd] Translations updated from Kodi Weblate

## v7.0.1
[fix] video duration not showing in lists
[upd] Translations updated from Kodi Weblate

## v7.0.0
[rem] removed support for versions of Kodi pre-Nexus v20
[rem] removed support for python 2
[rem] removed dependency on six
[upd] Translations updated from Kodi Weblate

## v6.8.25
[fix] Nexus compatibility with InfoTagVideo |contrib: jurialmunkey|
[chg] make httpd /api url case insensitive due to skin choice of uppercase settings text
[chg] use listitem property for Inputstream Adaptive headers instead of url piped on Nexus+
[upd] Translations updated from Kodi Weblate

## v6.8.24
[fixup] resolve playback history not being updated
[add] add opus audio support
[upd] use more descript reasons for failed playback
[upd] Translations updated from Kodi Weblate

## v6.8.23
[revert] subscription groups/tags - causing breaking issues

## v6.8.21
[chg] Icons and Fanart updated |contrib: papercore-dev|
[add] Add setting General - Hide short videos (1 minute or less)
[add] Add support for /shorts/video_id format links |contrib: jmbreuer|
[add] Add Fanart to Subscriptions
[add] Access to Saved Playlists
[fix] Display of channel fanart
[fix] Misc missing fanart
[lang] translation updates from Weblate

## v6.8.20
[fix] Fix to_str |contrib: RNavega|
[fix] Fix playback buffering |contrib: RNavega|
[fix] Subtitle language names
[lang] translation updates from Weblate

## v6.8.19
[fix] /uri2addon/ endpoint for playback of youtube.com urls
[fix] Don't assume addon is installed in home directory |contrib: jfly|
[lang] translation updates from Weblate

## v6.8.18
[fix] Fix to_str |contrib: RNavega|
[fix] Fix playback buffering |contrib: RNavega|
[lang] translation updates from Weblate

## v6.8.17
[fix] Fix comments on Kodi 19+ |contrib: ramateur|
[fix] Fix ratebypass
[upd] Update icon and fanart |contrib: papercore-dev|
[lang] translation updates from Weblate

## v6.8.16
[fix] Fix playback of some content (ie. Music videos)
[fix] Calcuate n parameter to enable ratebypass

## v6.8.15
[fixup] No streams found, consent cookies |contrib: jaylinski|
[fixup] Age gate detection, show age gate error instead of 'No streams found'
[fixup] encoding of some titles/authors - ie. russian
[lang] translation updates from Weblate

## v6.8.14
[fixup] playback of some streams due to encoding issues
[fixup] default player response type

## v6.8.13
[fix] player config and client discovery
[fix] No Streams Found |contrib: 14mRh4X0r|
[fix] capability map to contain unversioned capabilities |contrib: jmbreuer|
[lang] zh_tw strings |contrib: JuenTingShie|

## v6.8.11
[fix] mktime overflow when loading My Subscriptions
[fix] encoding issues in search history |contrib: dreznichuk|

## v6.8.10
[fix] fix javascript player retrieval and playback of some videos for affected users |contrib: thomazz-nl|
    - Invalid URL 'http://': No host supplied

## v6.8.9
[fix] my subscriptions section using YouTube RSS |contrib: PureHemp|
[fix] items per page settings on Kodi 19
[chg] recommendations only available for users with custom history playlist id configured
[chg] no longer show watch later unless custom watch later playlist is configured
[rem] remove usage of discontinued api and dual login (no longer required)

## v6.8.8
[fixup] encoding of subtitle track names

## v6.8.7
[fixup] encoding of titles and authors during playback

## v6.8.6
[fix] some videos failing to play with an Invalid URL exception
[fix] searching in some instances with encoding issues |contrib: tsaklidis|
[fix] support python 3.9 html.unescape |contrib: asavah|

## v6.8.5
[fix] playback of purchased movies |contrib: MisterD81|
[fix] notifications for some languages on Kodi 19
[fix] searching for some languages
[fix] loading on some versions of python 3
[fix] some videos failing to play with an Invalid URL exception
[upd] use xbmcvfs.translatePath if available, clean up for Kodi 19

## v6.8.4
[fix] next page now ignores sorting, remains at the end of the directory
[fix] searching, no longer require remote safe search
[fix] notifications for some languages
[chg] only log http server ping failures
[lang] zh_cn strings |contrib: yureng, xiaojun|

## v6.8.3
[fix] playback of some videos
[fix] notifications for some languages |contrib: Mutronics|
[fix] fix rating videos causing and error even though it succeeded
[upd] cache javascript player url for4 hours, reduces http requests per play by 1
[upd] use new settings format on Kodi 19
[lang] el_gr strings |contrib: twilight0|
[lang] hu_hu strings |contrib: thelacesz|

## v6.8.2
[fixup] recommendations with > 50 channels

## v6.8.1
[fix] playback failing
[fix] viewing comments when logged in
[fix] intermittent issue with Subscriptions
[fix] encoding of video unavailable messages
[upd] updates to recommendations
[upd] update logging for Kodi 19
[lang] fr_fr strings |contrib: alan7000|
[lang] pl_pl strings |contrib: drrak|
[lang] nl_nl strings |contrib: Markman-B|

## v6.8.0
[add] support for video comments, Comments in the More... dialog |contrib: doko-desuka|
[add] simulate deprecated recommended home API |contrib: hedleyroos|
[fix] error caused by timestamp formatting
[fix] fix Premiere's exiting after 5 seconds |contrib: jpfox156|
[fix] playlists over json-rpc |contrib: JasperE84|
[lang] de_de strings |contrib: tweimer|
[lang] el_gr strings |contrib: twilight0|
[lang] es_es strings |contrib: roliverosc|
[lang] pt_pt strings |contrib: daniel3x|

## v6.7.0
[add] send PlaybackInit, PlaybackStarted, PlaybackStopped notifications containing video id, channel id, and the status of the playing video
[fix] allow playback regardless of API status
    - fixes playback for strm, playlists, other add-ons, and sharing videos from devices
[fix] finding player config, allow playback to continue when not found if possible
[fix] fix possible loop due to invalid keys and login information
[fix] fix playback of mpeg-dash streams if HTTP Server - Listen on IP is blank
[upd] use a dialog to notify users of API key requirements with link to wiki
    - https://ytaddon.page.link/keys
[rem] remove provided api keys
[lang] de_de strings |contrib: tweimer|
[lang] el_gr strings |contrib: twilight0|
[lang] hu_hu strings |contrib: thelacesz|
[lang] pl_pl strings |contrib: drrak|

## v6.6.0
[add] 'Play (Ask for quality)' context menu
[add] search by channel or playlist id
[add] hide_folders, hide_playlists, hide_search, and hide_live to /channel/<channel_id>/ end-point
    - ie. plugin://plugin.video.youtube/channel/UC4PooiX37Pld1T8J5SYT-SQ/?hide_folders=true will hide all folders(Playlists, Search, and Live) in the channel listing
[fix] playback for some videos (ie. music videos)
[fix] playback of some videos with no adaptive video streams
[fix] don't update watch history when incognito/screensaver/live |contrib: regseb|
[fix] search prompting for input after video playback or refresh
[lang] el_gr strings |contrib: twilight0|
[lang] es_es strings |contrib: roliverosc|
[lang] pt_br strings |contrib: MediaBrasil|
[lang] cs_cz strings |contrib: llzn.cz|
[lang] it_it strings |contrib: SebastianoPistore|
[lang] de_de strings |contrib: tweimer|

## v6.5.2
[fix] playback (No streams found)
[fix] missing metadata
[fix] ended live streams not using mpeg-dash when enabled
[fix] subscriptions not showing latest videos
[upd] simplify youtube_resolver regex |contrib: Twilight0|
[lang] de_de strings |contrib: TehTux|
[lang] pl_pl strings |contrib: drrak|
[lang] nl_nl strings |contrib: Markman-B|

## v6.5.1
[add] get_live to youtube_requests module to retrieve live stream info for a channel
[add] Adaptive (MP4) and Adaptive (WEBM) to MPEG-DASH - Video quality
[fix] live stream playback
[fix] unable to seek when using mpeg-dash
[fix] mpeg-dash video quality selection
[fix] sqlite requests breaking when another add-on/module uses sqlite3.register_converter(..)
[fix] signal endofdirectory in case of a provider navigation exception |contrib: enen92|

## v6.5.0
[add] Video quality selection to Settings - MPEG-DASH
[add] Limit to 30fps to Settings - MPEG-DASH
[add] Uploads playlist to channel playlists
[chg] Use search for channel videos instead of the Uploads playlist
[fix] Signature cipher, some videos unplayable (ie. music videos)
[fix] Playback monitoring using Python 3
[fix] unescape html entities in title and plot
[fix] handling of invalid grant when refreshing access token
[fix] adding suggested videos when played from some widgets
[fix] http server /client_ip using Python 3 |contrib: t6|
[upd] refactor youtube_resolver.resolve
[lang] el_gr strings |contrib: twilight0|
[lang] es_es strings |contrib: roliverosc|
[lang] ko_kr strings |contrib: parkmino|

## v6.4.1
[upd] Use the activation url provided by the authentication request
[add] add Settings - MPEG-DASH - Default to WEBM adaptation set
        - required for 4k stream automatic selection
[add] add Settings - MPEG-DASH - Include VP9.2
        - includes HDR content in the manifest
[add] add support for &hide_folders=true parameter in search query urls
        - when added to the url it will hide the Playlists, Channels, and Live folders
[add] &seek=<time_in_seconds> to play urls
[fix] fix playback of Purchases
[fix] fixed saved playlists that don't belong to a channel
[fix] mpeg-dash frame rate representation
[fix] datetime parsing if no datetime string is available
[chg] handle playback monitoring in threads
[lang] nl_nl strings |contrib: MB1968|
[lang] el_gr strings |contrib: twilight0|

## v6.4.0
[add] 4K videos with InputStream Adaptive >= v2.3.14
        - Thanks to @peak3d
[fix] some videos not playing when logged in
[fix] reset function cache at restart/update to resolve issues persisting due to cached results
[fix] service potentially not shutting down http server
[fix] added to playlist/subscriptions notifications
[fix] only generate mpeg-dash file if adaptive formats are available
[fix] map frame rates to more common representation to lessen the chance of double refresh rate changes (only applies to generated mpeg-dash files)
[fix] currently playing file check when playing file is a plugin:// url
[chg] Settings - General - Autoplay suggested videos
        - limit playlist size to 1000 videos
        - request less relevant videos at one time
        - old behavior: add 50 most relevant videos for each video played, repeats allowed
            - result: a lot of barely relevant videos in groups of 50
        - new behavior: add single most relevant video, no repeats
            - result: next video is always the most relevant video to the last video played
[upd] player javascript retrieval

## v6.3.1
[fix] ensure playback monitoring is monitoring the correct item
[fix] check for abortRequested while processing purchased collections
[upd] Use setArt instead of iconImage, thumbnailImage and setProperty('fanart_image')

## v6.3.0
[add] support for keymapping of some endpoints, wiki: https://kodi.wiki/view/Add-on:YouTube#Keymaps
[add] 'Rate videos in playlists' setting to 'Settings - General - Rate after watching'
[add] Support for purchased collections |contrib: MisterD81|
[fix] Playback of some videos (e.g. music videos)
[fix] Live stream playback
[fix] post play add to watch history
[fix] fix add-ons playback history not saving
[fix] playback monitoring/post play events triggering for the wrong videos in some cases
[fix] call setResolvedUrl(False) if get_video_streams fails
[upd] code cosmetics and resolve inspections
[upd] improve watch history tracking, actively report watch times and state during playback
[upd] sign in/out, switch user, and settings ListItems to isFolder=False and isPlayable=False
[upd] improve watch later playlist id retrieval and feedback
[upd] Use SPDX license identifier
[lang] de_de strings |contrib: tobhor|
[lang] el_gr strings |contrib: twilight0|
[lang] es_es strings |contrib: roliverosc|
[lang] ko_kr strings |contrib: parkmino|
[lang] nl_nl strings |contrib: Markman-B|

## v6.2.3
[add] Next Page to 'More...' -> 'Add to...' context menu
[add] icon and description to playlists in 'More...' -> 'Add to...' context menu on Kodi 17+
[add] 'Play audio only' context menu item
[fix] generated dash with no supported video streams(audio only) being played when Audio only not enabled
[fix] potential RuntimeError when retrieving total time of playing content if player is stopped immediately
[lang] nl_nl strings |contrib: Markman-B|
[lang] pl_pl strings |contrib: xulek|
[lang] pl_pl strings |contrib: drrak|
[lang] sk_sk strings |contrib: jose1711|
[lang] el_gr strings |contrib: twilight0|
[lang] es_es strings |contrib: roliverosc|

## v6.2.2
[fix] signature function not found on some videos

## v6.2.1
[fix] some streams reporting as Unavailable
[fix] utf-8 file paths
[fix] settings, and switch user causing perpetual busy dialog on Kodi 18

## v6.2.0
[add] Context menu -> 'Play with subtitles' |contrib: solarus|
[add] Option to download subtitles before playback in Settings -> General -> Configure subtitles
[add] Refresh context menu to all videos/live streams
[add] &strm=true parameter for strm files in Kodi 18 |contrib: vlmaksime|
    - use description from library and set watched status
[add] 'Settings -> Advanced -> Use YouTube website urls' for external/alternative players
            eg. Player: MPC-BE, URL: https://www.youtube.com/watch?v=C0NyvxTJGcQ
            eg. playercorefactory.xml
                <?xml version="1.0" encoding="UTF-8"?>
                <playercorefactory>
                    <players>
                        <player name="MPC-BE" type="ExternalPlayer" audio="false" video="true">
                            <filename>C:\Program Files\MPC-BE x64\mpc-be64.exe</filename>
                            <args>"{1}" /fullscreen /close</args>
                            <hidexbmc>true</hidexbmc>
                            <hideconsole>true</hideconsole>
                            <warpcursor>none</warpcursor>
                        </player>
                    </players>
                    <rules action="prepend">
                       <rule filename="(?:http)*s*:*[/]{0,2}(?:www\.)*youtu(?:\.be/|be\.com/(?:embed/|watch/|v/|.*?[?&/]v=))[a-zA-Z0-9_\-]{11}.*" player="MPC-BE" />
                    </rules>
                </playercorefactory>
[fix] Reported background progress dialog percentage
[fix] Playlist items, use video_items instead of playback_items
[fix] search history size
[fix] remove Spanish (Latin America)|es-419 from the setup wizard, causing invalidLanguage and invalidRelevanceLanguage errors
[upd] Improve speed of playback starting and resolver
            before: min: 1.5s max: 2.6s median: 1.7s
            after:  min: 0.9s max: 2.6s median: 1.2s
[chg] refactor logging and system version
[chg] Localize confirmation
[lang] el_gr strings |contrib: twilight0|
[lang] es_es strings |contrib: roliverosc|
[lang] es_mx strings |contrib: Intel11|
[lang] it_it strings |contrib: SebastianoPistore|
[lang] nl_nl strings |contrib: Markman-B|
[lang] ru_ru strings |contrib: vlmaksime|

## v6.1.4
[fix] Signature function not found

## v6.1.3
[fix] timedelta.total_seconds python 2.6 compat.

## v6.1.2
[fix] dash settings check and defaults
[fix] addon-check raised warning for services complex entry point
[fix] codacy raised issue in http server (https://app.codacy.com/app/Kodi/repo-plugins/pullRequest?prid=2080401)
[chg] move seek to onPlayBackStarted, onAVStarted only in K18
[chg] geolocation provider changed from ipstack to ip-api
[del] frodo listitem art compatibility
[lang] ru_ru strings |contrib: Burgaduk|
[lang] zh_tw strings |contrib: Zankio|

## v6.1.1
[fix] http proxy using incorrect setting id causing 403 errors

## v6.1.0
[add] Multi-user support
    - Switch User folder (default: on) Settings -> Folders
    - User management (Add, Remove, Rename, Switch) Settings - Users
    - Signed in users are green, Current user has an *
[add/upd] add data cache and optimize caching
    - add Settings -> Maintenance -> Clear data cache/Delete data cache
    - increase allowed cache size
    - database accesses per 50 videos: before: 70~100 after: 4~6
    - load time of 50 videos w/ no cached videos: before: ~11.6 secs, after: ~3 secs
    - load time of 50 videos w/ all cached videos: before: ~0.8 secs, after: ~0.7 secs
    - cached size per 50 videos: before ~1MB, after ~550KB
[add] Refresh after watching (default: off) Settings -> General
[add] Completed Live folder (default: on) Settings -> Folders
[add] Upcoming Live folder (default: on) Settings -> Folders
[add] My Location folder (default: on) Settings -> Advanced -> Enable setup-wizard
[add] Play count minimum percent (default: 85%) Settings -> General -> Play count minimum percent
[add] Playback history (default: off) Settings -> Advanced -> Use playback history
[add] Time since published for videos as item properties Property(PublishedSince), Property(PublishedLocal) |contrib: pannal|
[add] Check My IP, Settings -> HTTP Server
[add] Developer authentication, allowing add-ons to use their own access tokens
    - see youtube_authentication.py, youtube_registration.py, youtube_requests.py, and youtube_resolver.py
[upd] YouTube UTC datetimes to local timezone |contrib: pannal|
[upd] Localize API key errors, provide a more descriptive notification
[fix] Add to YouTube watch history
[fix] My Channel videos (Error 403)
[fix] allow fallback to dash, when using Audio only
[fix] Signature function not found error for some users
[fix] Context Menu -> More -> Related Videos w/ Kodi 18
[fix] Sign In/Sign Out causing crash with Kodi 18 nightlies
[fix] Channel 'mine' caching
[fix] Time changing when playing generated dash
[lang] es_es strings |contrib: roliverosc|
[lang] el_gr strings |contrib: twilight0|
[lang] nl_nl strings |contrib: Markman-B|

## v6.0.2
[fix] incorrectly raised 'Proxy is not running' error

## v6.0.1
[fix] notification encoding

## v6.0.0
[add] Python 3 compat.
[add] Settings -> Maintenance -> Delete temporary files
[add] Settings -> General -> Rate video after watching
[add] Settings -> API -> Enable API configuration page
    - when enabled, visit http://<ipaddress>:<port>/api to configure API keys from a web browser
    - port is configured in Settings - HTTP Server - Port
[chg] Storing personal api keys in api_keys.json
[chg] Storing login tokens in access_manager.json
[add] youtube_registration module, register developer keys and use them by appending an addon_id=<addon_id> parameter to youtube add-on plugin urls
[add] screensaver=true parameter to /play route - no suggested videos, no post play events, don't ask for quality
[add] play route for channel live streams
    - plugin://plugin.video.youtube/play/?channel_id=UCLA_DiR1FfKNvjuUpBHmylQ&live=1
[add] Purchases
    - requires Kodi 18
    - requires inputstream.adaptive >= 2.2.12
    - if a purchase fails after 10 seconds
        - provide a debug log
        - set InputStream Adaptive -> Settings -> Stream selection -> manual
        - change video stream during playback to preferred working resolution
    - huge thanks to peak3d
[add] relevanceLanguage to search requests
[add] Refresh to My Subscriptions (Filtered)
[fix] mpeg-dash proxy with multi-profiles
[fix] search input, now works with Yatse
[fix] Signature deciphering
[fix] context menu after playback
[fix] alternative player, do not append headers
[fix] My Subscriptions (Filtered) channel matching
[fix] Audio only, failover to video if no audio only streams available
[fix] My Subscriptions missing page 3
[fix/upd] function cache, update max rows and resolve hang on some requests
[fix/upd] post play events happen post play
[fix/upd] set title from metadata on play
[chg] only automatically remove temp folder at start-up
[upd] Dutch strings [MB1968]
[upd] French strings [bubuleur]
[upd] Greek strings [twilight0]
[upd] Spanish strings [roliverosc]

## v5.5.0
[add] Saved Playlists
[add] allow developers to use their own api key
    - xbmcgui.Window(10000).setProperty('plugin.video.youtube-configs', json.dumps({"origin": ADDON_ID, "main": {"system": SYSTEM_NAME, "key": API_KEY[, "id": CLIENT_ID, "secret": CLIENT_SECRET]}}))
[add] Audio only: Settings -> General
[add] Age gate enforcement: Settings -> General
[add] Quick search and Quick search (Incognito)
    - Settings -> Folders
    - incognito doesn't add to search history or run post play events (add to watch history)
[add] Quick search to channels (no history)
[add] Live folder to channels
[fix] My Channel videos incl. private
[fix] mpeg-dash vods, proxy required
    - Settings - MPEG-DASH
    - Thanks to Schtek for generating the needed mpd file
[fix/upd] use select dialog for subtitle settings
    - [add] Configure subtitles: Settings -> General
    - [add] Current language with No auto-generated subtitles option
[upd] language/translation paths * Isengard (15.x)+ required
[upd] youtube_resolver: allow resolve by url
[fix/upd] do not use distutils.version.LooseVersion for version compare [stefansaraev]
[fix/upd] add check to api key stripping
[fix/upd] subtitles default to non asr track when possible
[fix/upd] login client logging and endpoints
[fix/upd] Watch Later
    - Clear: Settings - Folders - Custom Watch Later playlist id
    - Settings - Folders - Retrieve Watch Later playlist id
[fix/upd] History
    - cannot add to history from add-on
    - Clear: Settings - Folders - Custom History playlist id
[fix] /api/update route logging
[rem] SPMC mpeg-dash support
[upd] Hebrew strings [Eng2Heb]
[upd] Polish strings [Etharr]
[upd] Italian strings [DjDiabolik]
[upd] Hungarian strings [lacesz-sh]

## v5.4.5
[fix] tighten regex for routing, resolving incorrect routing

## v5.4.4
[fix] overlapping regex causing no playlist videos

## v5.4.3
[add] mpeg-dash support for live content (requires inputstream.adaptive >= 2.0.12)
[add] add route to update api keys
    plugin://plugin.video.youtube/api/update/?enable=true&client_id=<client_id>&client_secret=<client_secret>&api_key=<api_key>
[fix/upd] refactor subtitles ** subtitles setting will be reset
[fix/upd] add My Subscriptions (Filtered) to dual login requirements
[fix/upd] only show Browse Channels when logged in
[upd] Greek strings [Twilight0]
[upd] Polish strings [Etharr]

## v5.4.2
[fix/upd] My Subscriptions

## v5.4.1
[fix/upd] dash working for vevo/etc
[upd] rework of auto subtitles
[fix] leia nightly login issues
[fix] 403 error on 'My Channel'/uploaded videos

## v5.4.0
[upd] Greek strings [Twilight0]
[upd] Polish strings [Etharr]
[upd] Finnish strings [teemue]
[upd] Spanish strings [roliverosc]
[fix/upd] resolve "Error Contents: 'q'" error [horstepipe]
[fix/upd] resolve Play All/Play from here not starting playback
[fix/upd] resolve playlists starting on second item
[fix/upd] allow dash in quality choices
[fix/upd] set content to files for menus, resolves mouse/scrolling
[fix/upd] fix cipher
[fix/upd] increase search history limit to 200
[fix/upd] storage db
[add] Safe Search to Settings -> General
[add] Thumbnail size to Settings -> General
[add] Auto-play suggested [mehdilauters]
[add] Automatic subtitles [Uukrull]
[add] My Subscriptions (Filtered) - whitelist/blacklist version of My Subscriptions [chhe]
[add] module extension point:
        add-ons can now add plugin.video.youtube dependency and resolve youtube video id's or make v3 api requests using the youtube plugin,
        """ <addon.xml>
        <import addon="plugin.video.youtube"/>
        """
        """ <example.py>
        import youtube_resolver
        streams = youtube_resolver.resolve(<video_id>)
        import youtube_requests
        videos = youtube_requests.get_videos([<video_id_1>, <video_id_2>, <video_id_3>])
        """

## v5.3.11
[fix/upd] replace custom simple_requests with script.module.requests to resolve ssl and cross-platform issues
[add] 'Reset access manager' added to Maintenance section, sign out process(available when logged out)  to clean up tokens in settings.xml
[upd] set default for SSL certificate verification to 'true'

## v5.3.10
[fix/upd] resolve 'No video streams found' for age-gated content and other minor.
[fix/upd] unescaping HTML entities in subtitles [mdmdmdmdmd]
[upd] Polish strings [Etharr]

## v5.3.6-9
[fix/upd] resolve 'No video streams found'
[fix/upd] SPMC dash support guidosarducci
[upd] Italian strings [iz8mbw]
[upd] Spanish strings [roliverosc]
[upd] Dutch strings [Sjord]
[fix/upd] Frodo backwards compat. setArt [lulol]

## v5.3.5
[add] MPEG-DASH support for Kodi 17 w/ inputstream.adaptive Add-on
[add] optional History and Watch Later custom playlist to Settings -> Folders, or (My)Playlists context menu to set/remove
[add] Maintenance section to Settings
[add] 'Subtitle language(s) to download' selection to Settings -> General
[add] 'Force SSL Certificate verification' to Settings -> Advanced
[upd] API key set switching from Settings -> API (this will log you out)
[upd] Dual login only required if My Subscriptions folder is enabled at sign-in
[upd] setting content type from episodes, now videos
[del] override view options
[upd] Norwegian strings [torstehu]
[upd] Greek strings [twilight0]
[upd] Portuguese strings [Wanilton]
[upd] Dutch strings [flemlion]
[fix/upd] API tweaking and various other updates

## v5.2.2 (2016-05-28)
[upd] Insert old API-Keys from Bromix because of Quota-Exceed-Error
[add] Dutch strings (thanks to Guilouz)
[upd] French strings (thanks to royreinders)
[upd] Greek strings (thanks to Twilight0)

## v5.2.1 (2016-05-12)
[add] Additional "Recommend for You" section (thanks to anxdpanic)

## v5.2.0 (2016-05-11)
[upd] APi-Changer - First login delete old Credentials - New Login Required! Sorry :)

## v5.1.20.7 (2016-05-03)
Workaround for the Quota Exceed-Error.
[add] API-Changer for a Pool of 6 API-Keys
[add] Auto-Reauthenticate with Pool-Key on "Quota Exceed" error
[add] "Use own API"-Button
[hint] The Message "Invalid Credentials" after Update could be fixed with deleting the Userdata-Settings.xml
[add] add Recommendations to main listing when logged in [anxdpanic]

## v5.1.20.6 (2016-04-03)
[add] Greek Translation from twilight0
[upd] Fixed italian translation from DjDiabolik

## v5.1.20.5 (2016-03-20)
[upd] Ignore if '.apps.googleusercontent.com' entered in API Id string in add-on settings

## v5.1.20.4 (2016-03-05)
[add] API Key in add-on settings
[upd] All string.po for new API Key functionality. New entries in language string.po files not translated from English.

## v5.1.20.3 (2016-03-04)
[fix] All Key changed with YouTube TV

## v5.1.20.2 (2016-03-04)
[fix] Live streams itag 91 patch
[add] Kodi 17 Krypton support. Patch by Uukrul

## v5.1.20 (2016-02-25)
[fix] Final fix for APIs

## v5.1.16 (2015-12-24)
[fix] reverted search order by date

## v5.1.15 (2015-12-22)
[fix] signature calculation

## v5.1.14 (2015-12-22)
[upd] default search order by date (newest first)
[fix] VEVO signature calculation

## v5.1.13 (2015-12-20)
[fix] frodo...DIE FRODO DIE !!!
[fix] some cleanup for Jarvis

## v5.1.12 (2015-11-29)
[fix] sort issues with Jarvis (thx 2 guidosarducci)

## v5.1.11 (2015-11-24)
[fix] signature calculation (e.g. VEVO)

## v5.1.10 (2015-11-13)
[fix] signature calculation (e.g. VEVO)

## v5.1.9 (2015-09-21)
[add] Hebrew (thx 2 smoky-jr)
[upd] don't set default season and episodes (1x1)
[upd] another try to optimize the quota problem. Move all searches to the individual keys instead of one global
[fix] playback issues (skip discontinued video/format by YouTube)

## v5.1.8 (2015-08-23)
[add] Bulgarian (thx 2 NEOhidra)
[upd] new quota shaping
[fix] personal playlists (Watch Later, Liked Video, ...) should work again
[fix] playback of VEVO videos - some videos still using discontinued ITAG13
[fix] show login, when an endpoint is called, which requires permissions.

## v5.1.7 (2015-07-15)
ADD: quota optimization via separate key for none-token depended API calls
UPD: new login semantic to sign out if someone upgrades to a newer version of KODI
FIX: 'Next Page (X)' item was added to the current playlist for playback

## v5.1.6 (2015-06-14)
ADD: Chinese (Traditional) (thx 2 beddfaf916)
ADD: Czech (thx 2 tomaswcz)
ADD: Romanian (thx 2 Danny3)
UPD: test some new pagination for 'My Subscriptions'
UPD: Polish (thx 2 Etharr)
FIX: show notification again for unsupported rtmpe streams
FIX: unicode/utf-8 trouble in kodion

## v5.1.5 (2015-05-29)
UPD: remove deprecation warning for Isengard
FIX: Issue 7163 (Missing pagination for subscriptions - YouTube APIv3 bug)

## v5.1.4 (2015-05-26)
ADD: Frodo support (only if you install via zip or bromix repo)
UPD: new API-KEY - thanks to the guy for hijacking the key for trailer searches
UPD: Russian (thx 2 BytEvil)
FIX: cache wasn't working correctly without login

## v5.1.3 (2015-05-16)
UPD: code cleaning
FIX: minor fixes

## v5.1.2 (2015-05-15)
ADD: ask for video quality (optional)
UPD: code cleaning
UPD: Russian (thx 2 BytEvil)
UPD: kodion
FIX: add 'Play all' for playlist (again)

## v5.1.1 (2015-05-10)
ADD: 'More...' in context menu to provide more items
ADD: show deprecation warning of old plugin calls starting with Isengard
ADD: EndPoint: 'plugin://plugin.video.youtube/search/?q=[URL_ENC_TEXT]'
ADD: API Key for each major version of KODI
UPD: Ukrainian (thx 2 Dukobpa3)
UPD: Russian (thx 2 BytEvil)
UPD: new second fanart
UPD: reorganized context menu
UPD: improved logging (debug only)
UPD: Improved error handling
FIX: refresh after rating a video (own playlist only)
FIX: add 'refresh' again for 'My subscriptions'
DEL: removed old v2 API

## v5.1.0 (2015-04-22)
ADD: Double login to support 'My subscriptions' via YouTube TV API
ADD: 'More Links from the description' - extracts further links from the description
ADD: Korean (thx 2 piodio)
UPD: removed old implementation of 'My Subscriptions'
UPD: new fanart and icon
UPD: changed credentials
UPD: minimal quota-optimization
UPD: French (thx 2 eauland)
UPD: YouTube relevant description links - improved extraction and resolving of video/playlist urls
UPD: YouTube relevant description links - improved extraction and resolving of user/channel urls
UPD: YouTube relevant description links - improved performance resolving urls with caching
UPD: regex optimizations for season and expisode extraction
FIX: support fanart of channel in new implementation of 'My Subscriptions'
FIX: YouTube relevant description links - script error while some server return garbage for a location
FIX: script error while resolving url fails
FIX: script error while adding video to a playlist
FIX: show seconds (runtime) in Gotham

## v5.0.9 (2015-03-14)
ADD: 'duration' optimized for KODI 15.X (Isengard)
ADD: EndPoint for listing the videos of a playlist: "plugin://plugin.video.youtube/playlist/<PLAYLIST_ID>/"
UPD: optimized client-/server transfer (use gzip)

## v5.0.8 (2015-03-05)
UPD: Polish (thx 2 Etharr)
UPD: Russian (thx 2 BytEvil)
FIX: improved playback

## v5.0.7 (2015-02-27)
ADD: 'Refresh' in 'My Subscriptions' and all my playlists
ADD: rename search history item
UPD: French (thx 2 Trilip)
UPD: Ukrainian (thx 2 posledov)
UPD: Spanish (thx 2 PatOso)
FIX: possible crash on not well formed language ids
FIX: optimized logging
FIX: unicode trouble

## v5.0.6 (2015-02-17)
ADD: setting for hiding the channel name in the description
ADD: Ukrainian (thx 2 posledov)
UPD: show 'Watch History' (default)
UPD: Russian (thx 2 BytEvil)
UPD: improved support for live streams
UPD: improved stream selection based on container
FIX: 'What to watch' => 'Popular right now'
FIX: don't crash while trying to play rtmpe
FIX: corrected ITAG 18 in 360p instead of 260p


## v5.0.5 (2015-02-01)
ADD: clear search history items
UPD: replace context menu not everywhere
UPD: dropped dependency of 'requests'-module because of performance issues
FIX: Add playing video to the 'Watch History'
FIX: maybe a fix for a problem (again!) on unix systems while using python 2.7.9 + certificate verification
FIX: removed pagination for "Related Videos" - the fix before produced some nasty side-effects
FIX: Vevo signature

## v5.0.4 (2015-01-15)
ADD: 'Live' in search
ADD: 'Play with...' for supporting external/alternative player
ADD: live events (needed some tests and feedback)
ADD: support for user names instead of channel ids
UPD: set XBMC/KODI to at least Gotham 13.2
UPD: Setup-Wizard views based on content type (KODION update)
FIX: Playlist should work again
FIX: Pagination in APIv2
FIX: settings for hiding 'Live' menu
DEL: support for Frodo

## v5.0.3 (2015-01-08)
ADD: 'Disliked Videos'
ADD: 240p, 360p and 480p
UPD: adjustment in KODION classes (maybe causing problems on MAC OS X 10.10.X + Python 2.6)
UPD: Russian (thx 2 BytEvil)
UPD: Spanish (thx 2 PatOso)
UPD: Polish (thx 2 D.K.)
FIX: German translation
FIX: some Frodo updates

## v5.0.2 (2015-01-01)
ADD: Support for shared playlists via Yatse
ADD: 'Play from here' for playlists
ADD: 'Queue Video'
FIX: German translation
FIX: Portuguese (Brazil) (thx 2 ASH_Macedo)

## v5.0.1 (2014-12-31)
ADD: 'Play all' (default, reverse, shuffle)
ADD: Italian (thx 2 peppe_sr)
ADD: Portuguese (Brazil) (thx 2 ASH_Macedo)
ADD: Hungarian (thx 2 gyeben)
ADD: Portuguese (thx 2 enen92)
ADD: Polish (thx 2 D.K.)
ADD: Russian (thx 2 BytEvil)
ADD: Spanish (thx 2 PatOso)
ADD: French (thx 2 roondar)
UPD: support for '1080XF' and 'Xperience1080'
FIX: some live streams should work
FIX: update meta data for video played via ext. url
FIX: remove video from 'Watch Later' playlist
REV: reverted to requests

## v5.0.0 (2014-12-27)
DEL: removed beta
ADD: new rating system - like/dislike/remove
ADD: show confirmation before remove a video or deleting a playlist
ADD: rename your playlists
ADD: setup default view modes (default and videos)
ADD: setup correct language and region for YouTube
ADD: support for old YouTube url calls (plugin://plugin.video.youtube/?action=play_video&videoid=[ID])
UPD: new icons
UPD: reorganized context menu
UPD: some minor tests
UPD: moved 'Watch Later' up in context menu
FIX: rename playlist
FIX: show newest videos first (uploads of channel)
FIX: show fanarts in 'Watch Later' and 'Liked Videos'

## v1.0.0~alpha29 (2014-12-14)
UPD: new login mechanism (removed the old one)
ADD: translation fr-FR (thanks to roondar)
ADD: manage playlists - create, remove and add videos to a selected playlists
FIX: support cyrillic letters

## v1.0.0~alpha28 (2014-12-07)
ADD: subscribe to channel (from videos and playlist)
UPD: rework of handling context menu
FIX: remove next page for related videos (because APIv3 is broken)

## v1.0.0~alpha27 (2014-12-01)
UPD: performance improved for auto-removing videos from 'Watch Later' list
FIX: error while navigating to the next page

## v1.0.0~alpha26 (2014-11-30)
ADD: hide all entries (except search) via settings in the root menu
ADD: missing pagination for 'My Subscriptions'
FIX: next page is working again (Watch Later)
UPD: disabled language (for now) Kodi isn't providing reliable language IDs

## v1.0.0~alpha25 (2014-11-29)
UPD: requests with language/region
UPD: new icons
ADD: Auto-Remove from 'Watch Later' list
ADD: 'Related Videos'
UPD: show channel name in the description
FIX: disable verification warnings

## v1.0.0~alpha24 (2014-11-27)
ADD: 'Browse Channels'
FIX: support for skins calling '.*/extrafanart/'

## v1.0.0~alpha23 (2014-11-26)
ADD: 'What to watch'
FIX: 'My subscriptions' switched to version APIv2.1 (Google) DAMN YOU!!!

## v1.0.0~alpha22 (2014-11-25)
ADD: sorting
FIX: crash when calling 'My subscriptions'
FIX: signature calculation

## v1.0.0~alpha21 (2014-11-24)
CHG: method for playing a video changed to a more query like uri
FIX: crash under android systems. Regular Expressions work a little different :)

## v1.0.0~alpha20 (2014-11-23)
FIX: Git merge with master

## v1.0.0~alpha19 (2014-11-23)
UPD: complete rewrite
UPD: switch to kodion

## v1.0.0~alpha18 (2014-08-31)
- ADD: Support for ETag - could improve performance
- ADD: remove item of search history
- FIX: #22 calculation of duration
- FIX: #28 display 'general' instead of 'like' in settings

## v1.0.0~alpha17 (2014-08-10)
- ADD: 'Go to CHANNEL' of a selected video
- ADD: Support for 'Subscribe' and 'Unsubscribe' of channels
- ADD: Full support for 'Like'
- ADD: Remove own playlist via context menu
- ADD: Show/Hide 'Browse Channels' via settings
- FIX: Using only thumbnails from API v3 - 'My Subscriptions' is using v2 and returning different thumbnails
- FIX: Displaying false channel in video description
- FIX: Don't update search history before showing the search result

## v1.0.0~alpha16 (2014-08-08)
- FIX: provide 'Next Page' under 'My Subscriptions' if there are more results
- ADD: Hide and show menu items via settings
- ADD: Search history (set the size via settings from 0-50 items)

## v1.0.0~alpha15 (2014-08-04)
- FIX: moved (only) for the subscribtions to V2 to see new uploaded videos

## v1.0.0~alpha14 (2014-08-03)
- ADD: 'Remove' via context menu for playlists
- ADD: 'Watch Later' via context menu to add a video to the 'Watch Later' playlist
- ADD: Automatic remove from the 'Watch Later' playlists (optional via settings - default = true)
- ADD: Support for history - after playback the video should be added to the history. Not working correct.
- ADD: Fanart for channels. Only if you select a channel directly.
- optimized some of the addon code

## v1.0.0~alpha13 (2014-08-02)
- FIX: improved token and login validation

## v1.0.0~alpha12 (2014-08-01)
- ADD: Show 'Published on' and 'Channel' in the description of a video (can be disabled via setting)
- ADD: support for 3D videos (can be disabled via setting)
- Accelerated resolving of video URLs (almost 2x as fast)

## v1.0.0~alpha11 (2014-07-30)
- FIX: added a fallback for videos that require a login (works very fast?!?!)
- FIX: if username or password is missing reset the whole token logic

## v1.0.0~alpha10 (2014-07-29)
- FIX: improved performance on decoding signatures for some videos
- ADD: support for custom-created playlists
- FIX: sort own subscriptions
- ADD: enable/disable video, channel and/or playlist search

## v1.0.0~alpha9 (2014-07-28)
- FIX: removed debug

## v1.0.0~alpha8 (2014-07-28)
- ADD: login tests

## v1.0.0~alpha7 (2014-07-27)
- FIX: added support from freemake.com to decode signatures of some videos

## v1.0.0~alpha6 (2014-07-27)
- added support of playlists of a channel (first page only)
- optimized some major routines for easier support of all youtube's content

## v1.0.0~alpha5 (2014-07-27)
- version bump for tests

## v1.0.0~alpha4 (2014-07-26)
- added runtime for each video (crazy hack)
- disabled debug

## v1.0.0~alpha3 (2014-07-26)
- little fixes regarding youtube channels

## v1.0.0~alpha2 (2014-07-26)
- added youtube channels and search
- added playback

## v1.0.0~alpha (2014-07-26)
- initial version for tests
