Add extra headers to video stream request (#27)
This commit is contained in:
parent
37e8bf4100
commit
8a89c4ef86
@ -333,7 +333,7 @@ def markupString(string):
|
|||||||
string = string.replace("https://youtube.com/", "")
|
string = string.replace("https://youtube.com/", "")
|
||||||
string = string.replace("https://www.youtube.com/", "")
|
string = string.replace("https://www.youtube.com/", "")
|
||||||
string = string.replace("https://twitter.com/", "/u/")
|
string = string.replace("https://twitter.com/", "/u/")
|
||||||
return string
|
return Markup(string)
|
||||||
|
|
||||||
## PROXY videos through Yotter server to the client.
|
## PROXY videos through Yotter server to the client.
|
||||||
@app.route('/stream/<url>', methods=['GET', 'POST'])
|
@app.route('/stream/<url>', methods=['GET', 'POST'])
|
||||||
@ -341,12 +341,13 @@ def markupString(string):
|
|||||||
def stream(url):
|
def stream(url):
|
||||||
#This function proxies the video stream from GoogleVideo to the client.
|
#This function proxies the video stream from GoogleVideo to the client.
|
||||||
url = url.replace('YotterSlash', '/')
|
url = url.replace('YotterSlash', '/')
|
||||||
headers = Headers()
|
headers = Headers()
|
||||||
if(url):
|
if(url):
|
||||||
req = requests.get(url, stream = True)
|
req = requests.get(url, stream = True)
|
||||||
|
headers.add('Range', request.headers['Range'])
|
||||||
headers.add('Accept-Ranges','bytes')
|
headers.add('Accept-Ranges','bytes')
|
||||||
headers.add('Content-Length', str(int(req.headers['Content-Length'])+1))
|
headers.add('Content-Length', str(int(req.headers['Content-Length'])+1))
|
||||||
response = Response(req.iter_content(chunk_size=10*1024), mimetype=req.headers['Content-Type'], content_type=req.headers['Content-Type'], direct_passthrough=True, headers=headers)
|
response = Response(req.iter_content(chunk_size=10*1024), content_range=req.headers['Content-Range'], mimetype=req.headers['Content-Type'], content_type=req.headers['Content-Type'], direct_passthrough=True, headers=headers)
|
||||||
#enable browser file caching with etags
|
#enable browser file caching with etags
|
||||||
response.cache_control.public = True
|
response.cache_control.public = True
|
||||||
response.cache_control.max_age = int(60000)
|
response.cache_control.max_age = int(60000)
|
||||||
@ -355,6 +356,15 @@ def stream(url):
|
|||||||
flash("Something went wrong loading the video... Try again.")
|
flash("Something went wrong loading the video... Try again.")
|
||||||
return redirect(url_for('youtube'))
|
return redirect(url_for('youtube'))
|
||||||
|
|
||||||
|
def download_file(streamable):
|
||||||
|
with streamable as stream:
|
||||||
|
stream.raise_for_status()
|
||||||
|
for chunk in stream.iter_content(chunk_size=8192):
|
||||||
|
yield chunk
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
#### General Logic ######
|
#### General Logic ######
|
||||||
#########################
|
#########################
|
||||||
@ -636,7 +646,7 @@ def getFeed(urls):
|
|||||||
newPost.twitterName = post.find('a', attrs={'class':'fullname'}).text
|
newPost.twitterName = post.find('a', attrs={'class':'fullname'}).text
|
||||||
newPost.timeStamp = datetime.datetime.strptime(date_time_str, '%d/%m/%Y %H:%M:%S')
|
newPost.timeStamp = datetime.datetime.strptime(date_time_str, '%d/%m/%Y %H:%M:%S')
|
||||||
newPost.date = post.find('span', attrs={'class':'tweet-date'}).find('a').text
|
newPost.date = post.find('span', attrs={'class':'tweet-date'}).find('a').text
|
||||||
newPost.content = Markup(post.find('div', attrs={'class':'tweet-content'}))
|
newPost.content = markupString(Markup(post.find('div', attrs={'class':'tweet-content'})))
|
||||||
|
|
||||||
if post.find('div', attrs={'class':'retweet-header'}):
|
if post.find('div', attrs={'class':'retweet-header'}):
|
||||||
newPost.username = post.find('div', attrs={'class':'retweet-header'}).find('div', attrs={'class':'icon-container'}).text
|
newPost.username = post.find('div', attrs={'class':'retweet-header'}).find('div', attrs={'class':'icon-container'}).text
|
||||||
|
Reference in New Issue
Block a user