Permalink
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up
Switch branches/tags
758
1048
1189-delete-collab-with-team-video
1986
GH-2695
GH2571
activity-prep
activity-speedup
activity
activity2
add-travis-ci-status-image
ajax-form-cleanup
amara-enterprise-97
amara-enterprise-120
amara-enterprise-513
amara-enterprise-gh-91
analytics
angular-1.2.9
api-auth-for-uploads
api-last-bits
api-refactor
api-work
apidocs
applock-timeout
better-indexing
billing-management
billing-update
billing
billingfixes
brightcove
caching
cielo-demo
collab-activity
dbtuning2
dbtuning4
delete-travis.yml
deleted-account-display
demo-creation
dev-commands
dev
django-1.4.13
django-1.4.20
django-1.7
django-1.11
django17prep
doc-test
docker-dev-updates
docker-dev
docker-support
docker-tests
docs
doctest
documentation
editor-and-workflows
editor-changes
editor-fixes
editor-notes
editor-review-with-actions
editor-shift-preview
editor-title-override
editor-view-refactor
editor-workflow-actions
editor-workflow
evaluation-teams
evan-test
experimental-editor
feed-updates
fig
figupdates
font-weights
futureapi
futureui
gh-237
gh-251
gh-395
gh-449
gh-452
gh-463
gh-479
gh-483
gh-489
gh-514
gh-529
gh-548
gh-593
gh-692
gh-696
gh-700-try2
gh-700
gh-720
gh-722
gh-726
gh-727
gh-731
gh-735
gh-742
gh-751
gh-779
gh-780
gh-784
gh-787
gh-797
gh-800
gh-812
gh-823
gh-825-try2
gh-826
gh-829
gh-831
gh-838-prep
gh-838
gh-842
gh-843
gh-850
gh-851
gh-855
gh-856
gh-873
gh-874
gh-882
gh-892
gh-903
gh-913
gh-915
gh-919
gh-920
gh-929
gh-931
gh-935
gh-937
gh-944-fix
gh-944
gh-951
gh-959
gh-965
gh-970
gh-982
gh-984
gh-986-refix
gh-986
gh-993
gh-995
gh-997
gh-1008
gh-1015
gh-1022
gh-1026
gh-1031
gh-1043
gh-1046
gh-1048-unisubs
gh-1050
gh-1054
gh-1060
gh-1071
gh-1080
gh-1099
gh-1111
gh-1115
gh-1121
gh-1124
gh-1125
gh-1133
gh-1138
gh-1144
gh-1146
gh-1158
gh-1168
gh-1171
gh-1187
gh-1189
gh-1195
gh-1196
gh-1200-unisubs
gh-1202
gh-1204
gh-1206
gh-1208
gh-1215
gh-1216
gh-1217
gh-1219
gh-1222
gh-1223
gh-1228
gh-1229-retry
gh-1231
gh-1241
gh-1244
gh-1251
gh-1253
gh-1254-enterprise
gh-1254
gh-1255
gh-1271
gh-1273
gh-1274
gh-1291
gh-1293
gh-1295
gh-1309
gh-1310
gh-1314
gh-1315
gh-1316
gh-1319
gh-1320
gh-1321
gh-1322
gh-1323
gh-1324
gh-1325
gh-1329
gh-1330-fix
gh-1330
gh-1332
gh-1334
gh-1336
gh-1342
gh-1343
gh-1344
gh-1345-debug
gh-1345
gh-1347
gh-1348
gh-1356
gh-1357
gh-1358
gh-1362
gh-1363
gh-1374
gh-1376
gh-1377
gh-1379
gh-1380
gh-1381
gh-1387
gh-1388
gh-1391
gh-1392
gh-1393
gh-1394
gh-1395
gh-1397
gh-1408
gh-1411
gh-1418
gh-1419
gh-1425
gh-1455
gh-1456
gh-1458
gh-1459
gh-1461
gh-1463
gh-1466
gh-1476
gh-1477
gh-1478
gh-1480
gh-1481
gh-1482
gh-1486
gh-1488-prep
gh-1488
gh-1490
gh-1495
gh-1502
gh-1505
gh-1511
gh-1519
gh-1525
gh-1526
gh-1528
gh-1529
gh-1530
gh-1532
gh-1533
gh-1535
gh-1537
gh-1539
gh-1542
gh-1545
gh-1553
gh-1558
gh-1560
gh-1563
gh-1566
gh-1573
gh-1574
gh-1576
gh-1580
gh-1585
gh-1586
gh-1587
gh-1593
gh-1605
gh-1610
gh-1612
gh-1619
gh-1622-prod
gh-1622
gh-1623
gh-1634
gh-1643
gh-1651
gh-1666
gh-1673
gh-1678
gh-1686
gh-1691
gh-1706
gh-1713
gh-1715
gh-1719
gh-1724
gh-1735
gh-1739
gh-1743
gh-1745
gh-1748
gh-1750
gh-1752
gh-1756
gh-1757-alternate
gh-1757
gh-1760
gh-1763
gh-1765
gh-1766
gh-1768
gh-1769
gh-1779
gh-1783
gh-1791
gh-1794
gh-1797
gh-1807
gh-1810
gh-1811
gh-1815
gh-1829
gh-1837
gh-1839
gh-1842
gh-1843
gh-1845
gh-1846
gh-1848
gh-1852
gh-1853
gh-1858
gh-1866
gh-1870
gh-1873
gh-1879
gh-1881
gh-1883
gh-1887
gh-1890
gh-1891
gh-1893
gh-1897
gh-1899
gh-1902
gh-1909
gh-1923
gh-1932
gh-1933
gh-1935
gh-1936
gh-1937
gh-1944
gh-1950
gh-1960
gh-1961
gh-1962
gh-1965
gh-1966
gh-1968
gh-1969-refactor
gh-1969
gh-1975
gh-1981
gh-1997
gh-2017
gh-2028
gh-2029
gh-2030
gh-2044
gh-2047-alt
gh-2047
gh-2051
gh-2058
gh-2060
gh-2062
gh-2067
gh-2073
gh-2076
gh-2079
gh-2081
gh-2083
gh-2089
gh-2092
gh-2102
gh-2112
gh-2114
gh-2117
gh-2126
gh-2127
gh-2128
gh-2137-prep
gh-2137-stage1
gh-2137-stage2
gh-2137-stage3
gh-2137-stage4
gh-2146
gh-2148
gh-2150
gh-2153
gh-2157
gh-2160
gh-2162
gh-2166
gh-2167
gh-2168
gh-2171
gh-2181
gh-2188
gh-2189
gh-2198
gh-2199
gh-2210
gh-2212
gh-2218
gh-2223
gh-2227
gh-2228
gh-2229
gh-2235
gh-2236
gh-2248-alt
gh-2248-indexes
gh-2248
gh-2251
gh-2252
gh-2267
gh-2270
gh-2276
gh-2277
gh-2280
gh-2285
gh-2293
gh-2296
gh-2308
gh-2320
gh-2324
gh-2327
gh-2328
gh-2347
gh-2353
gh-2362
gh-2367-try2
gh-2367
gh-2375
gh-2376
gh-2384
gh-2386
gh-2388
gh-2390
gh-2398
gh-2401
gh-2409
gh-2418
gh-2419
gh-2426
gh-2427
gh-2429
gh-2436
gh-2445
gh-2447
gh-2448
gh-2456
gh-2458
gh-2461
gh-2471
gh-2475
gh-2482
gh-2484
gh-2485
gh-2507
gh-2511
gh-2518
gh-2520-retry
gh-2520
gh-2523
gh-2531
gh-2537
gh-2540
gh-2542
gh-2555
gh-2579
gh-2592
gh-2593
gh-2594
gh-2602
gh-2612
gh-2624-redo
gh-2624
gh-2632
gh-2633
gh-2637
gh-2638
gh-2659
gh-2664
gh-2689
gh-2693
gh-2699
gh-2710
gh-2712
gh-2716
gh-2720
gh-2730
gh-2745
gh-2754
gh-2770
gh-2857
gh-2859
gh-2885
gh-2897
gh-2951
gh-2966
gh-2994
gh-3010
gh-3023
gh-3029
gh-3042
gh-3059-stage1
gh-3059-stage2
gh-3075
gh-3081
gh-3086
gh-3093
gh-3118
gh-3141
gh-3150
gh-3162
gh-3164
gh-3170
gh-3187
gh-3270
gh-3316
gh-3320
gh-3331
gh-3334
gh-3335
gh-3342
gh-3356-stage1
gh-3356-stage2
gh-3356-stage3
gh-3362
gh-3397
gh-3421
gh-amara-enterprise-117
gh-amara-enterprise-123
gh-amara-enterprise-124
gh-amara-enterprise-144
gh-amara-enterprise-146
gh-amara-enterprise-152
gh-amara-enterprise-160
gh-amara-enterprise-238
gh-amara-enterprise-243
gh-amara-enterprise-353
gh-amara-enterprise-379
gh-amara-enterprise-400
gh-amara-enterprise-408
gh-amara-enterprise-431
gh-amara-enterprise-433
gh-amara-enterprise-459
gh-amara-enterprise-462
gh-amara-enterprise-485
gh-amara-enterprise-504
gh-amara-enterprise-505
gh-amara-enterprise-509
gh-amara-enterprise-553
gh-amara-enterprise-574
gh-amara-enterprise-575
gh-amara-enterprise-580
gh-amara-enterprise-598
gh-amara-enterprise-630
gh-amara-enterprise-633
gh-amara-enterprise-687
gh-amara-enterprise-729
gh-amara-enterprise-768
gh-amara-enterprise-782
gh-amara-enterprise-876
gh-amara-enterprise-962
gh-amara-enterprise-1133
gh-amara-enterprise-1139-prep
gh-amara-enterprise-1139
gh-amara-enterprise-1208
gh-amara-enterprise-1225
gh-amara-enterprise-1345
gh-e-129
gh-enterprise-236
gh-enterprise-291
gh-enterprise-351
gh-enterprise-413-revamp
gh-enterprise-484
gh-enterprise-502
gh-enterprise-511
gh-enterprise-530
gh-enterprise-542
gh-enterprise-549
gh-enterprise-564
gh-enterprise-568
gh-enterprise-594
gh-enterprise-607
gh-enterprise-627
gh-enterprise-648-revamp
gh-enterprise-648
gh-enterprise-651
gh-enterprise-663
gh-enterprise-674
gh-enterprise-746
gh-enterprise-765-redo
gh-enterprise-765
gh-enterprise-784
gh-enterprise-801
gh-enterprise-851
gh-enterprise-853
gh-enterprise-868
gh-enterprise-886
gh-enterprise-908
gh-enterprise-915
gh-enterprise-919
gh-enterprise-966
gh-enterprise-980
gh-enterprise-994
gh-enterprise-1041
gh-enterprise-1044
gh-enterprise-1066
gh-enterprise-1069
gh-enterprise-1070
gh-enterprise-1098
gh-enterprise-1108
gh-enterprise-1114
gh-enterprise-1115
gh-enterprise-1116
gh-enterprise-1119-proposal
gh-enterprise-1122
gh-enterprise-1132
gh-enterprise-1135
gh-enterprise-1142
gh-enterprise-1146
gh-enterprise-1147
gh-enterprise-1151
gh-enterprise-1152
gh-enterprise-1155
gh-enterprise-1156
gh-enterprise-1159
gh-enterprise-1160-devfix
gh-enterprise-1160
gh-enterprise-1166
gh-enterprise-1171
gh-enterprise-1197
gh-enterprise-1202
gh-enterprise-1210
gh-enterprise-1216
gh-enterprise-1219
gh-enterprise-1221
gh-enterprise-1223
gh-enterprise-1226
gh-enterprise-1242
gh-enterprise-1244
gh-enterprise-1246
gh-enterprise-1258
gh-enterprise-1266
gh-enterprise-1269
gh-enterprise-1270
gh-enterprise-1273
gh-enterprise-1276
gh-enterprise-1279
gh-enterprise-1284
gh-enterprise-1288
gh-enterprise-1293
gh-enterprise-1300
gh-enterprise-1307
gh-enterprise-1316
gh-enterprise-1320
gh-enterprise-1329
gh-enterprise-1353
gh-enterprise-1355
gh-enterprise-1367
gh-enterprise-1381
gh-enterprise-1388
gh-enterprise-1395
gh-enterprise-1409
gh-enterprise-1437
gh-enterprise-1438
gh-enterprise-1456
gh-enterprise-1457
gh-enterprise-1477
gh-enterprise-1478
gh-enterprise-1479
gh-enterprise-1488
gh-enterprise-1491
gh-enterprise-1495
gh-enterprise-1496
gh-enterprise-1511
gh-enterprise-1512
gh-enterprise-1514
gh-enterprise-1519
gh-enterprise-1520
gh-enterprise-1524
gh-enterprise-1525
gh-enterprise-1534
gh-enterprise-1541
gh-enterprise-1544
gh-enterprise-1546
gh-enterprise-1550
gh-enterprise-1555
gh-enterprise-1561
gh-enterprise-1566
gh-enterprise-1567
gh-enterprise-1586
gh-enterprise-1590
gh-enterprise-1597
gh-enterprise-1601
gh-enterprise-1604
gh-enterprise-1607
gh-enterprise-1612
gh-enterprise-1614
gh-enterprise-1615
gh-enterprise-1619
gh-enterprise-1624
gh-enterprise-1627
gh-enterprise-1629
gh-enterprise-1636
gh-enterprise-1638
gh-enterprise-1648
gh-enterprise-1653
gh-enterprise-1656
gh-enterprise-1663
gh-enterprise-1664
gh-enterprise-1665
gh-enterprise-1670
gh-enterprise-1674
gh-enterprise-1684
gh-enterprise-1690
gh-enterprise-1691
gh-enterprise-1695
gh-enterprise-1697
gh-enterprise-1724
gh-enterprise-1725
gh-enterprise-1739
gh-enterprise-1741
gh-enterprise-1742
gh-enterprise-1746
gh-enterprise-1747
gh-enterprise-1756
gh-enterprise-1760
gh-enterprise-1763-try2
gh-enterprise-1763
gh-enterprise-1775
gh-enterprise-1779
gh-enterprise-1784
gh-enterprise-1798
gh-enterprise-1806
gh-enterprise-1812
gh-enterprise-1819
gh-enterprise-1821
gh-enterprise-1827
gh-enterprise-1831
gh-enterprise-1832
gh-enterprise-1842
gh-enterprise-1854
gh-enterprise-1856
gh-enterprise-1862
gh-enterprise-1866
gh-enterprise-1877
gh-enterprise-1878
gh-enterprise-1879
gh-enterprise-1880
gh-enterprise-1881
gh-enterprise-1894
gh-enterprise-1900
gh-enterprise-1904
gh-enterprise-1905
gh-enterprise-1907
gh-enterprise-1930
gh-enterprise-1931
gh-enterprise-1949
gh-enterprise-1953
gh-enterprise-1956
gh-enterprise-1961
gh-enterprise-1962
gh-enterprise-1969
gh-enterprise-1971-stage1
gh-enterprise-1971-stage2
gh-enterprise-1974
gh-enterprise-1981
gh-enterprise-1984
gh-enterprise-1986
gh-enterprise-1999
gh-enterprise-2000
gh-enterprise-2001
gh-enterprise-2011
gh-enterprise-2012
gh-enterprise-2014
gh-enterprise-2024
gh-enterprise-2030
gh-enterprise-2055
gh-enterprise-2077
gh-enterprise-2113
gh-enterprise-2841
gh-enterprise-2860
gh-enterprise-2973
gh-enterprise-3130
gh-unisubs-2496
gh-unisubs-2591
gh-unisubs-2732
gh-unisubs-2734
gh-unisubs-2739
gh-unisubs-2760
gh-unisubs-2767-redo
gh-unisubs-2767
gh-unisubs-2782
gh-unisubs-2799
gh-unisubs-2800-redo
gh-unisubs-2830
gh-unisubs-2843
gh-unisubs-2848
gh-unisubs-2868
gh-unisubs-2873
gh-unisubs-2874
gh-unisubs-2886
gh-unisubs-2891
gh-unisubs-2925
gh-unisubs-2957
gh-unisubs-2961
gh-unisubs-2982
gh-unisubs-2998
gh-unisubs-3004
gh-unisubs-3020-redo
gh-unisubs-3020
gh-unisubs-3210
gh-unisubs-3241
gh-unisubs-3256
gh-unisubs-3276
gh-unisubs-3287
gh-unisubs-3317
gh-unisubs-3332
gh-unisubs-3333
gh-unisubs-3337
google-login-scope
google-open-id-connect
homepage-dean
homepage-rework
i-1217
i-1935
i-2106
i-2124
i-2135
i-2334
i-2564
import-cleanup
infrastructure
language-code-choices
legacy
locking-fix
logging-error
marketing-page-merge
memory-debug
merge-optional-repos
more-api-changes
more-team-activity-changes
new-api-switchover
new-api-video-urls
new-collab-page
new-deploy
new-dev-deploy
new-editor-primary-1043
new-editor-primary-1274
new-editor-primary-1300
new-editor-primary-1302
new-editor-primary-staging
new-editor-primary
new-provider-queues
new-team-api
new-teams-styles
new-teams-ui
new-teams-ui2
newapi
newmedia
notes-refactor
old-api-docs
on-demand-collab
open-teams-and-ted-api-tweak
optional-app-deploy
optionalappsettings
pr-2617
preview-dbs
prod-test
production
projects-and-languages
prorequests-and-workflows
provider-queue-update
rate-limit-feed-updates
redis
remove-unisubs-package
revert-2669-gh-2637
revert-2698-gh-251
revisions-page
search-index-tweak
simple-workflow
speedup-frontpage
speedup-general
speedup-team-activity
speedup-team-activity2
speedup-team-member-admin
speedup-teams-list
speedup-user-dashboard
speedup-writelock
split-up-test-utils
ssl-issue
staging-memory-debug
staging-tranlation-strings
staging-wsgi-fix
staging
statistics-refactor
subtitle-download-permissions
subtitle-upload-form
subtitle-version-admin-speedup
syncing-docs
syncing-triggers
syncing-triggers2
syncing
team-workflows
ted-api-changes
ted-phase3-messages-conversion
ted-phase3-messages-inbox
ted-phase3-messages
ted-phase3
thumbnail-size
translation-fix
travis-yml-config-file
unicode-url-fix
unpublishing
update-quick-start
vagrant-fusion
video-language-code-display
video-url-api-fix
video-view-permissions
wd-updates-01
webdriver-fig
workflow-refactor
x-1663
x-2227
x-evantest
x-leaderboard
x-rq
x-testdata
youtube-callback-tweak
youtube-import-fix
youtube-tweaks
Nothing to show
x-tern-base
v1.0
pre-dmr
deploy-2018-02-06
deploy-2018-01-31
deploy-2018-01-24
deploy-2018-01-23
deploy-2018-01-18
deploy-2018-01-10
deploy-2018-01-03
deploy-2017-12-07
deploy-2017-11-22
deploy-2017-11-13
deploy-2017-11-13-2
deploy-2017-11-01
deploy-2017-10-17
deploy-2017-10-17-try2
deploy-2017-10-10
deploy-2017-09-27
deploy-2017-09-22
deploy-2017-09-22-2
deploy-2017-09-21
deploy-2017-09-21-2
deploy-2017-09-19
deploy-2017-09-18
deploy-2017-09-05
deploy-2017-09-01
deploy-2017-09-01-2
deploy-2017-08-10
deploy-2017-07-27
deploy-2017-07-16
deploy-2017-06-22
deploy-2017-06-22-2
deploy-2017-06-17
deploy-2017-06-16
deploy-2017-05-17
deploy-2017-05-03
deploy-2017-04-27
deploy-2017-04-17
deploy-2017-04-10
deploy-2017-04-03
deploy-2017-04-03-2
deploy-2017-03-30
deploy-2017-03-28
deploy-2017-03-22
deploy-2017-03-15
deploy-2017-03-09
deploy-2017-03-06
deploy-2017-03-03
deploy-2017-03-01
deploy-2017-02-22
deploy-2017-02-14
deploy-2017-01-31
deploy-2017-01-25
deploy-2017-01-13
deploy-2016-12-21
deploy-2016-11-29
deploy-2016-11-16
deploy-2016-11-16-2
deploy-2016-11-01
deploy-2016-10-27
deploy-2016-10-24
deploy-2016-10-21
deploy-2016-10-21-5
deploy-2016-10-21-2
deploy-2016-10-19
deploy-2016-10-14
deploy-2016-10-12
deploy-2016-10-11
deploy-2016-09-29
deploy-2016-09-28
deploy-2016-08-04
deploy-2016-08-03
deploy-2016-08-03-try2
deploy-2016-07-20
deploy-2016-07-06
deploy-2016-06-15
deploy-2016-06-07
deploy-2016-05-25
deploy-2016-05-24
deploy-2016-05-20
deploy-2016-05-19
deploy-2016-05-19-2
deploy-2016-05-12
deploy-2016-04-26
deploy-2016-04-20
deploy-2016-04-18
deploy-2016-04-15
deploy-2016-04-14
deploy-2016-04-13.2
deploy-2016-04-13
deploy-2016-04-07
deploy-2016-04-01
deploy-2016-03-30
1.1.9
1.1.7
1.1.6
1.0.1
0.9.12
0.9.11
Nothing to show
Find file
Copy path
Fetching contributors…
Cannot retrieve contributors at this time.
Cannot retrieve contributors at this time
| # Amara, universalsubtitles.org | |
| # | |
| # Copyright (C) 2013 Participatory Culture Foundation | |
| # | |
| # This program is free software: you can redistribute it and/or modify | |
| # it under the terms of the GNU Affero General Public License as | |
| # published by the Free Software Foundation, either version 3 of the | |
| # License, or (at your option) any later version. | |
| # | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU Affero General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU Affero General Public License | |
| # along with this program. If not, see | |
| # http://www.gnu.org/licenses/agpl-3.0.html. | |
| """externalsites.syncing.kaltura -- Sync subtitles to/from kaltura""" | |
| from xml.dom import minidom | |
| import requests | |
| from externalsites.exceptions import SyncingError | |
| from externalsites.syncing.kaltura_languages import KalturaLanguageMap | |
| KALTURA_API_URL = 'http://www.kaltura.com/api_v3/' | |
| SESSION_TYPE_USER = 0 | |
| SESSION_TYPE_ADMIN = 2 | |
| CAPTION_TYPE_DFXP = 2 | |
| CAPTION_TYPE_SRT = 1 | |
| CAPTION_TYPE_WEBVTT = 3 | |
| # partnerData value we set for subtitles that we've synced | |
| PARTNER_DATA_TAG = 'synced-from-amara' | |
| def _node_text(node): | |
| return ''.join(child.nodeValue | |
| for child in node.childNodes | |
| if child.nodeType == child.TEXT_NODE) | |
| def _find_child(node, tag_name): | |
| return node.getElementsByTagName(tag_name)[0] | |
| def _has_child(node, tag_name): | |
| return len(node.getElementsByTagName(tag_name)) > 0 | |
| def _check_error(result): | |
| """Checks if we had an error result.""" | |
| if _has_child(result, 'error'): | |
| error = _find_child(result, 'error') | |
| code = _node_text(_find_child(error, 'code')) | |
| message = _node_text(_find_child(error, 'message')) | |
| raise SyncingError("%s: %s" % (code, message)) | |
| def _make_request(service, action, data): | |
| params = { 'service': service, 'action': action, } | |
| response = requests.post(KALTURA_API_URL, params=params, data=data) | |
| dom = minidom.parseString(response.content) | |
| try: | |
| result = _find_child(dom, 'result') | |
| except IndexError: | |
| return None | |
| _check_error(result) | |
| return result | |
| def _start_session(partner_id, secret): | |
| result = _make_request('session', 'start', { | |
| 'secret': secret, | |
| 'partnerId': partner_id, | |
| 'type': SESSION_TYPE_ADMIN, | |
| }) | |
| return _node_text(result) | |
| def _end_session(ks): | |
| _make_request('session', 'end', { 'ks': ks }) | |
| def _find_existing_captionset(ks, video_id, language_code): | |
| language = KalturaLanguageMap.get_name(language_code) | |
| result = _make_request('caption_captionasset', 'list', { | |
| 'ks': ks, | |
| 'filter:entryIdEqual': video_id, | |
| }) | |
| objects = _find_child(result, 'objects') | |
| for item in objects.getElementsByTagName('item'): | |
| partner_data = _find_child(item, 'partnerData') | |
| language_node = _find_child(item, 'language') | |
| if (_node_text(partner_data) == PARTNER_DATA_TAG and | |
| _node_text(language_node) == language): | |
| return _node_text(_find_child(item, 'id')) | |
| return None | |
| def _add_captions(ks, video_id, language_code): | |
| language = KalturaLanguageMap.get_name(language_code) | |
| result = _make_request('caption_captionasset', 'add', { | |
| 'ks': ks, | |
| 'entryId': video_id, | |
| 'captionAsset:language': language, | |
| 'captionAsset:partnerData': PARTNER_DATA_TAG, | |
| 'captionAsset:format': CAPTION_TYPE_SRT, | |
| 'captionAsset:fileExt': 'srt', | |
| }) | |
| return _node_text(_find_child(result, 'id')) | |
| def _update_caption_content(ks, caption_id, sub_data): | |
| _make_request('caption_captionasset', 'setcontent', { | |
| 'ks': ks, | |
| 'id': caption_id, | |
| 'contentResource:objectType': 'KalturaStringResource', | |
| 'contentResource:content': sub_data, | |
| }) | |
| def _delete_captions(ks, caption_id): | |
| _make_request('caption_captionasset', 'delete', { | |
| 'ks': ks, | |
| 'captionAssetId': caption_id, | |
| }) | |
| def update_subtitles(partner_id, secret, video_id, language_code, | |
| srt_data): | |
| ks = _start_session(partner_id, secret) | |
| try: | |
| caption_id = _find_existing_captionset(ks, video_id, language_code) | |
| if caption_id is None: | |
| caption_id = _add_captions(ks, video_id, language_code) | |
| _update_caption_content(ks, caption_id, srt_data) | |
| finally: | |
| _end_session(ks) | |
| def delete_subtitles(partner_id, secret, video_id, language_code): | |
| ks = _start_session(partner_id, secret) | |
| try: | |
| caption_id = _find_existing_captionset(ks, video_id, language_code) | |
| if caption_id is not None: | |
| _delete_captions(ks, caption_id) | |
| finally: | |
| _end_session(ks) |
Copy lines Copy link - View git blame
- Open new issue