Skip to content

Commit 015b8f9

Browse files
authored
Merge pull request #154 from jackyding2679/fix-code-format
Fix code format
2 parents 5951c62 + fea2c2d commit 015b8f9

File tree

3 files changed

+88
-70
lines changed

3 files changed

+88
-70
lines changed

qcloud_cos/cos_auth.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ def __call__(self, r):
9292
logger.debug("request headers: " + str(r.headers))
9393
return r
9494

95+
9596
class CosRtmpAuth(AuthBase):
97+
9698
def __init__(self, conf, bucket=None, channel=None, params={}, expire=10000):
9799
self._secret_id = conf._secret_id
98100
self._secret_key = conf._secret_key
@@ -117,8 +119,8 @@ def get_rtmp_sign(self):
117119
sha1.update(to_bytes(rtmp_str))
118120
# get time
119121
sign_time = int(time.time())
120-
sign_time_str = "{start_time};{end_time}".format(start_time = sign_time - 60, end_time = sign_time + self._expire)
121-
str_to_sign = "sha1\n{time}\n{sha1}\n".format(time = sign_time_str, sha1 = sha1.hexdigest())
122+
sign_time_str = "{start_time};{end_time}".format(start_time=sign_time-60, end_time=sign_time+self._expire)
123+
str_to_sign = "sha1\n{time}\n{sha1}\n".format(time=sign_time_str, sha1=sha1.hexdigest())
122124
logger.debug('str_to_sign: ' + str(str_to_sign))
123125
# get sinature
124126
signature = hmac.new(to_bytes(self._secret_key), to_bytes(str_to_sign), hashlib.sha1).hexdigest()
@@ -130,5 +132,6 @@ def get_rtmp_sign(self):
130132
else:
131133
return rtmp_sign
132134

135+
133136
if __name__ == "__main__":
134137
pass

