Some playlist and seek fixes

This commit is contained in:
killer069
2021-12-27 12:09:08 +05:30
parent 8f805bbbdd
commit 6ff34c2baa
3 changed files with 25 additions and 19 deletions

View File

@@ -20,7 +20,7 @@ const DEFAULT_API_KEY = 'AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8';
const video_pattern =
/^((?:https?:)?\/\/)?(?:(?:www|m|music)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|shorts\/|embed\/|v\/)?)([\w\-]+)(\S+)?$/;
const playlist_pattern =
/^((?:https?:)?\/\/)?(?:(?:www|m)\.)?(youtube\.com)\/(?:(playlist|watch))(.*)?((\?|\&)list=)(PL|UU|LL|RD|OL)[a-zA-Z\d_-]{10,}(.*)?$/;
/^((?:https?:)?\/\/)?(?:(?:www|m|music)\.)?(youtube\.com)\/(?:(playlist|watch))(.*)?((\?|\&)list=)(PL|UU|LL|RD|OL)[a-zA-Z\d_-]{10,}(.*)?$/;
/**
* Validate YouTube URL or ID.
*
@@ -335,11 +335,6 @@ export async function playlist_info(url: string, options: PlaylistOptions = {}):
if (!url.startsWith('https')) url = `https://www.youtube.com/playlist?list=${url}`;
if (url.indexOf('list=') === -1) throw new Error('This is not a Playlist URL');
if (yt_validate(url) === 'playlist') {
const id = extractID(url);
url = `https://www.youtube.com/playlist?list=${id}`;
}
const body = await request(url, {
headers: {
'accept-language': options.language || 'en-US;q=0.9'
@@ -364,7 +359,7 @@ export async function playlist_info(url: string, options: PlaylistOptions = {}):
else throw new Error('While parsing playlist url\nUnknown Playlist Error');
}
if (url.indexOf('watch?v=') !== -1) {
return getWatchPlaylist(response, body);
return getWatchPlaylist(response, body, url);
} else return getNormalPlaylist(response, body);
}
/**
@@ -412,7 +407,7 @@ export function getContinuationToken(data: any): string {
.continuationEndpoint?.continuationCommand?.token;
}
function getWatchPlaylist(response: any, body: any): YouTubePlayList {
function getWatchPlaylist(response: any, body: any, url : string): YouTubePlayList {
const playlist_details = response.contents.twoColumnWatchNextResults.playlist.playlist;
const videos = getWatchPlaylistVideos(playlist_details.contents);
@@ -438,7 +433,7 @@ function getWatchPlaylist(response: any, body: any): YouTubePlayList {
title: playlist_details.title || '',
videoCount: parseInt(videoCount) || 0,
videos: videos,
url: `https://www.youtube.com/playlist?list=${playlist_details.playlistId}`,
url: url,
channel: {
id: channel?.navigationEndpoint?.browseEndpoint?.browseId || null,
name: channel?.text || null,