Netflix changes, add delay for subs
This commit is contained in:
parent
fca2266d33
commit
46fb3e7adf
@ -505,6 +505,8 @@ def result(ctx, service, quality, closest_resolution, range_, wanted, alang, sla
|
||||
|
||||
if service:
|
||||
save_cookies(service_name, service, ctx.obj.profile)
|
||||
if isinstance(track, TextTrack):
|
||||
time.sleep(5) # Sleep 5 seconds before downloading each subtitle track to avoid 403 errors
|
||||
track.download(directories.temp, headers=service.session.headers, proxy=proxy)
|
||||
log.info(" + Downloaded")
|
||||
if isinstance(track, VideoTrack) and track.needs_ccextractor_first and not no_subs:
|
||||
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -18,7 +18,6 @@ from vinetrimmer.utils.MSL import MSL
|
||||
from vinetrimmer.utils.MSL.schemes import KeyExchangeSchemes, EntityAuthenticationSchemes
|
||||
from vinetrimmer.utils.MSL.schemes.UserAuthentication import UserAuthentication
|
||||
from vinetrimmer.utils.gen_esn import chrome_esn_generator, android_esn_generator, playready_esn_generator
|
||||
from vinetrimmer.utils.widevine.device import LocalDevice, RemoteDevice
|
||||
from vinetrimmer.vendor.pymp4.parser import Box
|
||||
from vinetrimmer.utils.gen_esn import chrome_esn_generator
|
||||
|
||||
@ -185,7 +184,7 @@ class Netflix(BaseService):
|
||||
is_android_l3 = False
|
||||
try:
|
||||
if hasattr(self.cdm, 'device') and hasattr(self.cdm.device, 'security_level') and hasattr(self.cdm.device, 'type'):
|
||||
is_android_l3 = (self.cdm.device.security_level == 3 and self.cdm.device.type == LocalDevice.Types.ANDROID)
|
||||
is_android_l3 = (self.cdm.device.security_level == 3 and self.cdm.device.type == DeviceTypes.ANDROID)
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
|
||||
@ -26,7 +26,6 @@ from vinetrimmer.utils.MSL.schemes import KeyExchangeSchemes
|
||||
from vinetrimmer.utils.MSL.schemes.EntityAuthentication import EntityAuthentication
|
||||
from vinetrimmer.utils.MSL.schemes.PlayReadyKeyExchangeScheme import PlayReady as PlayReadyScheme
|
||||
from vinetrimmer.utils.MSL.schemes.KeyExchangeRequest import KeyExchangeRequest
|
||||
from vinetrimmer.utils.widevine.device import RemoteDevice
|
||||
from vinetrimmer.utils.gen_esn import chrome_esn_generator, android_esn_generator, playready_esn_generator
|
||||
from requests.adapters import HTTPAdapter
|
||||
from requests.packages.urllib3.poolmanager import PoolManager
|
||||
@ -194,6 +193,7 @@ class MSL:
|
||||
|
||||
key_data = key_response_data["keydata"]
|
||||
if scheme == KeyExchangeSchemes.Widevine:
|
||||
from vinetrimmer.utils.widevine.device import RemoteDevice
|
||||
if isinstance(cdm.device, RemoteDevice):
|
||||
msl_keys.encryption, msl_keys.sign = cdm.device.exchange(
|
||||
cdm.sessions[msl_keys.cdm_session],
|
||||
|
||||
@ -52,4 +52,94 @@ def edge_esn_generator():
|
||||
with open(esn_file, 'r') as f:
|
||||
esn = f.read()
|
||||
|
||||
return esn
|
||||
return esn
|
||||
|
||||
|
||||
def playready_esn_generator():
|
||||
# Lista di modelli di TV e dispositivi PlayReady
|
||||
tv_models = [
|
||||
"HE55A7000EUWTS", # Hisense
|
||||
"KD55X85J", # Sony
|
||||
"UN55TU7000", # Samsung
|
||||
"OLED55C1", # LG
|
||||
"55PUS7805", # Philips
|
||||
"55R635", # TCL
|
||||
"L55M5-Z2", # Xiaomi
|
||||
]
|
||||
|
||||
# Lista di produttori
|
||||
manufacturers = [
|
||||
"HISENSE",
|
||||
"SONY",
|
||||
"SAMSUNG",
|
||||
"LG",
|
||||
"PHILIPS",
|
||||
"TCL",
|
||||
"XIAOMI"
|
||||
]
|
||||
|
||||
# Scegli un produttore e un modello casualmente
|
||||
manufacturer = random.choice(manufacturers)
|
||||
model = random.choice(tv_models)
|
||||
|
||||
esn_file = '.esn_playready'
|
||||
|
||||
def gen_file():
|
||||
# Crea un ESN nel formato NFANDROID1-PRN-[MANUFACTURER]-[MODEL]
|
||||
esn = f"NFANDROID1-PRN-{manufacturer}-{model}"
|
||||
with open(esn_file, 'w') as file:
|
||||
file.write(esn)
|
||||
|
||||
if not os.path.isfile(esn_file):
|
||||
log.warning("Generating a new PlayReady ESN")
|
||||
gen_file()
|
||||
|
||||
file_datetime = datetime.fromtimestamp(os.path.getmtime(esn_file))
|
||||
time_diff = datetime.now() - file_datetime
|
||||
if time_diff > timedelta(hours=6):
|
||||
log.warning("Old ESN detected, Generating a new PlayReady ESN")
|
||||
gen_file()
|
||||
|
||||
with open(esn_file, 'r') as f:
|
||||
esn = f.read()
|
||||
|
||||
return esn
|
||||
|
||||
def android_esn_generator():
|
||||
# Parametri per dispositivi Android
|
||||
manufacturers = ["SAMSUNG", "ONEPLUS", "XIAOMI", "MOTOROLA", "GOOGLE", "NVIDIA"]
|
||||
models = [
|
||||
"SM-T865", "SM-G975F", "SM-N975F", # Samsung
|
||||
"IN2020", "KB2000", "LE2100", # OnePlus
|
||||
"M2007J3SG", "M2004J19C", "M2102J20SG", # Xiaomi
|
||||
"Pixel 5", "Pixel 6 Pro", "Pixel 7", # Google
|
||||
"SHIELD Android TV", "SHIELD Pro" # NVIDIA
|
||||
]
|
||||
|
||||
# Genera una stringa casuale alfanumerica per l'ID del dispositivo
|
||||
device_id = "".join(random.choice("0123456789ABCDEF") for _ in range(16))
|
||||
|
||||
esn_file = '.esn_android'
|
||||
|
||||
def gen_file():
|
||||
manufacturer = random.choice(manufacturers)
|
||||
model = random.choice(models)
|
||||
# Formato ESN per Android: NFANDROID1-PRV-[build info]-[device ID]-[model]
|
||||
esn = f"NFANDROID1-PRV-{manufacturer[:4]}{random.randint(1000,9999)}-{device_id}-{model}"
|
||||
with open(esn_file, 'w') as file:
|
||||
file.write(esn)
|
||||
|
||||
if not os.path.isfile(esn_file):
|
||||
log.warning("Generating a new Android ESN")
|
||||
gen_file()
|
||||
|
||||
file_datetime = datetime.fromtimestamp(os.path.getmtime(esn_file))
|
||||
time_diff = datetime.now() - file_datetime
|
||||
if time_diff > timedelta(hours=6):
|
||||
log.warning("Old ESN detected, Generating a new Android ESN")
|
||||
gen_file()
|
||||
|
||||
with open(esn_file, 'r') as f:
|
||||
esn = f.read()
|
||||
|
||||
return esn
|
||||
|
||||
Loading…
Reference in New Issue
Block a user