qcloud_cos/cos_client.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3668,6 +3668,7 @@ def put_live_channel(self, Bucket, ChannelName, Expire=3600, LiveChannelConfigur
36683668
:return(dict): publish url and playurl.
36693669
36703670
.. code-block:: python
3671+
36713672
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
36723673
client = CosS3Client(config)
36733674
# 设置直播通道配置
@@ -3699,10 +3700,10 @@ def put_live_channel(self, Bucket, ChannelName, Expire=3600, LiveChannelConfigur
36993700
params=params)
37003701
data = xml_to_dict(rt.content)
37013702
if data['PublishUrls']['Url'] is not None:
3702-
rtmpSign = CosRtmpAuth(self._conf, bucket=Bucket, channel=ChannelName, expire=Expire)
3703-
url = data['PublishUrls']['Url']
3704-
url += '?' + rtmpSign.get_rtmp_sign()
3705-
data['PublishUrls']['Url'] = url
3703+
rtmpSign = CosRtmpAuth(self._conf, bucket=Bucket, channel=ChannelName, expire=Expire)
3704+
url = data['PublishUrls']['Url']
3705+
url += '?' + rtmpSign.get_rtmp_sign()
3706+
data['PublishUrls']['Url'] = url
37063707
return data
37073708

37083709
def get_rtmp_signed_url(self, Bucket, ChannelName, Expire=3600, Params={}):
@@ -3712,13 +3713,16 @@ def get_rtmp_signed_url(self, Bucket, ChannelName, Expire=3600, Params={}):
37123713
:return: dict.
37133714
37143715
.. code-block:: python
3716+
37153717
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
37163718
client = CosS3Client(config)
37173719
resp = client.get_rtmp_signed_url(Bucket='bucket', ChannelName='ch1')
37183720
"""
3719-
rtmp_signed_url = 'rtmp://{bucket}.cos.{region}.myqcloud.com/live/{channel}'.format(bucket=Bucket, region=self._conf._region, channel=ChannelName)
3720-
rtmpAuth = CosRtmpAuth(self._conf, bucket=Bucket, channel=ChannelName, params = Params, expire=Expire)
3721-
return rtmp_signed_url + '?' + rtmpAuth.get_rtmp_sign()
3721+
rtmp_signed_url = 'rtmp://{bucket}.cos.{region}.myqcloud.com/live/{channel}'.format(bucket=Bucket,
3722+
region=self._conf._region,
3723+
channel=ChannelName)
3724+
rtmpAuth = CosRtmpAuth(self._conf, bucket=Bucket, channel=ChannelName, params=Params, expire=Expire)
3725+
return rtmp_signed_url + '?' + rtmpAuth.get_rtmp_sign()
37223726

37233727
def get_live_channel_info(self, Bucket, ChannelName, **kwargs):
37243728
"""获取直播通道配置信息
@@ -3729,6 +3733,7 @@ def get_live_channel_info(self, Bucket, ChannelName, **kwargs):
37293733
:return: dict.
37303734
37313735
.. code-block:: python
3736+
37323737
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
37333738
client = CosS3Client(config)
37343739
resp = client.get_live_channel_info(Bucket='bucket', ChannelName='ch1')
@@ -3757,6 +3762,7 @@ def put_live_channel_switch(self, Bucket, ChannelName, Switch, **kwargs):
37573762
:return(None).
37583763
37593764
.. code-block:: python
3765+
37603766
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
37613767
client = CosS3Client(config)
37623768
client.put_live_channel_switch(Bucket='bucket', ChannelName='ch1', Switch='enabled')
@@ -3788,11 +3794,12 @@ def get_live_channel_history(self, Bucket, ChannelName, **kwargs):
37883794
:return(dict).
37893795
37903796
.. code-block:: python
3797+
37913798
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
37923799
client = CosS3Client(config)
37933800
resp = client.get_live_channel_history(Bucket='bucket', ChannelName='ch1')
37943801
"""
3795-
params = {'live': '', 'comp' : 'history'}
3802+
params = {'live': '', 'comp': 'history'}
37963803
headers = mapped(kwargs)
37973804
url = self._conf.uri(bucket=Bucket, path=ChannelName)
37983805
logger.info("get live channel history, url=:{url} ,headers=:{headers}".format(url=url, headers=headers))
@@ -3816,11 +3823,12 @@ def get_live_channel_status(self, Bucket, ChannelName, **kwargs):
38163823
:return(dict).
38173824
38183825
.. code-block:: python
3826+
38193827
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
38203828
client = CosS3Client(config)
38213829
resp = client.get_live_channel_status(Bucket='bucket', ChannelName='ch1')
38223830
"""
3823-
params = {'live': '', 'comp' : 'status'}
3831+
params = {'live': '', 'comp': 'status'}
38243832
headers = mapped(kwargs)
38253833
url = self._conf.uri(bucket=Bucket, path=ChannelName)
38263834
logger.info("get live channel status, url=:{url} ,headers=:{headers}".format(url=url, headers=headers))
@@ -3843,6 +3851,7 @@ def delete_live_channel(self, Bucket, ChannelName, **kwargs):
38433851
:return(dict).
38443852
38453853
.. code-block:: python
3854+
38463855
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
38473856
client = CosS3Client(config)
38483857
client.delete_live_channel(Bucket='bucket', ChannelName='ch1')
@@ -3861,7 +3870,7 @@ def delete_live_channel(self, Bucket, ChannelName, **kwargs):
38613870
data = dict(**rt.headers)
38623871
return data
38633872

3864-
def get_vod_playlist(self, Bucket, ChannelName, StartTime = 0, EndTime = 0, **kwargs):
3873+
def get_vod_playlist(self, Bucket, ChannelName, StartTime=0, EndTime=0, **kwargs):
38653874
"""查询指定时间段播放列表文件
38663875
38673876
:param Bucket(string): 存储桶名称.
@@ -3872,6 +3881,7 @@ def get_vod_playlist(self, Bucket, ChannelName, StartTime = 0, EndTime = 0, **kw
38723881
:return(string).
38733882
38743883
.. code-block:: python
3884+
38753885
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
38763886
client = CosS3Client(config)
38773887
resp = client.get_vod_playlist(Bucket='bucket', ChannelName='ch1', StartTime=1611218201, EndTime=1611218300)
@@ -3881,7 +3891,7 @@ def get_vod_playlist(self, Bucket, ChannelName, StartTime = 0, EndTime = 0, **kw
38813891
if StartTime >= EndTime:
38823892
raise CosClientError('StartTime must be less than EndTime')
38833893

3884-
params = {'vod': '', 'starttime' : StartTime, 'endtime' : EndTime}
3894+
params = {'vod': '', 'starttime': StartTime, 'endtime': EndTime}
38853895
headers = mapped(kwargs)
38863896
url = self._conf.uri(bucket=Bucket, path=ChannelName)
38873897
logger.info("get vod playlist, url=:{url} ,headers=:{headers}".format(url=url, headers=headers))
@@ -3894,7 +3904,7 @@ def get_vod_playlist(self, Bucket, ChannelName, StartTime = 0, EndTime = 0, **kw
38943904
params=params)
38953905
return rt.content
38963906

3897-
def post_vod_playlist(self, Bucket, ChannelName, PlaylistName, StartTime = 0, EndTime = 0, **kwargs):
3907+
def post_vod_playlist(self, Bucket, ChannelName, PlaylistName, StartTime=0, EndTime=0, **kwargs):
38983908
"""生成点播播放列表文件
38993909
39003910
:param Bucket(string): 存储桶名称.
@@ -3906,6 +3916,7 @@ def post_vod_playlist(self, Bucket, ChannelName, PlaylistName, StartTime = 0, En
39063916
:return(None).
39073917
39083918
.. code-block:: python
3919+
39093920
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
39103921
client = CosS3Client(config)
39113922
resp = client.post_vod_playlist(Bucket='bucket', ChannelName='ch1', PlaylistName='test.m3u8', StartTime=1611218201, EndTime=1611218300)
@@ -3917,7 +3928,7 @@ def post_vod_playlist(self, Bucket, ChannelName, PlaylistName, StartTime = 0, En
39173928
if not PlaylistName.endswith('.m3u8'):
39183929
raise CosClientError('PlaylistName must be end with .m3u8')
39193930

3920-
params = {'vod': '', 'starttime' : StartTime, 'endtime' : EndTime}
3931+
params = {'vod': '', 'starttime': StartTime, 'endtime': EndTime}
39213932
headers = mapped(kwargs)
39223933
file_path = ChannelName + '/' + PlaylistName
39233934
url = self._conf.uri(bucket=Bucket, path=file_path)
@@ -3931,7 +3942,7 @@ def post_vod_playlist(self, Bucket, ChannelName, PlaylistName, StartTime = 0, En
39313942
params=params)
39323943
return None
39333944

3934-
def list_live_channel(self, Bucket, MaxKeys = 100, Prefix = '', Marker = '', **kwargs):
3945+
def list_live_channel(self, Bucket, MaxKeys=100, Prefix='', Marker='', **kwargs):
39353946
"""获取直播通道列表
39363947
39373948
:param Bucket(string): 存储桶名称.
@@ -3942,11 +3953,12 @@ def list_live_channel(self, Bucket, MaxKeys = 100, Prefix = '', Marker = '', **k
39423953
:return: string.
39433954
39443955
.. code-block:: python
3956+
39453957
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
39463958
client = CosS3Client(config)
39473959
resp = client.list_channel(Bucket='bucket', MaxKeys=100)
39483960
"""
3949-
params = {'live' : ''}
3961+
params = {'live': ''}
39503962
if MaxKeys >= 1:
39513963
params['max-keys'] = MaxKeys
39523964
if Prefix != '':
@@ -3979,5 +3991,6 @@ def list_live_channel(self, Bucket, MaxKeys = 100, Prefix = '', Marker = '', **k
39793991
])
39803992
return data
39813993

3994+
39823995
if __name__ == "__main__":
39833996
pass

ut/test.py

Lines changed: 55 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,7 +1358,7 @@ def test_rsa_client():
13581358

13591359

13601360
def test_live_channel():
1361-
print ("create live channel...")
1361+
"""测试rtmp推流功能"""
13621362
livechannel_config = {
13631363
'Description': 'cos python sdk test',
13641364
'Switch': 'Enabled',
@@ -1372,36 +1372,35 @@ def test_live_channel():
13721372

13731373
try:
13741374
response = client.put_live_channel(
1375-
Bucket = test_bucket,
1376-
ChannelName = channel_name,
1377-
LiveChannelConfiguration = livechannel_config)
1378-
assert(response)
1379-
print(response)
1375+
Bucket=test_bucket,
1376+
ChannelName=channel_name,
1377+
LiveChannelConfiguration=livechannel_config)
1378+
assert (response)
13801379
except Exception as e:
13811380
if e.get_error_code() != 'ChannelStillLive':
13821381
return
13831382

1384-
print ("get live channel info...")
1383+
print("get live channel info...")
13851384
response = client.get_live_channel_info(
1386-
Bucket = test_bucket,
1387-
ChannelName = channel_name)
1385+
Bucket=test_bucket,
1386+
ChannelName=channel_name)
13881387
print(response)
1389-
assert(response['Switch'] == 'Enabled')
1390-
assert(response['Description'] == 'cos python sdk test')
1391-
assert(response['Target']['Type'] == 'HLS')
1392-
assert(response['Target']['FragDuration'] == '3')
1393-
assert(response['Target']['FragCount'] == '5')
1394-
assert(response['Target']['PlaylistName'] == 'playlist.m3u8')
1395-
1396-
print ("put live channel switch...")
1388+
assert (response['Switch'] == 'Enabled')
1389+
assert (response['Description'] == 'cos python sdk test')
1390+
assert (response['Target']['Type'] == 'HLS')
1391+
assert (response['Target']['FragDuration'] == '3')
1392+
assert (response['Target']['FragCount'] == '5')
1393+
assert (response['Target']['PlaylistName'] == 'playlist.m3u8')
1394+
1395+
print("put live channel switch...")
13971396
client.put_live_channel_switch(
1398-
Bucket = test_bucket,
1399-
ChannelName = channel_name,
1400-
Switch = 'disabled')
1397+
Bucket=test_bucket,
1398+
ChannelName=channel_name,
1399+
Switch='disabled')
14011400
response = client.get_live_channel_info(
14021401
Bucket=test_bucket,
14031402
ChannelName=channel_name)
1404-
assert(response['Switch'] == 'Disabled')
1403+
assert (response['Switch'] == 'Disabled')
14051404
client.put_live_channel_switch(
14061405
Bucket=test_bucket,
14071406
ChannelName=channel_name,
@@ -1411,32 +1410,32 @@ def test_live_channel():
14111410
ChannelName=channel_name)
14121411
assert (response['Switch'] == 'Enabled')
14131412

