1
0
mirror of https://git.sr.ht/~cadence/NewLeaf synced 2024-11-22 07:37:29 +00:00

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): def extract_captions_from_api(id):
url = "https://video.google.com/timedtext?hl=en&type=list&v=%s" % id url = "https://video.google.com/timedtext?hl=en&type=list&v=%s" % id
with requests.get(url) as r: with requests.get(url) as r:
if r.status_code == 404:
return {
"error": "Video unavailable",
"identifier": "NOT_FOUND"
}
r.raise_for_status() r.raise_for_status()
transcript = ET.fromstring(r.content.decode("utf8")) transcript = ET.fromstring(r.content.decode("utf8"))

View File

@ -95,6 +95,7 @@ class Second(object):
@cherrypy.expose @cherrypy.expose
def captions(self, id, **kwargs): def captions(self, id, **kwargs):
try:
result = extract_captions(id, **kwargs) result = extract_captions(id, **kwargs)
if type(result) is dict: if type(result) is dict:
cherrypy.response.headers["content-type"] = "application/json" cherrypy.response.headers["content-type"] = "application/json"
@ -103,6 +104,13 @@ class Second(object):
cherrypy.response.headers["content-type"] = "text/vtt; charset=UTF-8" cherrypy.response.headers["content-type"] = "text/vtt; charset=UTF-8"
return result 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 @cherrypy.expose
def vi(self, id, file): def vi(self, id, file):