@@ -337,10 +337,32 @@ async fn ntf_watchlist_force(
337
337
let params: PlexContext = req. extract ( ) . await . unwrap ( ) ;
338
338
if params. clone ( ) . token . is_some ( ) {
339
339
tokio:: spawn ( async move {
340
- let url = format ! ( "https://notifications.plex.tv/api/v1/notifications/settings?X-Plex-Token={}" , params. clone( ) . token. unwrap( ) ) ;
340
+ let token = params. clone ( ) . token . unwrap ( ) ;
341
+ let client_id = params. clone ( ) . client_identifier . unwrap ( ) ;
342
+ let mut url = format ! ( "https://notifications.plex.tv/api/v1/notifications/settings?X-Plex-Token={}" , & token) ;
341
343
let json_data = r#"{"enabled": true,"libraries": [],"identifier": "tv.plex.notification.library.new"}"# ;
342
344
let client = reqwest:: Client :: new ( ) ;
343
345
346
+ println ! ( "Bootstrao for request: {} platform: {} product: {} device name: {}" ,
347
+ params. clone( ) . username. unwrap_or_default( ) ,
348
+ params. clone( ) . platform,
349
+ params. clone( ) . product. unwrap_or_default( ) ,
350
+ params. clone( ) . device_name. unwrap_or_default( )
351
+ ) ;
352
+
353
+ let client_base = "https://clients.plex.tv" ;
354
+ let user: PlexUser = client
355
+ . get ( format ! ( "{}/api/v2/user" , client_base) )
356
+ . header ( "Accept" , "application/json" )
357
+ . header ( "X-Plex-Token" , & token)
358
+ . header ( "X-Plex-Client-Identifier" , & client_id)
359
+ . send ( )
360
+ . await
361
+ . unwrap ( )
362
+ . json ( )
363
+ . await
364
+ . unwrap ( ) ;
365
+ dbg ! ( & user) ;
344
366
let response = client
345
367
. post ( url)
346
368
. header ( "Content-Type" , "application/json" )
@@ -349,14 +371,36 @@ async fn ntf_watchlist_force(
349
371
. await
350
372
. unwrap ( ) ;
351
373
352
- println ! ( "Set watchlist for user: {} platform: {} product: {} device name: {} status: {}" ,
353
- params. clone( ) . username. unwrap_or_default( ) ,
354
- params. clone( ) . platform,
355
- params. clone( ) . product. unwrap_or_default( ) ,
356
- params. clone( ) . device_name. unwrap_or_default( ) ,
374
+ println ! ( "Set watchlist status: {}" ,
357
375
& response. status( )
358
376
) ;
359
- //dbg!(params.clone())
377
+
378
+ let opts = vec ! [
379
+ "tv.plex.provider.vod" ,
380
+ "tv.plex.provider.music" ,
381
+ ] ;
382
+
383
+
384
+ ;
385
+ //let
386
+ //return;
387
+ let u = format ! ( "{}/api/v2/user/{}/settings/opt_outs" , client_base, & user. uuid) ;
388
+ for key in opts {
389
+ let response = client
390
+ . post ( format ! ( "{}?key={}&value=opt_out" , u. clone( ) , key) )
391
+ . header ( "Accept" , "application/json" )
392
+ . header ( "X-Plex-Token" , & token)
393
+ . header ( "X-Plex-Client-Identifier" , & client_id)
394
+ . send ( )
395
+ . await
396
+ . unwrap ( ) ;
397
+
398
+ println ! ( "Set opt out status: {}" ,
399
+ & response. status( )
400
+ ) ;
401
+
402
+ }
403
+
360
404
} ) ;
361
405
}
362
406
}
0 commit comments