44from xml .etree import ElementTree
55from tqdm .auto import tqdm
66import os
7+ import re
78import argparse
89
910class PlexDownloader :
@@ -16,6 +17,8 @@ class PlexDownloader:
1617 base_url = ""
1718
1819 servers = {}
20+
21+ error_reg = re .compile (r"hostname '[^']+' doesn't match '\*([^']+)'" )
1922
2023 def login (self ):
2124 #login
@@ -75,23 +78,25 @@ def _generate_baseurl(self):
7578 return url
7679 except requests .exceptions .SSLError as e :
7780 string_error = str (e )
78-
7981 if ".plex.direct" in string_error :
80- subdomain = str (e ).split ("doesn't match" )[1 ].lstrip ("'* " ).rstrip ("'\" )" )
81-
82- ip = server ['address' ].replace ('.' , '-' )
83-
84- url = "https://" + ip + subdomain + ":" + server ['port' ]
85-
86- r = requests .get (url , headers = headers )
82+ error_match = self .error_reg .search (string_error )
83+
84+ if error_match is not None :
85+
86+ subdomain = error_match .group (1 )
87+
88+ ip = server ['address' ].replace ('.' , '-' )
89+
90+ url = "https://" + ip + subdomain + ":" + server ['port' ]
91+ r = requests .get (url , headers = headers )
8792
88- if r .status_code == 200 :
89- self .base_url = url
90- print ("Found Plex.Direct URL %s" % self .base_url )
91- return url
92- else :
93- print ("Couldn't find Direct.Plex url for Plex Media Server" )
94- return False
93+ if r .status_code == 200 :
94+ self .base_url = url
95+ print ("Found Plex.Direct URL %s" % self .base_url )
96+ return url
97+
98+ print ("Couldn't find Direct.Plex url for Plex Media Server" )
99+ return False
95100 else :
96101 print ("Custom cert is enabled, don't know what to do." )
97102 return False
@@ -216,7 +221,6 @@ def download(self):
216221 print ("Found %s servers" % server_count )
217222
218223 server = self .servers [self .server_hash ]
219-
220224 print ("Looking for Plex.Direct URL to %s" % server ['name' ])
221225 self ._generate_baseurl ()
222226
0 commit comments