Merge pull request #4456 from dumaresq/develop

Bug fixes and new features for putio
This commit is contained in:
Ruud Burger committed 2015-01-09 20:08:30 +01:00
commit b8b7d94a6a
3 files changed
+28 -8

No files matched your search

@@ -28,6 +28,11 @@ config = [{
'description': 'This is the OAUTH_TOKEN from your putio API', 'description': 'This is the OAUTH_TOKEN from your putio API',
'advanced': True, 'advanced': True,
}, },
{
'name': 'folder',
'description': ('The folder on putio where you want the upload to go','Must be a folder in the root directory'),
'default': 0,
},
{ {
'name': 'callback_host', 'name': 'callback_host',
'description': 'External reachable url to CP so put.io can do it\'s thing', 'description': 'External reachable url to CP so put.io can do it\'s thing',
+18 -4
View File
@@ -28,20 +28,32 @@ class PutIO(DownloaderBase):
return super(PutIO, self).__init__() return super(PutIO, self).__init__()
def convertFolder(self, client, folder):
if folder == 0:
return 0
else:
files = client.File.list()
for f in files:
if f.name == folder and f.content_type == "application/x-directory":
return f.id
#If we get through the whole list and don't get a match we will use the root
return 0
def download(self, data = None, media = None, filedata = None): def download(self, data = None, media = None, filedata = None):
if not media: media = {} if not media: media = {}
if not data: data = {} if not data: data = {}
log.info('Sending "%s" to put.io', data.get('name')) log.info('Sending "%s" to put.io', data.get('name'))
url = data.get('url') url = data.get('url')
client = pio.Client(self.conf('oauth_token')) client = pio.Client(self.conf('oauth_token'))
putioFolder = self.convertFolder(client, self.conf('folder'))
log.debug('putioFolder ID is %s', putioFolder)
# It might be possible to call getFromPutio from the renamer if we can then we don't need to do this. # It might be possible to call getFromPutio from the renamer if we can then we don't need to do this.
# Note callback_host is NOT our address, it's the internet host that putio can call too # Note callback_host is NOT our address, it's the internet host that putio can call too
callbackurl = None callbackurl = None
if self.conf('download'): if self.conf('download'):
callbackurl = 'http://' + self.conf('callback_host') + '/' + '%sdownloader.putio.getfrom/' %Env.get('api_base'.strip('/')) callbackurl = 'http://' + self.conf('callback_host') + '%sdownloader.putio.getfrom/' %Env.get('api_base'.strip('/'))
resp = client.Transfer.add_url(url, callback_url = callbackurl) resp = client.Transfer.add_url(url, callback_url = callbackurl, parent_id = putioFolder)
log.debug('resp is %s', resp.id); log.debug('resp is %s', resp.id);
return self.downloadReturnId(resp.id) return self.downloadReturnId(resp.id)
@@ -124,7 +136,9 @@ class PutIO(DownloaderBase):
client = pio.Client(self.conf('oauth_token')) client = pio.Client(self.conf('oauth_token'))
log.debug('About to get file List') log.debug('About to get file List')
files = client.File.list() putioFolder = self.convertFolder(client, self.conf('folder'))
log.debug('PutioFolderID is %s', putioFolder)
files = client.File.list(parent_id=putioFolder)
downloaddir = self.conf('download_dir') downloaddir = self.conf('download_dir')
for f in files: for f in files:
+5 -4
View File
@@ -154,13 +154,14 @@ class _File(_BaseResource):
return [cls(f) for f in files] return [cls(f) for f in files]
@classmethod @classmethod
def upload(cls, path, name=None): def upload(cls, path, name=None, parent_id=0):
with open(path) as f: with open(path) as f:
if name: if name:
files = {'file': (name, f)} files = {'file': (name, f)}
else: else:
files = {'file': f} files = {'file': f}
d = cls.client.request('/files/upload', method='POST', files=files) d = cls.client.request('/files/upload', method='POST',
data={'parent_id': parent_id}, files=files)
f = d['file'] f = d['file']
return cls(f) return cls(f)
@@ -239,7 +240,7 @@ class _Transfer(_BaseResource):
@classmethod @classmethod
def add_url(cls, url, parent_id=0, extract=False, callback_url=None): def add_url(cls, url, parent_id=0, extract=False, callback_url=None):
d = cls.client.request('/transfers/add', method='POST', data=dict( d = cls.client.request('/transfers/add', method='POST', data=dict(
url=url, parent_id=parent_id, extract=extract, url=url, save_parent_id=parent_id, extract=extract,
callback_url=callback_url)) callback_url=callback_url))
t = d['transfer'] t = d['transfer']
return cls(t) return cls(t)
@@ -249,7 +250,7 @@ class _Transfer(_BaseResource):
with open(path) as f: with open(path) as f:
files = {'file': f} files = {'file': f}
d = cls.client.request('/files/upload', method='POST', files=files, d = cls.client.request('/files/upload', method='POST', files=files,
data=dict(parent_id=parent_id, data=dict(save_parent_id=parent_id,
extract=extract, extract=extract,
callback_url=callback_url)) callback_url=callback_url))
t = d['transfer'] t = d['transfer']