Skip to content

Commit 95bdd03

Browse files
updated documentation
1 parent 4ae87c9 commit 95bdd03

20 files changed

+631
-343
lines changed

qencode/exeptions.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

qencode/__init__.py renamed to qencode3/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,7 @@ def x265_video_codec():
2727
from . custom_params import Libx265_VideoCodecParameters
2828
return Libx265_VideoCodecParameters()
2929

30+
from . exeptions import QencodeClientException, QencodeTaskException
31+
3032

3133

qencode/client.py renamed to qencode3/client.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ class Client(object):
77
:return: encoder object
88
99
"""
10-
def __init__(self, api_key, api_url=None, version=None, **kwargs):
10+
def __init__(self, api_key, api_url=None, version=None):
1111
self.api_key = api_key
1212
self.api_url = api_url if api_url else 'https://api.qencode.com/'
1313
self.version = version if version else 'v1'
1414
self.connect = Http(self.version, self.api_url)
1515
self.access_token = None
16+
self.expire = None
1617
self.error = None
18+
self.code = None
1719
self.message = ''
1820
self._get_access_token()
1921

@@ -24,14 +26,18 @@ def refresh_access_token(self, **kwargs):
2426
response = self.connect.request('access_token', dict(api_key=self.api_key))
2527
if not response['error']:
2628
self.access_token = response['token']
29+
self.expire = response['expire']
2730
else:
2831
self.error = response['error']
32+
self.code = response['error']
2933
self.message = response.get('message')
3034

3135
def _get_access_token(self):
3236
response = self.connect.request('access_token', dict(api_key=self.api_key))
3337
if not response['error']:
3438
self.access_token = response['token']
39+
self.expire = response['expire']
3540
else:
3641
self.error = response['error']
42+
self.code = response['error']
3743
self.message = response.get('message')
File renamed without changes.

qencode/custom_params.py renamed to qencode3/custom_params.py

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22
from json import JSONEncoder
3-
from . utils import rm_key_if_null
3+
from . utils import rm_attributes_if_null
44

55
class CustomTranscodingParams(object):
66
"""CustomTranscodingParams
@@ -13,10 +13,10 @@ def __init__(self):
1313
self.source = None
1414
self.format = None
1515
self.callback_url = None
16-
rm_key_if_null(self)
16+
rm_attributes_if_null(self)
1717

1818
def remove_null_params(self):
19-
rm_key_if_null(self)
19+
rm_attributes_if_null(self)
2020