1414-
print ("get live channel history...")
1413+
print("get live channel history...")
14151414
response = client.get_live_channel_history(
1416-
Bucket = test_bucket,
1417-
ChannelName = channel_name)
1415+
Bucket=test_bucket,
1416+
ChannelName=channel_name)
14181417
print(response)
14191418

1420-
print ("get live channel status...")
1419+
print("get live channel status...")
14211420
response = client.get_live_channel_status(
1422-
Bucket = test_bucket,
1423-
ChannelName = channel_name)
1421+
Bucket=test_bucket,
1422+
ChannelName=channel_name)
14241423
print(response)
14251424
assert (response['Status'] == 'Idle' or response['Status'] == 'Live')
14261425

1427-
print ("list channel...")
1426+
print("list channel...")
14281427
create_chan_num = 20
14291428
for i in range(1, create_chan_num):
14301429
ch_name = 'test-list-channel-' + str(i)
14311430
client.put_live_channel(
14321431
Bucket=test_bucket,
14331432
ChannelName=ch_name,
14341433
LiveChannelConfiguration=livechannel_config)
1435-
response = client.list_live_channel(Bucket = test_bucket, MaxKeys = 10)
1434+
response = client.list_live_channel(Bucket=test_bucket, MaxKeys=10)
14361435
print(response)
14371436
assert (response['MaxKeys'] == '10')
14381437
assert (response['IsTruncated'] == 'true')
1439-
response = client.list_live_channel(Bucket=test_bucket, MaxKeys=5, Marker = response['NextMarker'])
1438+
response = client.list_live_channel(Bucket=test_bucket, MaxKeys=5, Marker=response['NextMarker'])
14401439
print(response)
14411440
assert (response['MaxKeys'] == '5')
14421441
assert (response['IsTruncated'] == 'true')
@@ -1445,40 +1444,43 @@ def test_live_channel():
14451444
ch_name = 'test-list-channel-' + str(i)
14461445
client.delete_live_channel(Bucket=test_bucket, ChannelName=ch_name)
14471446

