Compare commits

...

2 Commits

Author SHA1 Message Date
LuanRT
6b1d5f0655 chore: v5.0.2 release 2023-04-30 20:25:31 +00:00
LuanRT
2d1972bee0 chore: v5.0.1 release 2023-04-30 03:52:53 +00:00
4 changed files with 9 additions and 13 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "youtubei.js",
"version": "5.0.0",
"version": "5.0.2",
"description": "A wrapper around YouTube's private API. Supports YouTube, YouTube Music, YouTube Kids and YouTube Studio (WIP).",
"type": "module",
"types": "./dist/src/platform/lib.d.ts",

View File

@@ -7,8 +7,8 @@ import Proto from '../proto/index.ts';
import type { ICache } from '../types/Cache.ts';
import type { FetchFunction } from '../types/PlatformShim.ts';
import HTTPClient from '../utils/HTTPClient.ts';
import type { DeviceCategory} from '../utils/Utils.ts';
import { getRandomUserAgent, InnertubeError, Platform, SessionError } from '../utils/Utils.ts';
import type { DeviceCategory } from '../utils/Utils.ts';
import { generateRandomString, getRandomUserAgent, InnertubeError, Platform, SessionError } from '../utils/Utils.ts';
import type { Credentials, OAuthAuthErrorEventHandler, OAuthAuthEventHandler, OAuthAuthPendingEventHandler } from './OAuth.ts';
import OAuth from './OAuth.ts';
@@ -236,7 +236,7 @@ export default class Session extends EventEmitterLike {
}, fetch: FetchFunction = Platform.shim.fetch): Promise<SessionData> {
const url = new URL('/sw.js_data', Constants.URLS.YT_BASE);
let visitor_id = Constants.CLIENTS.WEB.STATIC_VISITOR_ID;
let visitor_id = generateRandomString(11);
if (options.visitor_data) {
const decoded_visitor_data = Proto.decodeVisitorData(options.visitor_data);
@@ -308,7 +308,7 @@ export default class Session extends EventEmitterLike {
enable_safety_mode: boolean;
visitor_data: string;
}): SessionData {
let visitor_id = Constants.CLIENTS.WEB.STATIC_VISITOR_ID;
let visitor_id = generateRandomString(11);
if (options.visitor_data) {
const decoded_visitor_data = Proto.decodeVisitorData(options.visitor_data);

View File

@@ -8,11 +8,6 @@ export const PATH = '/player';
* @returns The payload.
*/
export function build(opts: PlayerEndpointOptions): IPlayerRequest {
const is_android =
opts.client === 'ANDROID' ||
opts.client === 'YTMUSIC_ANDROID' ||
opts.client === 'YTSTUDIO_ANDROID';
return {
playbackContext: {
contentPlaybackContext: {
@@ -39,8 +34,8 @@ export function build(opts: PlayerEndpointOptions): IPlayerRequest {
...{
client: opts.client,
playlistId: opts.playlist_id,
// Workaround streaming URLs returning 403 when using Android clients.
params: is_android ? '8AEB' : opts.params
// Workaround streaming URLs returning 403 when using Android clients and throttling in web clients.
params: '8AEB'
}
};
}

View File

@@ -83,7 +83,8 @@ class VideoInfo extends MediaInfo {
is_family_safe: info.microformat?.is_family_safe,
category: info.microformat?.is(PlayerMicroformat) ? info.microformat?.category : null,
has_ypc_metadata: info.microformat?.is(PlayerMicroformat) ? info.microformat?.has_ypc_metadata : null,
start_timestamp: info.microformat?.is(PlayerMicroformat) ? info.microformat.start_timestamp : null
start_timestamp: info.microformat?.is(PlayerMicroformat) ? info.microformat.start_timestamp : null,
view_count: info.microformat?.is(PlayerMicroformat) && isNaN(info.video_details?.view_count as number) ? info.microformat.view_count : info.video_details?.view_count
},
like_count: undefined as number | undefined,
is_liked: undefined as boolean | undefined,