2121
class Format(object):
2222
"""
@@ -45,10 +45,10 @@ def __init__(self):
4545
self.time = None
4646
self.path = None
4747
self.resize_mod = None
48-
rm_key_if_null(self)
48+
rm_attributes_if_null(self)
4949

5050
def remove_null_params(self):
51-
rm_key_if_null(self)
51+
rm_attributes_if_null(self)
5252

5353
class Destination(object):
5454
def __init__(self):
@@ -57,10 +57,10 @@ def __init__(self):
5757
self.secret = None
5858
self.permissions = None
5959
self.storage_class = None
60-
rm_key_if_null(self)
60+
rm_attributes_if_null(self)
6161

6262
def remove_null_params(self):
63-
rm_key_if_null(self)
63+
rm_attributes_if_null(self)
6464

6565
class Stream(object):
6666
def __init__(self):
@@ -84,10 +84,10 @@ def __init__(self):
8484
self.downmix_mode = None
8585
self.logo = None
8686
self.aspect_ratio = None
87-
rm_key_if_null(self)
87+
rm_attributes_if_null(self)
8888

8989
def remove_null_params(self):
90-
rm_key_if_null(self)
90+
rm_attributes_if_null(self)
9191

9292

9393

@@ -101,10 +101,10 @@ def __init__(self):
101101
self.bf = None
102102
self.directpred = None
103103
self.me_method = None
104-
rm_key_if_null(self)
104+
rm_attributes_if_null(self)
105105

106106
def remove_null_params(self):
107-
rm_key_if_null(self)
107+
rm_attributes_if_null(self)
108108

109109
class Libx265_VideoCodecParameters(object):
110110
def __init__(self):
@@ -134,7 +134,7 @@ def prepare_params(self):
134134
def validate_params(self):
135135
if not self.params:
136136
self.error = True
137-
self.message = 'for custom start encode - params is required'
137+
self.message = 'Params is required'
138138
return
139139
if not 'source' in self.params.__dict__:
140140
self.error = True
@@ -144,19 +144,5 @@ def validate_params(self):
144144
self.error = True
145145
self.message = 'Params: format is required'
146146
return
147-
for format in self.params.format:
148-
if not 'stream' in format.__dict__:
149-
self.error = True
150-
self.message = 'Params: stream is required in the format list'
151-
return
152-
if not 'output' in format.__dict__:
153-
self.error = True
154-
self.message = 'Params: output format is required in the format list'
155-
return
156-
for stream in format.stream:
157-
if not 'size' in stream.__dict__:
158-
self.error = True
159-
self.message = 'Params: size is required in the stream list'
160-
return
161147

162148

qencode3/exeptions.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class QencodeException(Exception):
2+
def __init__(self, message, *args):
3+
super(QencodeException, self).__init__(message, *args)
4+
self.error = message
5+
self.arg = [i for i in args]
6+
7+
class QencodeClientException(QencodeException):
8+
def __init__(self, message, *args):
9+
super(QencodeClientException, self).__init__(message, *args)
10+
11+
12+
class QencodeTaskException(QencodeException):
13+
def __init__(self, message, *args):
14+
super(QencodeTaskException, self).__init__(message, *args)
File renamed without changes.

qencode/task.py renamed to qencode3/task.py

Lines changed: 95 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
from . custom_params import Query
1+
from . custom_params import Query, CustomTranscodingParams
22
from . const import *
33
import time
4+
import json
5+
from . utils import is_json, rm_key_if_null
46

57

68

@@ -17,6 +19,74 @@ def __init__(self, access_token, connect, debug=False, **kwargs):
1719

1820

1921

22+
def start(self, profiles, video_url, **kwargs):
23+
"""Creating task and starting encode
24+
25+
:param profiles: String or List object. Profile uuid
26+
:param transfer_method: String. Transfer method uuid
27+
:param video_url: String. Url of source video
28+
:param payload: String.
29+
:return: None
30+
31+
"""
32+
if not self.error:
33+
self._create_task(1)
34+
data = self._prepare_data(profiles, video_url, **kwargs)
35+
36+
if not self.error and self.task_token:
37+
self._start_encode('start_encode', data)
38+
39+
40+
def custom_start(self, data, **kwargs):
41+
"""Creating task and starting encode
42+
43+
:param query: JSON object for query param. For examples: https://docs.qencode.com
44+
:param payload: String.
45+
:return: None
46+
47+
"""
48+
if data is None:
49+
self.error = True
50+
self.message = 'Params is required'
51+
52+
if not self.error:
53+
self._create_task(1)
54+
55+
if not self.error:
56+
data = self._prepare_data_custom(self._prepare_query(data), **kwargs)
57+
58+
if not self.error and self.task_token:
59+
self._start_encode('start_encode2', data)
60+
61+
62+
def status(self):
63+
return self._status()
64+
65+
def main_status(self):
66+
return self._status2()
67+
68+
def progress_changed(self, callback, *args, **kwargs):
69+
while 1:
70+
status = self._status()
71+
if status['error']:
72+
return callback(status, *args, **kwargs)
73+
callback(status, *args, **kwargs)
74+
if status.get('status') in COMPLETED_STATUS:
75+
break
76+
time.sleep(SLEEP_REGULAR)
77+
78+
79+
def task_completed(self, callback, *args, **kwargs):
80+
while 1:
81+
status = self._status()
82+
if status['error']:
83+
return callback(status, *args, **kwargs)
84+
if status.get('status') in COMPLETED_STATUS:
85+
return callback(status, *args, **kwargs)
86+
if status.get('status') in COMPLETED_STATUS:
87+
break
88+
time.sleep(SLEEP_REGULAR)
89+
2090
def _prepare_data(self, profiles, video_url, **kwargs):
2191
data = dict(
2292
task_token=self.task_token,
@@ -27,7 +97,30 @@ def _prepare_data(self, profiles, video_url, **kwargs):
2797
data.update(kwargs)
2898
return data
2999

30-
def _prepare_data2(self, query_json, **kwargs):
100+
def _prepare_query(self, params):
101+
if isinstance(params, CustomTranscodingParams):
102+
query_obj = Query()
103+
query_obj.params = params
104+
query_obj.validate_params()
105+
if query_obj.error:
106+
self.error = query_obj.error
107+
self.message = query_obj.message
108+
query_obj.prepare_params()
109+
if query_obj.error:
110+
self.error = query_obj.error
111+
self.message = query_obj.message
112+
return query_obj.query
113+
114+
if isinstance(params, dict):
115+
query = rm_key_if_null(params)
116+
return json.dumps(query)
117+
118+
if isinstance(params, str):
119+
if is_json(params):
120+
query = rm_key_if_null(params)
121+
return query
122+
123+
def _prepare_data_custom(self, query_json, **kwargs):
31124
data = dict(
32125
task_token=self.task_token,
33126
query=query_json
@@ -82,90 +175,3 @@ def _status2(self):
82175
else:
83176
return response
84177

85-
86-
87-
88-
def start(self, profiles, video_url, **kwargs):
89-
"""Creating task and starting encode
90-
91-
:param profiles: String or List object. Profile uuid
92-
:param transfer_method: String. Transfer method uuid
93-
:param video_url: String. Url of source video
94-
:param payload: String.
95-
:return: None
96-
97-
"""
98-
if not self.error:
99-
self._create_task(1)
100-
data = self._prepare_data(profiles, video_url, **kwargs)
101-
102-
if not self.error and self.task_token:
103-
self._start_encode('start_encode', data)
104-
105-
106-
def custom_start(self, params, **kwargs):
107-
"""Creating task and starting encode
108-
109-
:param query: JSON object for query param. For examples: https://docs.qencode.com
110-
:param payload: String.
111-
:return: None
112-
113-
"""
114-
query_obj = Query()
115-
query_obj.params = params
116-
query_obj.validate_params()
117-
if query_obj.error:
118-
self.error = query_obj.error
119-
self.message = query_obj.message
120-
return
121-
122-
query_obj.prepare_params()
123-
if query_obj.error:
124-
self.error = query_obj.error
125-
self.message = query_obj.message
126-
127-
if not self.error:
128-
self._create_task(1)
129-
data = self._prepare_data2(query_obj.query, **kwargs)
130-
131-
if not self.error and self.task_token:
132-
self._start_encode('start_encode2', data)
133-
134-
135-
def status(self):
136-
"""Getting status of encode from master-server.
137-
real time updating.
138-
139-
:return: JSON object:
140-
{
141-
'status' : 'encoding', 'percent': '50.90' 'error': 0 ...
142-
}
143-
144-
"""
145-
return self._status()
146-
147-
def main_status(self):
148-
return self._status2()
149-
150-
def progress_changed(self, callback, *args, **kwargs):
151-
while 1:
152-
status = self._status()
153-
if status['error']:
154-
return callback(status, *args, **kwargs)
155-
callback(status, *args, **kwargs)
156-
if status.get('status') in COMPLETED_STATUS:
157-
break
158-
time.sleep(SLEEP_REGULAR)
159-
160-
161-
def task_completed(self, callback, *args, **kwargs):
162-
while 1:
163-
status = self._status()
164-
if status['error']:
165-
return callback(status, *args, **kwargs)
166-
if status.get('status') in COMPLETED_STATUS:
167-
return callback(status, *args, **kwargs)
168-
if status.get('status') in COMPLETED_STATUS:
169-
break
170-
time.sleep(SLEEP_REGULAR)
171-

0 commit comments

Comments
 (0)