Correctly handle case where channel doesn't exist

This commit is contained in:
James Taylor 2018-12-20 01:11:50 -08:00
parent 9d1c688310
commit a8d74ba082
3 changed files with 22 additions and 1 deletions

11
http_errors.py Normal file
View File

@ -0,0 +1,11 @@
class Error4xx(Exception):
pass
class Error404(Error4xx):
pass
class Error5xx(Exception):
pass
class Error500(Error5xx):
pass
class Error502(Error5xx):
pass

View File

@ -4,6 +4,7 @@ import gevent.socket
from gevent.pywsgi import WSGIServer
from youtube.youtube import youtube
import http_errors
import urllib
import socket
import socks
@ -114,7 +115,10 @@ def site_dispatch(env, start_response):
yield error_code('404 Not Found', start_response)
return
except http_errors.Error404 as e:
start_response('404 Not Found', ())
yield str(e).encode('utf-8')
except socket.error as e:
start_response('502 Bad Gateway', ())
print(str(e))

View File

@ -1,6 +1,7 @@
import base64
import youtube.common as common
from youtube.common import default_multi_get, URL_ORIGIN, get_thumbnail_url, video_id
import http_errors
import urllib
import json
from string import Template
@ -193,6 +194,11 @@ def channel_videos_html(polymer_json, current_page=1, current_sort=3, number_of_
for alert in response['alerts']:
result += alert['alertRenderer']['text']['simpleText'] + '\n'
return result
elif 'errors' in response['responseContext']:
for error in response['responseContext']['errors']['error']:
if error['code'] == 'INVALID_VALUE' and error['location'] == 'browse_id':
raise http_errors.Error404('This channel does not exist')
raise
else:
raise
channel_url = microformat['urlCanonical'].rstrip('/')