Captions: Error checking

This commit is contained in:
Cadence Ember 2021-01-20 17:35:24 +13:00
parent 8e69928756
commit c837828a22
No known key found for this signature in database
GPG Key ID: BC1C2C61CF521B17
2 changed files with 22 additions and 8 deletions

View File

@ -29,6 +29,12 @@ def extract_captions_from_video(id):
def extract_captions_from_api(id):
url = "https://video.google.com/timedtext?hl=en&type=list&v=%s" % id
with requests.get(url) as r:
if r.status_code == 404:
return {
"error": "Video unavailable",
"identifier": "NOT_FOUND"
}
r.raise_for_status()
transcript = ET.fromstring(r.content.decode("utf8"))

View File

@ -92,17 +92,25 @@ class Second(object):
@cherrypy.tools.json_out()
def suggestions(self, *, q, **kwargs):
return extract_search_suggestions(q)
@cherrypy.expose
def captions(self, id, **kwargs):
result = extract_captions(id, **kwargs)
if type(result) is dict:
cherrypy.response.headers["content-type"] = "application/json"
return bytes(json.dumps(result), "utf8")
else:
cherrypy.response.headers["content-type"] = "text/vtt; charset=UTF-8"
return result
try:
result = extract_captions(id, **kwargs)
if type(result) is dict:
cherrypy.response.headers["content-type"] = "application/json"
return bytes(json.dumps(result), "utf8")
else:
cherrypy.response.headers["content-type"] = "text/vtt; charset=UTF-8"
return result
except StopIteration:
cherrypy.response.status = "400"
cherrypy.response.headers["content-type"] = "application/json"
return bytes(json.dumps({
"error": "No captions matching that language or label",
"identifier": "NO_MATCHING_CAPTIONS"
}), "utf8")
@cherrypy.expose
def vi(self, id, file):