diff options
author | zapp-brannigan <zapp-brannigan@users.noreply.github.com> | 2015-02-03 13:16:36 +0100 |
---|---|---|
committer | zapp-brannigan <zapp-brannigan@users.noreply.github.com> | 2015-02-03 13:16:36 +0100 |
commit | ffbb4e011d2bb54c5f764eeb35bdd177adec098a (patch) | |
tree | 22dded118931e3671f142f701488ad86848e9052 /module/plugins/hoster | |
parent | [ClickAndLoad] Fix https://github.com/pyload/pyload/issues/1135 (diff) | |
download | pyload-ffbb4e011d2bb54c5f764eeb35bdd177adec098a.tar.xz |
[New Hoster] drive.google.com
A simple plugin to download public shared files from drive.google.com
Diffstat (limited to 'module/plugins/hoster')
-rw-r--r-- | module/plugins/hoster/GoogledriveCom.py | 54 |
1 files changed, 54 insertions, 0 deletions
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<N>.*?)">' + SIZE_PATTERN = r'^unmatchable$' # NOTE: There is no filesize on the website + + OFFLINE_PATTERN = r'align="center"><p class="errorMessage"' + + + def setup(self): + self.multiDL = True + self.resumeDownload = True + self.chunkLimit = 1 + + def handleFree(self, pyfile): + link1 = re.search(r'"(https://docs.google.com/uc\?id.*?export=download)",', self.html.decode('unicode-escape')) + if not link1: + self.error(_("Hop #1 not found")) + self.logDebug("Next hop: %s" % link1.group(1)) + + html = self.load(link1.group(1)).decode('unicode-escape') + link2 = re.search(r'href="(/uc\?export=download.*?)">',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) |