Add ChannelId property to Video class
This commit is contained in:
parent
eb139901e8
commit
1e0cd15782
|
@ -1,3 +1,6 @@
|
||||||
|
## 1.4.0
|
||||||
|
- Add ChannelId property to Video class.
|
||||||
|
|
||||||
## 1.3.3
|
## 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.
|
- 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.
|
- Caching of player source for 10 minutes.
|
||||||
|
|
|
@ -59,7 +59,6 @@ Future<void> download(String id) async {
|
||||||
// Track the file download status.
|
// Track the file download status.
|
||||||
var len = audio.size.totalBytes;
|
var len = audio.size.totalBytes;
|
||||||
var count = 0;
|
var count = 0;
|
||||||
var oldProgress = -1;
|
|
||||||
|
|
||||||
// Create the message and set the cursor position.
|
// Create the message and set the cursor position.
|
||||||
var msg = 'Downloading ${video.title}.${audio.container.name}';
|
var msg = 'Downloading ${video.title}.${audio.container.name}';
|
||||||
|
|
|
@ -49,6 +49,7 @@ class PlaylistClient {
|
||||||
VideoId(videoId),
|
VideoId(videoId),
|
||||||
video.title,
|
video.title,
|
||||||
video.author,
|
video.author,
|
||||||
|
video.authorId,
|
||||||
video.uploadDate,
|
video.uploadDate,
|
||||||
video.description,
|
video.description,
|
||||||
video.duration,
|
video.duration,
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import '../../channels/channel_id.dart';
|
||||||
import '../../exceptions/exceptions.dart';
|
import '../../exceptions/exceptions.dart';
|
||||||
import '../../extensions/helpers_extension.dart';
|
import '../../extensions/helpers_extension.dart';
|
||||||
import '../../retry.dart';
|
import '../../retry.dart';
|
||||||
|
@ -64,6 +65,8 @@ class _Video {
|
||||||
|
|
||||||
String get author => _root['author'];
|
String get author => _root['author'];
|
||||||
|
|
||||||
|
ChannelId get authorId => ChannelId('UC${_root['user_id']}');
|
||||||
|
|
||||||
DateTime get uploadDate =>
|
DateTime get uploadDate =>
|
||||||
DateTime.fromMillisecondsSinceEpoch(_root['time_created'] * 1000);
|
DateTime.fromMillisecondsSinceEpoch(_root['time_created'] * 1000);
|
||||||
|
|
|
@ -6,7 +6,7 @@ export 'dash_manifest.dart';
|
||||||
export 'embed_page.dart';
|
export 'embed_page.dart';
|
||||||
export 'player_response.dart';
|
export 'player_response.dart';
|
||||||
export 'player_source.dart';
|
export 'player_source.dart';
|
||||||
export 'playerlist_response.dart';
|
export 'playlist_response.dart';
|
||||||
export 'stream_info_provider.dart';
|
export 'stream_info_provider.dart';
|
||||||
export 'video_info_response.dart';
|
export 'video_info_response.dart';
|
||||||
export 'watch_page.dart';
|
export 'watch_page.dart';
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import '../common/common.dart';
|
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 '../reverse_engineering/youtube_http_client.dart';
|
||||||
import '../videos/video.dart';
|
import '../videos/video.dart';
|
||||||
import '../videos/video_id.dart';
|
import '../videos/video_id.dart';
|
||||||
|
@ -32,6 +32,7 @@ class SearchClient {
|
||||||
VideoId(videoId),
|
VideoId(videoId),
|
||||||
video.title,
|
video.title,
|
||||||
video.author,
|
video.author,
|
||||||
|
video.authorId,
|
||||||
video.uploadDate,
|
video.uploadDate,
|
||||||
video.description,
|
video.description,
|
||||||
video.duration,
|
video.duration,
|
||||||
|
|
|
@ -2,6 +2,7 @@ import 'dart:collection';
|
||||||
|
|
||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
import '../channels/channel_id.dart';
|
||||||
import '../common/common.dart';
|
import '../common/common.dart';
|
||||||
import '../reverse_engineering/responses/responses.dart';
|
import '../reverse_engineering/responses/responses.dart';
|
||||||
import 'video_id.dart';
|
import 'video_id.dart';
|
||||||
|
@ -20,6 +21,9 @@ class Video with EquatableMixin {
|
||||||
/// Video author.
|
/// Video author.
|
||||||
final String author;
|
final String author;
|
||||||
|
|
||||||
|
/// Video author Id.
|
||||||
|
final ChannelId channelId;
|
||||||
|
|
||||||
/// Video upload date.
|
/// Video upload date.
|
||||||
final DateTime uploadDate;
|
final DateTime uploadDate;
|
||||||
|
|
||||||
|
@ -47,6 +51,7 @@ class Video with EquatableMixin {
|
||||||
this.id,
|
this.id,
|
||||||
this.title,
|
this.title,
|
||||||
this.author,
|
this.author,
|
||||||
|
this.channelId,
|
||||||
this.uploadDate,
|
this.uploadDate,
|
||||||
this.description,
|
this.description,
|
||||||
this.duration,
|
this.duration,
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import '../channels/channel_id.dart';
|
||||||
import '../common/common.dart';
|
import '../common/common.dart';
|
||||||
import '../reverse_engineering/responses/responses.dart';
|
import '../reverse_engineering/responses/responses.dart';
|
||||||
import '../reverse_engineering/youtube_http_client.dart';
|
import '../reverse_engineering/youtube_http_client.dart';
|
||||||
|
@ -36,6 +37,7 @@ class VideoClient {
|
||||||
videoId,
|
videoId,
|
||||||
playerResponse.videoTitle,
|
playerResponse.videoTitle,
|
||||||
playerResponse.videoAuthor,
|
playerResponse.videoAuthor,
|
||||||
|
ChannelId(playerResponse.videoChannelId),
|
||||||
playerResponse.videoUploadDate,
|
playerResponse.videoUploadDate,
|
||||||
playerResponse.videoDescription,
|
playerResponse.videoDescription,
|
||||||
playerResponse.videoDuration,
|
playerResponse.videoDuration,
|
||||||
|
|
Loading…
Reference in New Issue