From 4815d35c191e7d375b94492a6486dd2ba43a8954 Mon Sep 17 00:00:00 2001
From: bashonly <88596187+bashonly@users.noreply.github.com>
Date: Sun, 4 Jun 2023 08:49:10 -0500
Subject: [PATCH] [extractor/sonyliv] Fix login with token (#7223)

Authored by: bashonly
---
 yt_dlp/extractor/sonyliv.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/yt_dlp/extractor/sonyliv.py b/yt_dlp/extractor/sonyliv.py
index aaad420f1..5ebe20df7 100644
--- a/yt_dlp/extractor/sonyliv.py
+++ b/yt_dlp/extractor/sonyliv.py
@@ -10,6 +10,8 @@ from ..compat import compat_HTTPError
 from ..utils import (
     ExtractorError,
     int_or_none,
+    jwt_decode_hs256,
+    try_call,
     try_get,
 )
 
@@ -77,8 +79,10 @@ class SonyLIVIE(InfoExtractor):
         self._HEADERS['device_id'] = self._get_device_id()
         self._HEADERS['content-type'] = 'application/json'
 
-        if username.lower() == 'token' and len(password) > 1198:
+        if username.lower() == 'token' and try_call(lambda: jwt_decode_hs256(password)):
             self._HEADERS['authorization'] = password
+            self.report_login()
+            return
         elif len(username) != 10 or not username.isdigit():
             raise ExtractorError(f'Invalid username/password; {self._LOGIN_HINT}')