@@ -50,7 +50,7 @@ async function createInnertube({ withPlayer = false, location = undefined, safet
50
50
// This setting is enabled by default and results in YouTube.js reusing the same session across different Innertube instances.
51
51
// That behavior is highly undesirable for FreeTube, as we want to create a new session every time to limit tracking.
52
52
enable_session_cache : false ,
53
- retrieve_innertube_config : false ,
53
+ retrieve_innertube_config : ! generateSessionLocally ,
54
54
user_agent : navigator . userAgent ,
55
55
56
56
retrieve_player : ! ! withPlayer ,
@@ -213,7 +213,6 @@ export async function getLocalVideoInfo(id) {
213
213
JSON . stringify ( webInnertube . session . context )
214
214
) )
215
215
216
- webInnertube . session . po_token = contentPoToken
217
216
webInnertube . session . player . po_token = sessionPoToken
218
217
} catch ( error ) {
219
218
console . error ( 'Local API, poToken generation failed' , error )
@@ -223,10 +222,10 @@ export async function getLocalVideoInfo(id) {
223
222
224
223
let clientName = webInnertube . session . context . client . clientName
225
224
226
- const info = await webInnertube . getInfo ( id )
225
+ const info = await webInnertube . getInfo ( id , { po_token : contentPoToken } )
227
226
228
227
// temporary workaround for SABR-only responses
229
- const mwebInfo = await webInnertube . getBasicInfo ( id , 'MWEB' )
228
+ const mwebInfo = await webInnertube . getBasicInfo ( id , { client : 'MWEB' , po_token : contentPoToken } )
230
229
231
230
if ( mwebInfo . playability_status . status === 'OK' && mwebInfo . streaming_data ) {
232
231
info . playability_status = mwebInfo . playability_status
@@ -246,16 +245,12 @@ export async function getLocalVideoInfo(id) {
246
245
const webEmbeddedInnertube = await createInnertube ( { clientType : ClientType . WEB_EMBEDDED } )
247
246
webEmbeddedInnertube . session . context . client . visitorData = webInnertube . session . context . client . visitorData
248
247
249
- if ( contentPoToken ) {
250
- webEmbeddedInnertube . session . po_token = contentPoToken
251
- }
252
-
253
248
const videoId = hasTrailer && trailerIsAgeRestricted ? info . playability_status . error_screen . video_id : id
254
249
255
250
// getBasicInfo needs the signature timestamp (sts) from inside the player
256
251
webEmbeddedInnertube . session . player = webInnertube . session . player
257
252
258
- const bypassedInfo = await webEmbeddedInnertube . getBasicInfo ( videoId , 'WEB_EMBEDDED' )
253
+ const bypassedInfo = await webEmbeddedInnertube . getBasicInfo ( videoId , { client : 'WEB_EMBEDDED' , po_token : contentPoToken } )
259
254
260
255
if ( bypassedInfo . playability_status . status === 'OK' && bypassedInfo . streaming_data ) {
261
256
info . playability_status = bypassedInfo . playability_status
@@ -1284,7 +1279,7 @@ function parseLockupView(lockupView, channelId = undefined, channelName = undefi
1284
1279
1285
1280
let viewCount = null
1286
1281
1287
- const viewsText = lockupView . metadata . metadata ?. metadata_rows [ 1 ] . metadata_parts ?. [ 0 ] . text ?. text
1282
+ const viewsText = lockupView . metadata . metadata ?. metadata_rows [ 1 ] ? .metadata_parts ?. [ 0 ] . text ?. text
1288
1283
1289
1284
if ( viewsText ) {
1290
1285
const views = parseLocalSubscriberCount ( viewsText )
0 commit comments