@@ -28,7 +28,7 @@ class Parser:
2828 """
2929
3030 @classmethod
31- def from_string (cls , manifest_as_string : str ) -> MPD :
31+ def from_string (cls , manifest_as_string : str , validate : bool = False ) -> MPD :
3232 """generate a parsed mpd object from a given string
3333
3434 Args:
@@ -57,12 +57,15 @@ def cut_and_burn(match: Match) -> str:
5757 except Exception as err :
5858 logger .exception ("Failed to parse manifest string" )
5959 raise UnknownElementTreeParseError () from err
60- if encoding :
61- return MPD (root , encoding = encoding [0 ].groups ()[0 ])
62- return MPD (root )
60+
61+ mpd = MPD (root , encoding = encoding [0 ].groups ()[0 ] if encoding else "utf-8" )
62+
63+ if validate :
64+ mpd .validate ()
65+ return mpd
6366
6467 @classmethod
65- def from_file (cls , manifest_file_name : str ) -> MPD :
68+ def from_file (cls , manifest_file_name : str , validate : bool = False ) -> MPD :
6669 """
6770 Generate a parsed mpd object from a given file name
6871 Args:
@@ -81,10 +84,14 @@ def from_file(cls, manifest_file_name: str) -> MPD:
8184 except Exception as err :
8285 logger .exception ("Failed to parse manifest file %s" , manifest_file_name )
8386 raise UnknownElementTreeParseError () from err
84- return MPD (tree .getroot ())
87+
88+ mpd = MPD (tree .getroot ())
89+ if validate :
90+ mpd .validate ()
91+ return mpd
8592
8693 @classmethod
87- def from_url (cls , url : str ) -> MPD :
94+ def from_url (cls , url : str , validate : bool = False ) -> MPD :
8895 """
8996 Generate a parsed mpd object from a given URL
9097 Args:
@@ -104,7 +111,11 @@ def from_url(cls, url: str) -> MPD:
104111 except Exception as err :
105112 logger .exception ("Failed to parse manifest from URL %s" , url )
106113 raise UnknownElementTreeParseError () from err
107- return MPD (tree .getroot ())
114+
115+ mpd = MPD (tree .getroot ())
116+ if validate :
117+ mpd .validate ()
118+ return mpd
108119
109120 @classmethod
110121 def to_string (cls , mpd : MPD ) -> str :
0 commit comments