Skip to content

Commit d283308

Browse files
Bug fixes #27
1 parent ead6234 commit d283308

2 files changed

Lines changed: 22 additions & 14 deletions

File tree

ffmpeg_streaming/_clouds.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ def upload_directory(self, directory, **options):
5656

5757
try:
5858
for file in files:
59-
self.s3.upload_file(join(directory, file), bucket_name, join(folder, file))
59+
self.s3.upload_file(join(directory, file), bucket_name, join(folder, file).replace("\\", "/"))
6060
except self.err as e:
6161
logging.error(e)
6262
raise RuntimeError(e)
6363

64-
logging.info("The " + directory + " directory was uploaded to Amazon S3 successfully")
64+
logging.info("The {} directory was uploaded to Amazon S3 successfully".format(directory))
6565

6666
def download(self, filename=None, **options):
6767
bucket_name = options.pop('bucket_name', None)
@@ -87,6 +87,8 @@ def download(self, filename=None, **options):
8787

8888

8989
class GCS(Clouds):
90+
CLIENT = None
91+
9092
def __init__(self, **options):
9193
"""
9294
@TODO: add documentation
@@ -96,27 +98,27 @@ def __init__(self, **options):
9698
except ImportError as e:
9799
raise ImportError("No specified import name! make sure that you have installed the package via pip:\n\n"
98100
"pip install google-cloud-storage")
99-
self.client = storage.Client(**options)
101+
GCS.CLIENT = storage.Client(**options)
100102

101103
def upload_directory(self, directory, **options):
102104
bucket_name = options.pop('bucket_name', None)
103105
if bucket_name is None:
104106
raise ValueError('You should pass a bucket name')
105107

106-
bucket = self.client.get_bucket(bucket_name)
107-
108+
bucket = GCS.CLIENT.get_bucket(bucket_name)
109+
folder = options.pop('folder', '')
108110
files = [f for f in listdir(directory) if isfile(join(directory, f))]
109111

110112
for file in files:
111-
blob = bucket.blob(bucket_name + file, **options)
113+
blob = bucket.blob(join(folder, file).replace("\\", "/"), **options)
112114
blob.upload_from_filename(join(directory, file))
113115

114116
def download(self, filename=None, **options):
115117
bucket_name = options.pop('bucket_name', None)
116118
if bucket_name is None:
117119
raise ValueError('You should pass a bucket name')
118120

119-
bucket = self.client.get_bucket(bucket_name)
121+
bucket = GCS.CLIENT.get_bucket(bucket_name)
120122
object_name = options.pop('object_name', None)
121123

122124
if object_name is None:
@@ -126,7 +128,7 @@ def download(self, filename=None, **options):
126128
with tempfile.NamedTemporaryFile(prefix=basename(object_name), delete=False) as tmp:
127129
filename = tmp.name
128130

129-
blob = bucket.get_blob(object_name, options)
131+
blob = bucket.get_blob(object_name, **options)
130132
blob.download_to_filename(filename)
131133

132134
return filename

ffmpeg_streaming/_input.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
from ffmpeg_streaming._utiles import get_os, cnv_options_to_args
1515
from ffmpeg_streaming._clouds import Clouds
1616

17+
cloud = None
18+
1719

1820
class Capture(object):
1921
def __init__(self, video, options):
@@ -60,15 +62,19 @@ def __iter__(self):
6062
yield from getattr(self, '_' + get_os())().items()
6163

6264

63-
def get_from_cloud(cloud: Clouds, options: dict):
65+
def get_from_cloud(_cloud: Clouds, options: dict):
6466
"""
6567
@TODO: add documentation
6668
"""
67-
save_to = options.pop('save_to', None)
68-
return {
69-
'i': cloud.download(save_to, **options),
70-
'is_tmp': True if save_to is None else False
71-
}
69+
global cloud
70+
if cloud is None:
71+
save_to = options.pop('save_to', None)
72+
cloud = {
73+
'i': _cloud.download(save_to, **options),
74+
'is_tmp': True if save_to is None else False
75+
}
76+
77+
return cloud
7278

7379

7480
class InputOption(object):

0 commit comments

Comments
 (0)