@ -24,6 +24,7 @@ from guessit import guessit
logger = logging . getLogger ( __name__ )
SHOW_EXPIRATION_TIME = datetime . timedelta ( weeks = 1 ) . total_seconds ( )
TOKEN_EXPIRATION_TIME = datetime . timedelta ( hours = 12 ) . total_seconds ( )
def fix_tv_naming ( title ) :
@ -143,16 +144,13 @@ class OpenSubtitlesComProvider(ProviderRetryMixin, Provider):
self . use_hash = use_hash
def initialize ( self ) :
self . login ( )
self . token = region . get ( " oscom_token " )
if self . token :
self . session . headers . update ( { ' Authorization ' : ' Beaker ' + self . token } )
return True
else :
self . login ( )
def terminate ( self ) :
self . session . close ( )
@region.cache_on_arguments ( expiration_time = TOKEN_EXPIRATION_TIME )
def login ( self ) :
try :
r = self . session . post ( self . server_url + ' login ' ,
@ -168,7 +166,6 @@ class OpenSubtitlesComProvider(ProviderRetryMixin, Provider):
except ValueError :
raise ProviderError ( ' Invalid JSON returned by provider ' )
else :
self . session . headers . update ( { ' Authorization ' : ' Beaker ' + self . token } )
region . set ( " oscom_token " , self . token )
return True
elif r . status_code == 401 :
@ -324,7 +321,8 @@ class OpenSubtitlesComProvider(ProviderRetryMixin, Provider):
def download_subtitle ( self , subtitle ) :
logger . info ( ' Downloading subtitle %r ' , subtitle )
headers = { ' Accept ' : ' application/json ' , ' Content-Type ' : ' application/json ' }
headers = { ' Accept ' : ' application/json ' , ' Content-Type ' : ' application/json ' ,
' Authorization ' : ' Beaker ' + self . token }
res = self . session . post ( self . server_url + ' download ' ,
json = { ' file_id ' : subtitle . file_id , ' sub_format ' : ' srt ' } ,
headers = headers ,