Pentru a rula aceste scripturi aveţi nevoie de următorul utilitar și de modulele python de mai jos:
import requests
import json
import getpass
email = raw_input('Email: ')
password = getpass.getpass()
api_base = 'https://storage.rcs-rds.ro'
s = requests.Session()
# get auth token
token = s.get(api_base + '/token', headers = {
'X-Koofr-Email': email,
'X-Koofr-Password': password
}).headers['X-Koofr-Token']
s.headers['Authorization'] = 'Token ' + token
# get mount (Digi Cloud, Dropbox...)
mounts = s.get(api_base + '/api/v2/mounts').json()['mounts']
mount = [x for x in mounts if x['name'] == 'Digi Cloud'][0]
print mount['name']
# list files
files = s.get(api_base + '/api/v2/mounts/' + mount['id'] + '/files/list', params = {'path': '/'}).json()['files']
for file in files:
print file['name']
# get file
print s.get(api_base + '/content/api/v2/mounts/' + mount['id'] + '/files/get', params = {'path': '/test.txt'}).content
# upload file
print s.post(api_base + '/content/api/v2/mounts/' + mount['id'] + '/files/put', params = {'path': '/'}, files = {
'file': ('filename.txt', 'file content')
}).json()[0]['name']
# create directory
s.post(api_base + '/api/v2/mounts/' + mount['id'] + '/files/folder', params = {'path': '/'},
data = json.dumps({
"name": "new directory"
}),
headers = {
'content-type': 'application/json'
}
)
##Exemplu script digiupload.py pentru uploadul unui fișier sau al unui director in DigiStorage (script dezvoltat în python):
import requests
import json
import getpass
from hurry.filesize import size
import os
import sys
from progressbar import *
if len(sys.argv) < 3 or len(sys.argv) > 3:
sys.exit('\nUtilizare: %s Folder_local Folder_cloud\n' % sys.argv[0])
else:
email = raw_input('Email: ')
password = getpass.getpass()
api_base = 'https://storage.rcs-rds.ro'
s = requests.Session()
# get auth token
token = s.get(api_base + '/token', headers = {
'X-Koofr-Email': email,
'X-Koofr-Password': password
}).headers['X-Koofr-Token']
s.headers['Authorization'] = 'Token ' + token
# get mount (Digi Cloud, Dropbox...)
mounts = s.get(api_base + '/api/v2/mounts').json()['mounts']
mount = [x for x in mounts if x['name'] == 'Digi Cloud'][0]
# upload file
def upload_file( str, path = '' ):
f = open(str, 'r')
content = f.read()
s.post(api_base + '/content/api/v2/mounts/' + mount['id'] + '/files/put', params = {'path': '/'+path}, files = {
'file': (str, content)
}).json()[0]['name']
f.close()
# create directory
def mkdir( str, path = '' ):
s.post(api_base + '/api/v2/mounts/' + mount['id'] + '/files/folder', params = {'path': '/' + path},
data = json.dumps({
"name": str
}),
headers = {
'content-type': 'application/json'
}
)
upload_dir = sys.argv[2]
mkdir(upload_dir)
rootDir = sys.argv[1]
if os.path.isfile(rootDir):
upload_file(rootDir,upload_dir)
else:
counter = 0
for root, dirs, files in os.walk(rootDir):
for file in files:
counter += 1
widgets = ['Total: ', Percentage(), ' ', Bar(marker='#',left='[',right=']'),' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=counter)
pbar.start()
for dirName, subdirList, fileList in os.walk(rootDir):
temp = ''
string2 = dirName.split("/")
path = upload_dir
upload_path = upload_dir+"/"+dirName
for i in range(len(string2)):
if i == 0:
path = path
temp = path
mkdir(string2[i], temp)
else:
path = path + "/"+ string2[i-1]
temp = path
mkdir(string2[i], temp)
i = 0
for fname in fileList:
if dirName[2:] != '':
pbar.update(i)
upload_file(dirName+"/"+fname,upload_path)
else:
pbar.update(i)
upload_file(fname,upload_path)
i += 1
pbar.finish()
print "\nupload-ul s-a finalizat!\n"
Exemplu de utilizare:
Uploadul unui director împreună cu toate subdirectoarele și toate fișierele pe care le conţine:
$ python digiupload.py MUSIC/ Test Email: email@domeniu.tld Password: Total: 100% [####################################################################################################] Time: 00:00:52 0.47 B/s
upload-ul s-a finalizat!
$
Uploadul unui fișier:
$ python digiupload.py image.png Imagini Email: email@domeniu.tld Password:
upload-ul s-a finalizat!
$