diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b96a74..2e750aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 1.4.0 +- Add ChannelId property to Video class. + ## 1.3.3 - Error handling when using `getStream` if the connection fails. If it fails more than 5 times on the same request the exception will be thrown anyways. - Caching of player source for 10 minutes. diff --git a/example/video_download.dart b/example/video_download.dart index 75ada7d..c1dab83 100644 --- a/example/video_download.dart +++ b/example/video_download.dart @@ -59,7 +59,6 @@ Future download(String id) async { // Track the file download status. var len = audio.size.totalBytes; var count = 0; - var oldProgress = -1; // Create the message and set the cursor position. var msg = 'Downloading ${video.title}.${audio.container.name}'; diff --git a/lib/src/playlists/playlist_client.dart b/lib/src/playlists/playlist_client.dart index 2af3b6e..1ee1bb1 100644 --- a/lib/src/playlists/playlist_client.dart +++ b/lib/src/playlists/playlist_client.dart @@ -49,6 +49,7 @@ class PlaylistClient { VideoId(videoId), video.title, video.author, + video.authorId, video.uploadDate, video.description, video.duration, diff --git a/lib/src/reverse_engineering/responses/playerlist_response.dart b/lib/src/reverse_engineering/responses/playlist_response.dart similarity index 95% rename from lib/src/reverse_engineering/responses/playerlist_response.dart rename to lib/src/reverse_engineering/responses/playlist_response.dart index 1d9b93e..88cda0a 100644 --- a/lib/src/reverse_engineering/responses/playerlist_response.dart +++ b/lib/src/reverse_engineering/responses/playlist_response.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import '../../channels/channel_id.dart'; import '../../exceptions/exceptions.dart'; import '../../extensions/helpers_extension.dart'; import '../../retry.dart'; @@ -64,6 +65,8 @@ class _Video { String get author => _root['author']; + ChannelId get authorId => ChannelId('UC${_root['user_id']}'); + DateTime get uploadDate => DateTime.fromMillisecondsSinceEpoch(_root['time_created'] * 1000); diff --git a/lib/src/reverse_engineering/responses/responses.dart b/lib/src/reverse_engineering/responses/responses.dart index abcad47..5576417 100644 --- a/lib/src/reverse_engineering/responses/responses.dart +++ b/lib/src/reverse_engineering/responses/responses.dart @@ -6,7 +6,7 @@ export 'dash_manifest.dart'; export 'embed_page.dart'; export 'player_response.dart'; export 'player_source.dart'; -export 'playerlist_response.dart'; +export 'playlist_response.dart'; export 'stream_info_provider.dart'; export 'video_info_response.dart'; export 'watch_page.dart'; diff --git a/lib/src/search/search_client.dart b/lib/src/search/search_client.dart index 80330d0..6ac1774 100644 --- a/lib/src/search/search_client.dart +++ b/lib/src/search/search_client.dart @@ -1,5 +1,5 @@ import '../common/common.dart'; -import '../reverse_engineering/responses/playerlist_response.dart'; +import '../reverse_engineering/responses/playlist_response.dart'; import '../reverse_engineering/youtube_http_client.dart'; import '../videos/video.dart'; import '../videos/video_id.dart'; @@ -32,6 +32,7 @@ class SearchClient { VideoId(videoId), video.title, video.author, + video.authorId, video.uploadDate, video.description, video.duration, diff --git a/lib/src/videos/video.dart b/lib/src/videos/video.dart index ae559be..0c5050b 100644 --- a/lib/src/videos/video.dart +++ b/lib/src/videos/video.dart @@ -2,6 +2,7 @@ import 'dart:collection'; import 'package:equatable/equatable.dart'; +import '../channels/channel_id.dart'; import '../common/common.dart'; import '../reverse_engineering/responses/responses.dart'; import 'video_id.dart'; @@ -20,6 +21,9 @@ class Video with EquatableMixin { /// Video author. final String author; + /// Video author Id. + final ChannelId channelId; + /// Video upload date. final DateTime uploadDate; @@ -47,6 +51,7 @@ class Video with EquatableMixin { this.id, this.title, this.author, + this.channelId, this.uploadDate, this.description, this.duration, diff --git a/lib/src/videos/video_client.dart b/lib/src/videos/video_client.dart index 14571c3..59b8cad 100644 --- a/lib/src/videos/video_client.dart +++ b/lib/src/videos/video_client.dart @@ -1,3 +1,4 @@ +import '../channels/channel_id.dart'; import '../common/common.dart'; import '../reverse_engineering/responses/responses.dart'; import '../reverse_engineering/youtube_http_client.dart'; @@ -36,6 +37,7 @@ class VideoClient { videoId, playerResponse.videoTitle, playerResponse.videoAuthor, + ChannelId(playerResponse.videoChannelId), playerResponse.videoUploadDate, playerResponse.videoDescription, playerResponse.videoDuration,