From ffbb4e011d2bb54c5f764eeb35bdd177adec098a Mon Sep 17 00:00:00 2001 From: zapp-brannigan Date: Tue, 3 Feb 2015 13:16:36 +0100 Subject: [New Hoster] drive.google.com A simple plugin to download public shared files from drive.google.com --- module/plugins/hoster/GoogledriveCom.py | 54 +++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 module/plugins/hoster/GoogledriveCom.py (limited to 'module/plugins/hoster/GoogledriveCom.py') diff --git a/module/plugins/hoster/GoogledriveCom.py b/module/plugins/hoster/GoogledriveCom.py new file mode 100644 index 000000000..d3736f219 --- /dev/null +++ b/module/plugins/hoster/GoogledriveCom.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -* +# +# Test links: +# https://drive.google.com/file/d/0B6RNTe4ygItBQm15RnJiTmMyckU/view?pli=1 + +import re +import HTMLParser + +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo + + +class GoogledriveCom(SimpleHoster): + __name__ = "GoogledriveCom" + __type__ = "hoster" + __version__ = "0.01" + + __pattern__ = r'https?://(?:www\.)?drive.google.com/file/.*' + + __description__ = """drive.google.com hoster plugin""" + __license__ = "GPLv3" + __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] + + + NAME_PATTERN = r'"og:title" content="(?P.*?)">' + SIZE_PATTERN = r'^unmatchable$' # NOTE: There is no filesize on the website + + OFFLINE_PATTERN = r'align="center">

',html) + if not link2: + self.error(_("Hop #2 not found")) + link2 = HTMLParser.HTMLParser().unescape(link2.group(1)) + self.logDebug("Next hop: %s" % link2) + + link3 = self.load("https://docs.google.com" + link2, just_header=True) + self.logDebug("DL-Link: %s" % link3['location']) + + self.download(link3['location']) # NOTE: I don't use disposition=True because it breaks the filename. + + +getInfo = create_getInfo(GoogledriveCom) -- cgit v1.2.3 From 80f03e5c1dbb0bc6d4c20995f3a2d467dcab82c0 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 3 Feb 2015 16:42:23 +0100 Subject: [GoogledriveCom] Cleanup --- module/plugins/hoster/GoogledriveCom.py | 45 ++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 18 deletions(-) (limited to 'module/plugins/hoster/GoogledriveCom.py') diff --git a/module/plugins/hoster/GoogledriveCom.py b/module/plugins/hoster/GoogledriveCom.py index d3736f219..1feb8132e 100644 --- a/module/plugins/hoster/GoogledriveCom.py +++ b/module/plugins/hoster/GoogledriveCom.py @@ -4,9 +4,9 @@ # https://drive.google.com/file/d/0B6RNTe4ygItBQm15RnJiTmMyckU/view?pli=1 import re -import HTMLParser from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo +from module.utils import html_unescape class GoogledriveCom(SimpleHoster): @@ -14,16 +14,14 @@ class GoogledriveCom(SimpleHoster): __type__ = "hoster" __version__ = "0.01" - __pattern__ = r'https?://(?:www\.)?drive.google.com/file/.*' + __pattern__ = r'https?://(?:www\.)?drive\.google\.com/file/.+' - __description__ = """drive.google.com hoster plugin""" + __description__ = """Drive.google.com hoster plugin""" __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] NAME_PATTERN = r'"og:title" content="(?P.*?)">' - SIZE_PATTERN = r'^unmatchable$' # NOTE: There is no filesize on the website - OFFLINE_PATTERN = r'align="center">

',html) - if not link2: + + else: + self.logDebug("Next hop: %s" % link1)) + + self.html = self.load(link1).decode('unicode-escape') + + try: + link2 = html_unescape(re.search(r'href="(/uc\?export=download.*?)">', + self.html).group(1)) + + except AttributeError: self.error(_("Hop #2 not found")) - link2 = HTMLParser.HTMLParser().unescape(link2.group(1)) - self.logDebug("Next hop: %s" % link2) - + + else: + self.logDebug("Next hop: %s" % link2) + link3 = self.load("https://docs.google.com" + link2, just_header=True) self.logDebug("DL-Link: %s" % link3['location']) - self.download(link3['location']) # NOTE: I don't use disposition=True because it breaks the filename. - - + self.link = link3['location'] #@NOTE: I don't use disposition=True because it breaks the filename. + + getInfo = create_getInfo(GoogledriveCom) -- cgit v1.2.3 From fa4df27a217171be99b9f0903768f30ee7c1298e Mon Sep 17 00:00:00 2001 From: stickell Date: Wed, 4 Feb 2015 11:10:09 +0100 Subject: [GoogledriveCom] Fixed syntax error --- module/plugins/hoster/GoogledriveCom.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/hoster/GoogledriveCom.py') diff --git a/module/plugins/hoster/GoogledriveCom.py b/module/plugins/hoster/GoogledriveCom.py index 1feb8132e..1fcdf8ff0 100644 --- a/module/plugins/hoster/GoogledriveCom.py +++ b/module/plugins/hoster/GoogledriveCom.py @@ -12,7 +12,7 @@ from module.utils import html_unescape class GoogledriveCom(SimpleHoster): __name__ = "GoogledriveCom" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'https?://(?:www\.)?drive\.google\.com/file/.+' @@ -40,7 +40,7 @@ class GoogledriveCom(SimpleHoster): self.error(_("Hop #1 not found")) else: - self.logDebug("Next hop: %s" % link1)) + self.logDebug("Next hop: %s" % link1) self.html = self.load(link1).decode('unicode-escape') -- cgit v1.2.3 From 6616c00ba1c40f5d56959bd0e4725f26250e1292 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 9 Feb 2015 17:42:31 +0100 Subject: Spare code cosmetics --- module/plugins/hoster/GoogledriveCom.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'module/plugins/hoster/GoogledriveCom.py') diff --git a/module/plugins/hoster/GoogledriveCom.py b/module/plugins/hoster/GoogledriveCom.py index 1fcdf8ff0..0c8ca9c52 100644 --- a/module/plugins/hoster/GoogledriveCom.py +++ b/module/plugins/hoster/GoogledriveCom.py @@ -12,7 +12,7 @@ from module.utils import html_unescape class GoogledriveCom(SimpleHoster): __name__ = "GoogledriveCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?drive\.google\.com/file/.+' @@ -21,6 +21,8 @@ class GoogledriveCom(SimpleHoster): __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] + DISPOSITION = False + NAME_PATTERN = r'"og:title" content="(?P.*?)">' OFFLINE_PATTERN = r'align="center">