1448-
print ("post vod playlist")
1447+
print("post vod playlist")
1448+
'''playlist不以.m3u8结尾'''
14491449
try:
14501450
client.post_vod_playlist(
1451-
Bucket = test_bucket,
1452-
ChannelName = channel_name,
1453-
PlaylistName = 'test',
1454-
StartTime = int(time.time()) - 10000,
1455-
EndTime = int(time.time()))
1451+
Bucket=test_bucket,
1452+
ChannelName=channel_name,
1453+
PlaylistName='test',
1454+
StartTime=int(time.time()) - 10000,
1455+
EndTime=int(time.time()))
14561456
except Exception as e:
1457-
print e
1457+
pass
1458+
1459+
'''starttime大于endtimne'''
14581460
try:
14591461
client.post_vod_playlist(
1460-
Bucket = test_bucket,
1461-
ChannelName = channel_name,
1462-
PlaylistName = 'test.m3u8',
1463-
StartTime = 10,
1464-
EndTime = 9)
1462+
Bucket=test_bucket,
1463+
ChannelName=channel_name,
1464+
PlaylistName='test.m3u8',
1465+
StartTime=10,
1466+
EndTime=9)
14651467
except Exception as e:
1466-
print e
1468+
pass
14671469

14681470
client.post_vod_playlist(
1469-
Bucket = test_bucket,
1470-
ChannelName = channel_name,
1471-
PlaylistName = 'test.m3u8',
1472-
StartTime = int(time.time()) - 10000,
1473-
EndTime = int(time.time()))
1471+
Bucket=test_bucket,
1472+
ChannelName=channel_name,
1473+
PlaylistName='test.m3u8',
1474+
StartTime=int(time.time()) - 10000,
1475+
EndTime=int(time.time()))
14741476
response = client.head_object(
1475-
Bucket = test_bucket,
1476-
Key = channel_name + '/test.m3u8')
1477-
assert(response)
1477+
Bucket=test_bucket,
1478+
Key=channel_name + '/test.m3u8')
1479+
assert (response)
14781480

1479-
print ("delete live channel...")
1481+
print("delete live channel...")
14801482
response = client.delete_live_channel(Bucket=test_bucket, ChannelName=channel_name)
1481-
assert(response)
1483+
assert (response)
14821484

14831485
if __name__ == "__main__":
14841486
setUp()

0 commit comments

Comments
 (0)