From c80a397d408fc7bff224b66278f969de0582748b Mon Sep 17 00:00:00 2001 From: dentaku65 Date: Fri, 18 Oct 2019 20:28:44 +0200 Subject: [PATCH] addedd vcstream server (#116) --- servers/vcstream.json | 46 ++++++++++++++++++++++++++++++++ servers/vcstream.py | 61 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 servers/vcstream.json create mode 100644 servers/vcstream.py diff --git a/servers/vcstream.json b/servers/vcstream.json new file mode 100644 index 00000000..3d51bc1a --- /dev/null +++ b/servers/vcstream.json @@ -0,0 +1,46 @@ +{ + "active": true, + "find_videos": { + "ignore_urls": [], + "patterns": [ + { + "pattern": "vcstream.to/(?:embed|f)/([A-z0-9]+)/([A-z0-9.]+)", + "url": "https://vcstream.to/embed/\\1/\\2" + }, + { + "pattern": "https://vidcloud.co/v/([a-z0-9A-Z]+)", + "url": "https:\/\/vidcloud.co\/v\/\\1" + } + ] + }, + "free": true, + "id": "vcstream", + "name": "vcstream", + "settings": [ + { + "default": false, + "enabled": true, + "id": "black_list", + "label": "@60654", + "type": "bool", + "visible": true + }, + { + "default": 0, + "enabled": true, + "id": "favorites_servers_list", + "label": "@60655", + "lvalues": [ + "No", + "1", + "2", + "3", + "4", + "5" + ], + "type": "list", + "visible": false + } + ], + "thumbnail": "http://i.imgur.com/l45Tk0G.png" +} diff --git a/servers/vcstream.py b/servers/vcstream.py new file mode 100644 index 00000000..d8cd588d --- /dev/null +++ b/servers/vcstream.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +# Icarus pv7 +# Fix dentaku65 + +import urlparse + +from core import httptools +from core import scrapertools +from platformcode import logger, config + + +def test_video_exists(page_url): + logger.info("(page_url='%s')" % page_url) + data = httptools.downloadpage(page_url).data + if "Not Found" in data or "File was deleted" in data: + return False, config.get_localized_string(70292) % "vcstream" + + return True, "" + + +def get_video_url(page_url, premium=False, user="", password="", video_password=""): + logger.info("url=" + page_url) + + video_urls = [] + + data = httptools.downloadpage(page_url).data + + url = scrapertools.find_single_match(data, "url: '([^']+)',") + + if url: + headers = dict() + headers['X-Requested-With'] = "XMLHttpRequest" + + token = scrapertools.find_single_match(data, 'set-cookie: vidcloud_session=(.*?);') + token = token.replace("%3D", "") + if token: + headers['vidcloud_session'] = token + + referer = scrapertools.find_single_match(data, "pageUrl = '([^']+)'") + if referer: + headers['Referer'] = referer + + page_url = urlparse.urljoin(page_url, url) + data = httptools.downloadpage(page_url, headers=headers, verify=False).data + data = data.replace('\\\\', '\\').replace('\\','') + + media_urls = scrapertools.find_multiple_matches(data, '\{"file"\s*:\s*"([^"]+)"\}') + + for media_url in media_urls: + ext = "mp4" + if "m3u8" in media_url: + ext = "m3u8" + import urllib2 + import ssl + context = ssl._create_unverified_context() + video_urls.append(["%s [vcstream]" % ext, media_url, urllib2.HTTPSHandler(context=context)]) + + for video_url in video_urls: + logger.info("%s - %s" % (video_url[0], video_url[1])) + return video_urls +