+class YouTubeVideoPageParser(html.parser.HTMLParser):
+ def __init__(self):
+ super().__init__()
+ self.unavailable_message = None
+ self.scripts = []
+
+ def handle_starttag(self, tag, attrs):
+ attrs = dict(attrs)
+ self._handle_unavailable_message(tag, attrs)
+ self._handle_script(tag, attrs)
+
+ def handle_endtag(self, tag):
+ self.handle_data = self._ignore_data
+
+ def _ignore_data(self, _):
+ pass
+
+ def _handle_unavailable_message(self, tag, attrs):
+ if attrs.get("id", None) == "unavailable-message":
+ self.handle_data = self._handle_unavailable_message_data
+
+ def _handle_unavailable_message_data(self, data):
+ self.unavailable_message = data.strip()
+
+ def _handle_script(self, tag, attrs):
+ if tag == "script":
+ self.handle_data = self._handle_script_data
+
+ def _handle_script_data(self, data):
+ if data:
+ self.scripts.append(data)
+