From 759702e0e79273b7b16904e75c744d5104d38398 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Sun, 17 Sep 2017 10:02:51 -0500 Subject: [PATCH] Update gvideo.py --- plugin.video.alfa/servers/gvideo.py | 46 +++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/plugin.video.alfa/servers/gvideo.py b/plugin.video.alfa/servers/gvideo.py index 575af8de..85a2be53 100644 --- a/plugin.video.alfa/servers/gvideo.py +++ b/plugin.video.alfa/servers/gvideo.py @@ -4,14 +4,19 @@ import urllib from core import httptools from core import scrapertools +from platformcode import logger def test_video_exists(page_url): + if 'googleusercontent' in page_url: + return True, "" response = httptools.downloadpage(page_url, cookies=False, headers={"Referer": page_url}) if "no+existe" in response.data: return False, "[gvideo] El video no existe o ha sido borrado" if "Se+ha+excedido+el" in response.data: return False, "[gvideo] Se ha excedido el nĂºmero de reproducciones permitidas" + if "No+tienes+permiso" in response.data: + return False, "[gvideo] No tiene permiso para acceder a este video" return True, "" @@ -19,22 +24,39 @@ def test_video_exists(page_url): def get_video_url(page_url, user="", password="", video_password=""): video_urls = [] urls = [] - response = httptools.downloadpage(page_url, cookies=False, headers={"Referer": page_url}) - cookies = "" - cookie = response.headers["set-cookie"].split("HttpOnly, ") - for c in cookie: - cookies += c.split(";", 1)[0] + "; " - data = response.data.decode('unicode-escape') - data = urllib.unquote_plus(urllib.unquote_plus(data)) - headers_string = "|Cookie=" + cookies - url_streams = scrapertools.find_single_match(data, 'url_encoded_fmt_stream_map=(.*)') - streams = scrapertools.find_multiple_matches(url_streams, - 'itag=(\d+)&url=(.*?)(?:;.*?quality=.*?(?:,|&)|&quality=.*?(?:,|&))') + streams =[] + logger.debug('page_url: %s'%page_url) + if 'googleusercontent' in page_url: + data = httptools.downloadpage(page_url, follow_redirects = False, headers={"Referer": page_url}) + url=data.headers['location'] + logger.debug('url: %s' % url) + logger.debug("data.headers: %s" % data.headers) + quality = scrapertools.find_single_match (url, '.itag=(\d+).') + logger.debug('quality: %s' % quality) + + streams.append((quality, url)) + logger.debug('streams: %s' % streams) + headers_string="" + + else: + response = httptools.downloadpage(page_url, cookies=False, headers={"Referer": page_url}) + cookies = "" + cookie = response.headers["set-cookie"].split("HttpOnly, ") + for c in cookie: + cookies += c.split(";", 1)[0] + "; " + data = response.data.decode('unicode-escape') + data = urllib.unquote_plus(urllib.unquote_plus(data)) + headers_string = "|Cookie=" + cookies + url_streams = scrapertools.find_single_match(data, 'url_encoded_fmt_stream_map=(.*)') + streams = scrapertools.find_multiple_matches(url_streams, + 'itag=(\d+)&url=(.*?)(?:;.*?quality=.*?(?:,|&)|&quality=.*?(?:,|&))') + itags = {'18': '360p', '22': '720p', '34': '360p', '35': '480p', '37': '1080p', '43': '360p', '59': '480p'} for itag, video_url in streams: if not video_url in urls: video_url += headers_string video_urls.append([itags[itag], video_url]) urls.append(video_url) - video_urls.sort(key=lambda video_urls: int(video_urls[0].replace("p", ""))) + video_urls.sort(key=lambda video_urls: int(video_urls[0].replace("p", ""))) + return video_urls