diff --git a/platformcode/recaptcha.py b/platformcode/recaptcha.py index 3d34b640..b2bd1f58 100644 --- a/platformcode/recaptcha.py +++ b/platformcode/recaptcha.py @@ -7,6 +7,7 @@ from core import scrapertools from platformcode import config from platformcode import platformtools +lang = 'it' class Recaptcha(xbmcgui.WindowXMLDialog): def Start(self, key, referer): @@ -14,9 +15,9 @@ class Recaptcha(xbmcgui.WindowXMLDialog): self.key = key self.headers = {'Referer': self.referer} - api_js = httptools.downloadpage("http://www.google.com/recaptcha/api.js?hl=es").data - version = scrapertools.find_single_match(api_js, 'po.src = \'(.*?)\';').split("/")[5] - self.url = "http://www.google.com/recaptcha/api/fallback?k=%s&hl=es&v=%s&t=2&ff=true" % (self.key, version) + api_js = httptools.downloadpage("http://www.google.com/recaptcha/api.js?hl=" + lang).data + version = scrapertools.find_single_match(api_js, 'po.src\s*=\s*\'(.*?)\';').split("/")[5] + self.url = "http://www.google.com/recaptcha/api/fallback?k=" + self.key + "&hl=" + lang + "&v=" + version + "&t=2&ff=true" self.doModal() # Reload if self.result == {}: @@ -27,7 +28,7 @@ class Recaptcha(xbmcgui.WindowXMLDialog): def update_window(self): data = httptools.downloadpage(self.url, headers=self.headers).data self.message = scrapertools.find_single_match(data, - '
(.*?)(?:|
)').replace( + '
(.*?)(?:|
)').replace( "", "[B]").replace("", "[/B]") self.token = scrapertools.find_single_match(data, 'name="c" value="([^"]+)"') self.image = "http://www.google.com/recaptcha/api2/payload?k=%s&c=%s" % (self.key, self.token) @@ -56,13 +57,13 @@ class Recaptcha(xbmcgui.WindowXMLDialog): self.close() elif control == 10002: - self.result = [int(k) for k in range(9) if self.result.get(k, False) == True] + self.result = [int(k) for k in range(9) if self.result.get(k, False)] post = "c=%s" % self.token for r in self.result: post += "&response=%s" % r - data = httptools.downloadpage(self.url, post, headers=self.headers).data + data = httptools.downloadpage(self.url, post=post, headers=self.headers).data self.result = scrapertools.find_single_match(data, '
.*?>([^<]+)<') if self.result: platformtools.dialog_notification("Captcha Correcto", "La verificación ha concluido") diff --git a/resources/language/English/strings.po b/resources/language/English/strings.po index 5afba248..f817700b 100644 --- a/resources/language/English/strings.po +++ b/resources/language/English/strings.po @@ -5880,4 +5880,12 @@ msgstr "" msgctxt "#707432" msgid "Disabled" +msgstr "" + +msgctxt "#707433" +msgid "Delete" +msgstr "" + +msgctxt "#707434" +msgid "reCaptcha verification failed" msgstr "" \ No newline at end of file diff --git a/resources/language/Italian/strings.po b/resources/language/Italian/strings.po index 7aa2497c..3eed066d 100644 --- a/resources/language/Italian/strings.po +++ b/resources/language/Italian/strings.po @@ -5884,4 +5884,12 @@ msgstr "Attivato" msgctxt "#707432" msgid "Disabed" -msgstr "Disattivato" \ No newline at end of file +msgstr "Disattivato" + +msgctxt "#707433" +msgid "Delete" +msgstr "Cancella" + +msgctxt "#707434" +msgid "reCaptcha verification failed" +msgstr "Verifica reCaptcha fallita" \ No newline at end of file diff --git a/resources/skins/Default/720p/Recaptcha.xml b/resources/skins/Default/720p/Recaptcha.xml index 0d824514..403dfe6f 100644 --- a/resources/skins/Default/720p/Recaptcha.xml +++ b/resources/skins/Default/720p/Recaptcha.xml @@ -32,7 +32,7 @@ Controls/KeyboardKeyNF.png center center - + 10013 10003 10013 @@ -48,7 +48,7 @@ Controls/KeyboardKeyNF.png center center - + 10002 10004 10002 @@ -64,7 +64,7 @@ Controls/KeyboardKeyNF.png center center - + 10003 10005 10003 diff --git a/servers/wstream.py b/servers/wstream.py index 37de2ad0..0f90e741 100644 --- a/servers/wstream.py +++ b/servers/wstream.py @@ -9,7 +9,7 @@ except ImportError: import urllib from core import httptools, scrapertools -from platformcode import logger, config +from platformcode import logger, config, platformtools headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0']] @@ -24,26 +24,30 @@ def test_video_exists(page_url): resp = httptools.downloadpage(page_url) global data data = resp.data - page_url = resp.url - if '/streaming.php' in page_url in page_url: - code = httptools.downloadpage(page_url, headers=headers, follow_redirects=False).headers['location'].split('/')[-1].replace('.html','') - logger.info('WCODE='+code) - page_url = 'https://wstream.video/video.php?file_code=' + code - data = httptools.downloadpage(page_url, headers=headers, follow_redirects=True).data + captcha = platformtools.show_recaptcha(scrapertools.find_single_match(data, 'data-sitekey="([^"]+)'), page_url) + if captcha: + page_url = resp.url + if '/streaming.php' in page_url in page_url: + code = httptools.downloadpage(page_url, headers=headers, follow_redirects=False).headers['location'].split('/')[-1].replace('.html','') + logger.info('WCODE='+code) + page_url = 'https://wstream.video/video.php?file_code=' + code + data = httptools.downloadpage(page_url, headers=headers, follow_redirects=True).data - possibleParam = scrapertools.find_multiple_matches(data, r"""|>)""") - if possibleParam: - post = urllib.urlencode({param[0]: param[1] for param in possibleParam if param[0]}) - if post: - data = httptools.downloadpage(page_url, headers=headers, post=post, follow_redirects=True).data + possibleParam = scrapertools.find_multiple_matches(data, r"""|>)""") + if possibleParam: + post = urllib.urlencode({param[0]: param[1] for param in possibleParam if param[0]}) + if post: + data = httptools.downloadpage(page_url, headers=headers, post=post, follow_redirects=True).data + else: + int_bckup_method() else: int_bckup_method() - else: - int_bckup_method() - if "Not Found" in data or "File was deleted" in data: - return False, config.get_localized_string(70449) % 'Wstream' - return True, "" + if "Not Found" in data or "File was deleted" in data: + return False, config.get_localized_string(70449) % 'Wstream' + return True, "" + else: + return False, config.get_localized_string(707434) # Returns an array of possible video url's from the page_url