forked from DRMTalks/devine
Re-raise errors when loading WVD files so it's more understandable
It also looks for the "expected 2 but parsed 1" error which is likely an error while parsing the WVD version field. If this happens, it will inform the user to use `pywidevine migrate`.
This commit is contained in:
parent
a24633fe61
commit
6a9598021d
|
@ -24,6 +24,7 @@ import click
|
||||||
import jsonpickle
|
import jsonpickle
|
||||||
import pycaption
|
import pycaption
|
||||||
import yaml
|
import yaml
|
||||||
|
from construct import ConstError
|
||||||
from pymediainfo import MediaInfo
|
from pymediainfo import MediaInfo
|
||||||
from pywidevine.cdm import Cdm as WidevineCdm
|
from pywidevine.cdm import Cdm as WidevineCdm
|
||||||
from pywidevine.device import Device
|
from pywidevine.device import Device
|
||||||
|
@ -1023,5 +1024,14 @@ class dl:
|
||||||
cdm_path = config.directories.wvds / f"{cdm_name}.wvd"
|
cdm_path = config.directories.wvds / f"{cdm_name}.wvd"
|
||||||
if not cdm_path.is_file():
|
if not cdm_path.is_file():
|
||||||
raise ValueError(f"{cdm_name} does not exist or is not a file")
|
raise ValueError(f"{cdm_name} does not exist or is not a file")
|
||||||
|
|
||||||
|
try:
|
||||||
device = Device.load(cdm_path)
|
device = Device.load(cdm_path)
|
||||||
|
except ConstError as e:
|
||||||
|
if "expected 2 but parsed 1" in str(e):
|
||||||
|
raise ValueError(
|
||||||
|
f"{cdm_name}.wvd seems to be a v1 WVD file, use `pywidevine migrate --help` to migrate it to v2."
|
||||||
|
)
|
||||||
|
raise ValueError(f"{cdm_name}.wvd is an invalid or corrupt Widevine Device file, {e}")
|
||||||
|
|
||||||
return WidevineCdm.from_device(device)
|
return WidevineCdm.from_device(device)
|
||||||
|
|
Loading…
Reference in New Issue