myetv-player 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/css/myetv-player.css +7 -2
- package/css/myetv-player.min.css +1 -1
- package/dist/myetv-player.js +200 -59
- package/dist/myetv-player.min.js +152 -34
- package/package.json +2 -1
- package/plugins/soundcloud/myetv-player-soundcloud-plugin.js +927 -0
- package/plugins/soundcloud/readme.md +89 -0
- package/plugins/youtube/myetv-player-youtube-plugin.js +83 -125
package/dist/myetv-player.min.js
CHANGED
|
@@ -23,7 +23,9 @@ class VideoPlayerI18n {
|
|
|
23
23
|
'prev_video': 'Video precedente (P)',
|
|
24
24
|
'playlist_next': 'Avanti',
|
|
25
25
|
'playlist_prev': 'Indietro',
|
|
26
|
-
'settings_menu': 'Impostazioni'
|
|
26
|
+
'settings_menu': 'Impostazioni',
|
|
27
|
+
'loading': 'Caricamento...',
|
|
28
|
+
'encoding_in_progress': 'Encoding in corso'
|
|
27
29
|
},
|
|
28
30
|
|
|
29
31
|
'en': {
|
|
@@ -44,7 +46,9 @@ class VideoPlayerI18n {
|
|
|
44
46
|
'prev_video': 'Previous video (P)',
|
|
45
47
|
'playlist_next': 'Next',
|
|
46
48
|
'playlist_prev': 'Previous',
|
|
47
|
-
'settings_menu': 'Settings'
|
|
49
|
+
'settings_menu': 'Settings',
|
|
50
|
+
'loading': 'Loading...',
|
|
51
|
+
'encoding_in_progress': 'Encoding in progress'
|
|
48
52
|
},
|
|
49
53
|
|
|
50
54
|
'es': {
|
|
@@ -65,7 +69,9 @@ class VideoPlayerI18n {
|
|
|
65
69
|
'prev_video': 'Vídeo anterior (P)',
|
|
66
70
|
'playlist_next': 'Siguiente',
|
|
67
71
|
'playlist_prev': 'Anterior',
|
|
68
|
-
'settings_menu': 'Configuración'
|
|
72
|
+
'settings_menu': 'Configuración',
|
|
73
|
+
'loading': 'Cargando...',
|
|
74
|
+
'encoding_in_progress': 'Codificación en curso'
|
|
69
75
|
},
|
|
70
76
|
|
|
71
77
|
'fr': {
|
|
@@ -78,7 +84,7 @@ class VideoPlayerI18n {
|
|
|
78
84
|
'volume': 'Volume',
|
|
79
85
|
'playback_speed': 'Vitesse de lecture',
|
|
80
86
|
'video_quality': 'Qualité vidéo',
|
|
81
|
-
'picture_in_picture': 'Image dans l
|
|
87
|
+
'picture_in_picture': 'Image dans l\'image(P)',
|
|
82
88
|
'fullscreen': 'Plein écran (F)',
|
|
83
89
|
'auto': 'Auto',
|
|
84
90
|
'brand_logo': 'Logo de marque',
|
|
@@ -86,7 +92,9 @@ class VideoPlayerI18n {
|
|
|
86
92
|
'prev_video': 'Vidéo précédente (P)',
|
|
87
93
|
'playlist_next': 'Suivant',
|
|
88
94
|
'playlist_prev': 'Précédent',
|
|
89
|
-
'settings_menu': 'Paramètres'
|
|
95
|
+
'settings_menu': 'Paramètres',
|
|
96
|
+
'loading': 'Chargement...',
|
|
97
|
+
'encoding_in_progress': 'Encodage en cours'
|
|
90
98
|
},
|
|
91
99
|
|
|
92
100
|
'de': {
|
|
@@ -107,7 +115,9 @@ class VideoPlayerI18n {
|
|
|
107
115
|
'prev_video': 'Vorheriges Video (P)',
|
|
108
116
|
'playlist_next': 'Weiter',
|
|
109
117
|
'playlist_prev': 'Zurück',
|
|
110
|
-
'settings_menu': 'Einstellungen'
|
|
118
|
+
'settings_menu': 'Einstellungen',
|
|
119
|
+
'loading': 'Laden...',
|
|
120
|
+
'encoding_in_progress': 'Kodierung läuft'
|
|
111
121
|
},
|
|
112
122
|
|
|
113
123
|
'pt': {
|
|
@@ -128,7 +138,9 @@ class VideoPlayerI18n {
|
|
|
128
138
|
'prev_video': 'Vídeo anterior (P)',
|
|
129
139
|
'playlist_next': 'Próximo',
|
|
130
140
|
'playlist_prev': 'Anterior',
|
|
131
|
-
'settings_menu': 'Configurações'
|
|
141
|
+
'settings_menu': 'Configurações',
|
|
142
|
+
'loading': 'Carregando...',
|
|
143
|
+
'encoding_in_progress': 'Codificação em andamento'
|
|
132
144
|
},
|
|
133
145
|
|
|
134
146
|
'zh': {
|
|
@@ -149,7 +161,9 @@ class VideoPlayerI18n {
|
|
|
149
161
|
'prev_video': '上一个视频 (P)',
|
|
150
162
|
'playlist_next': '下一个',
|
|
151
163
|
'playlist_prev': '上一个',
|
|
152
|
-
'settings_menu': '设置'
|
|
164
|
+
'settings_menu': '设置',
|
|
165
|
+
'loading': '加载中...',
|
|
166
|
+
'encoding_in_progress': '编码中'
|
|
153
167
|
},
|
|
154
168
|
|
|
155
169
|
'ja': {
|
|
@@ -170,7 +184,9 @@ class VideoPlayerI18n {
|
|
|
170
184
|
'prev_video': '前の動画 (P)',
|
|
171
185
|
'playlist_next': '次へ',
|
|
172
186
|
'playlist_prev': '前へ',
|
|
173
|
-
'settings_menu': '設定'
|
|
187
|
+
'settings_menu': '設定',
|
|
188
|
+
'loading': '読み込み中...',
|
|
189
|
+
'encoding_in_progress': 'エンコード中'
|
|
174
190
|
},
|
|
175
191
|
|
|
176
192
|
'ru': {
|
|
@@ -191,7 +207,9 @@ class VideoPlayerI18n {
|
|
|
191
207
|
'prev_video': 'Предыдущее видео (P)',
|
|
192
208
|
'playlist_next': 'Далее',
|
|
193
209
|
'playlist_prev': 'Назад',
|
|
194
|
-
'settings_menu': 'Настройки'
|
|
210
|
+
'settings_menu': 'Настройки',
|
|
211
|
+
'loading': 'Загрузка...',
|
|
212
|
+
'encoding_in_progress': 'Кодирование'
|
|
195
213
|
},
|
|
196
214
|
|
|
197
215
|
'ar': {
|
|
@@ -212,7 +230,9 @@ class VideoPlayerI18n {
|
|
|
212
230
|
'prev_video': 'الفيديو السابق (P)',
|
|
213
231
|
'playlist_next': 'التالي',
|
|
214
232
|
'playlist_prev': 'السابق',
|
|
215
|
-
'settings_menu': 'الإعدادات'
|
|
233
|
+
'settings_menu': 'الإعدادات',
|
|
234
|
+
'loading': 'جاري التحميل...',
|
|
235
|
+
'encoding_in_progress': 'الترميز جارٍ'
|
|
216
236
|
},
|
|
217
237
|
|
|
218
238
|
'ko': {
|
|
@@ -233,7 +253,9 @@ class VideoPlayerI18n {
|
|
|
233
253
|
'prev_video': '이전 비디오 (P)',
|
|
234
254
|
'playlist_next': '다음',
|
|
235
255
|
'playlist_prev': '이전',
|
|
236
|
-
'settings_menu': '설정'
|
|
256
|
+
'settings_menu': '설정',
|
|
257
|
+
'loading': '로딩 중...',
|
|
258
|
+
'encoding_in_progress': '인코딩 진행 중'
|
|
237
259
|
},
|
|
238
260
|
|
|
239
261
|
'pl': {
|
|
@@ -254,7 +276,9 @@ class VideoPlayerI18n {
|
|
|
254
276
|
'prev_video': 'Poprzednie wideo (P)',
|
|
255
277
|
'playlist_next': 'Dalej',
|
|
256
278
|
'playlist_prev': 'Wstecz',
|
|
257
|
-
'settings_menu': 'Ustawienia'
|
|
279
|
+
'settings_menu': 'Ustawienia',
|
|
280
|
+
'loading': 'Ładowanie...',
|
|
281
|
+
'encoding_in_progress': 'Kodowanie w toku'
|
|
258
282
|
},
|
|
259
283
|
|
|
260
284
|
'hu': {
|
|
@@ -275,7 +299,9 @@ class VideoPlayerI18n {
|
|
|
275
299
|
'prev_video': 'Előző videó (P)',
|
|
276
300
|
'playlist_next': 'Következő',
|
|
277
301
|
'playlist_prev': 'Előző',
|
|
278
|
-
'settings_menu': 'Beállítások'
|
|
302
|
+
'settings_menu': 'Beállítások',
|
|
303
|
+
'loading': 'Betöltés...',
|
|
304
|
+
'encoding_in_progress': 'Kódolás folyamatban'
|
|
279
305
|
},
|
|
280
306
|
|
|
281
307
|
'tr': {
|
|
@@ -296,7 +322,9 @@ class VideoPlayerI18n {
|
|
|
296
322
|
'prev_video': 'Önceki video (P)',
|
|
297
323
|
'playlist_next': 'Sonraki',
|
|
298
324
|
'playlist_prev': 'Önceki',
|
|
299
|
-
'settings_menu': 'Ayarlar'
|
|
325
|
+
'settings_menu': 'Ayarlar',
|
|
326
|
+
'loading': 'Yükleniyor...',
|
|
327
|
+
'encoding_in_progress': 'Kodlama devam ediyor'
|
|
300
328
|
},
|
|
301
329
|
|
|
302
330
|
'nl': {
|
|
@@ -317,7 +345,9 @@ class VideoPlayerI18n {
|
|
|
317
345
|
'prev_video': 'Vorige video (P)',
|
|
318
346
|
'playlist_next': 'Volgende',
|
|
319
347
|
'playlist_prev': 'Vorige',
|
|
320
|
-
'settings_menu': 'Instellingen'
|
|
348
|
+
'settings_menu': 'Instellingen',
|
|
349
|
+
'loading': 'Laden...',
|
|
350
|
+
'encoding_in_progress': 'Codering bezig'
|
|
321
351
|
},
|
|
322
352
|
|
|
323
353
|
'hi': {
|
|
@@ -338,7 +368,9 @@ class VideoPlayerI18n {
|
|
|
338
368
|
'prev_video': 'पिछला वीडियो (P)',
|
|
339
369
|
'playlist_next': 'अगला',
|
|
340
370
|
'playlist_prev': 'पिछला',
|
|
341
|
-
'settings_menu': 'सेटिंग्स'
|
|
371
|
+
'settings_menu': 'सेटिंग्स',
|
|
372
|
+
'loading': 'लोड हो रहा है...',
|
|
373
|
+
'encoding_in_progress': 'एन्कोडिंग प्रगति में'
|
|
342
374
|
},
|
|
343
375
|
|
|
344
376
|
'sv': {
|
|
@@ -359,7 +391,9 @@ class VideoPlayerI18n {
|
|
|
359
391
|
'prev_video': 'Föregående video (P)',
|
|
360
392
|
'playlist_next': 'Nästa',
|
|
361
393
|
'playlist_prev': 'Föregående',
|
|
362
|
-
'settings_menu': 'Inställningar'
|
|
394
|
+
'settings_menu': 'Inställningar',
|
|
395
|
+
'loading': 'Laddar...',
|
|
396
|
+
'encoding_in_progress': 'Kodning pågår'
|
|
363
397
|
},
|
|
364
398
|
|
|
365
399
|
'id': {
|
|
@@ -380,7 +414,9 @@ class VideoPlayerI18n {
|
|
|
380
414
|
'prev_video': 'Video sebelumnya (P)',
|
|
381
415
|
'playlist_next': 'Berikutnya',
|
|
382
416
|
'playlist_prev': 'Sebelumnya',
|
|
383
|
-
'settings_menu': 'Pengaturan'
|
|
417
|
+
'settings_menu': 'Pengaturan',
|
|
418
|
+
'loading': 'Memuat...',
|
|
419
|
+
'encoding_in_progress': 'Encoding sedang berlangsung'
|
|
384
420
|
}
|
|
385
421
|
};
|
|
386
422
|
|
|
@@ -493,7 +529,9 @@ try {
|
|
|
493
529
|
'fullscreen': 'Fullscreen (F)',
|
|
494
530
|
'auto': 'Auto',
|
|
495
531
|
'brand_logo': 'Brand logo',
|
|
496
|
-
'settings_menu': 'Settings'
|
|
532
|
+
'settings_menu': 'Settings',
|
|
533
|
+
'loading': 'Loading...',
|
|
534
|
+
'encoding_in_progress': 'Encoding in progress'
|
|
497
535
|
};
|
|
498
536
|
return fallback[key] || key;
|
|
499
537
|
},
|
|
@@ -802,6 +840,49 @@ constructor(videoElement, options = {}) {
|
|
|
802
840
|
}
|
|
803
841
|
}
|
|
804
842
|
|
|
843
|
+
decodeHTMLEntities(text) {
|
|
844
|
+
if (!text) return '';
|
|
845
|
+
const textarea = document.createElement('textarea');
|
|
846
|
+
textarea.innerHTML = text;
|
|
847
|
+
return textarea.value;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
isFireTV() {
|
|
851
|
+
const ua = navigator.userAgent.toLowerCase();
|
|
852
|
+
return ua.includes('aftm') ||
|
|
853
|
+
ua.includes('aftb') ||
|
|
854
|
+
ua.includes('afts') ||
|
|
855
|
+
ua.includes('aftmm') ||
|
|
856
|
+
ua.includes('aftt');
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
optimizeVideoForFireTV() {
|
|
860
|
+
if (!this.isFireTV() || !this.video) return;
|
|
861
|
+
|
|
862
|
+
if (this.options.debug) {
|
|
863
|
+
console.log('Fire TV detected - applying optimizations');
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
this.video.setAttribute('playsinline', '');
|
|
867
|
+
this.video.setAttribute('webkit-playsinline', '');
|
|
868
|
+
|
|
869
|
+
this.video.style.transform = 'translateZ(0)';
|
|
870
|
+
this.video.style.webkitTransform = 'translateZ(0)';
|
|
871
|
+
this.video.style.backfaceVisibility = 'hidden';
|
|
872
|
+
this.video.style.webkitBackfaceVisibility = 'hidden';
|
|
873
|
+
this.video.style.willChange = 'transform';
|
|
874
|
+
|
|
875
|
+
this.video.addEventListener('loadeddata', () => {
|
|
876
|
+
if (this.options.debug) {
|
|
877
|
+
console.log('Fire TV: Video loaded, forcing repaint');
|
|
878
|
+
}
|
|
879
|
+
this.video.style.display = 'none';
|
|
880
|
+
setTimeout(() => {
|
|
881
|
+
this.video.style.display = 'block';
|
|
882
|
+
}, 10);
|
|
883
|
+
}, { once: true });
|
|
884
|
+
}
|
|
885
|
+
|
|
805
886
|
getPlayerState() {
|
|
806
887
|
return {
|
|
807
888
|
isPlaying: !this.isPaused(),
|
|
@@ -1091,6 +1172,7 @@ createPlayerStructure() {
|
|
|
1091
1172
|
|
|
1092
1173
|
this.container = wrapper;
|
|
1093
1174
|
|
|
1175
|
+
this.optimizeVideoForFireTV();
|
|
1094
1176
|
this.createInitialLoading();
|
|
1095
1177
|
this.createLoadingOverlay();
|
|
1096
1178
|
this.collectVideoQualities();
|
|
@@ -1131,13 +1213,13 @@ createTitleOverlay() {
|
|
|
1131
1213
|
|
|
1132
1214
|
const titleText = document.createElement('h2');
|
|
1133
1215
|
titleText.className = 'title-text';
|
|
1134
|
-
titleText.textContent = this.options.videoTitle || '';
|
|
1216
|
+
titleText.textContent = this.decodeHTMLEntities(this.options.videoTitle) || '';
|
|
1135
1217
|
overlay.appendChild(titleText);
|
|
1136
1218
|
|
|
1137
1219
|
if (this.options.videoSubtitle) {
|
|
1138
1220
|
const subtitleText = document.createElement('p');
|
|
1139
1221
|
subtitleText.className = 'subtitle-text';
|
|
1140
|
-
subtitleText.textContent = this.options.videoSubtitle;
|
|
1222
|
+
subtitleText.textContent = this.decodeHTMLEntities(this.options.videoSubtitle);
|
|
1141
1223
|
overlay.appendChild(subtitleText);
|
|
1142
1224
|
}
|
|
1143
1225
|
|
|
@@ -1192,7 +1274,7 @@ setVideoTitle(title) {
|
|
|
1192
1274
|
if (this.titleOverlay) {
|
|
1193
1275
|
const titleElement = this.titleOverlay.querySelector('.title-text');
|
|
1194
1276
|
if (titleElement) {
|
|
1195
|
-
titleElement.textContent = this.options.videoTitle;
|
|
1277
|
+
titleElement.textContent = this.decodeHTMLEntities(this.options.videoTitle);
|
|
1196
1278
|
}
|
|
1197
1279
|
|
|
1198
1280
|
if (title) {
|
|
@@ -1727,6 +1809,8 @@ updateDuration() {
|
|
|
1727
1809
|
if (this.durationEl && this.video && this.video.duration && !isNaN(this.video.duration)) {
|
|
1728
1810
|
this.durationEl.textContent = this.formatTime(this.video.duration);
|
|
1729
1811
|
}
|
|
1812
|
+
|
|
1813
|
+
this.updateTimeDisplay();
|
|
1730
1814
|
}
|
|
1731
1815
|
|
|
1732
1816
|
changeSpeed(e) {
|
|
@@ -1992,7 +2076,7 @@ switchToVideo(newVideoElement, shouldPlay = false) {
|
|
|
1992
2076
|
if (newTitle && this.options.showTitleOverlay) {
|
|
1993
2077
|
this.options.videoTitle = newTitle;
|
|
1994
2078
|
if (this.titleText) {
|
|
1995
|
-
this.titleText.textContent = newTitle;
|
|
2079
|
+
this.titleText.textContent = this.decodeHTMLEntities(newTitle);
|
|
1996
2080
|
}
|
|
1997
2081
|
}
|
|
1998
2082
|
|
|
@@ -2482,12 +2566,16 @@ addEventListener(eventType, callback) {
|
|
|
2482
2566
|
this.showLoading();
|
|
2483
2567
|
}
|
|
2484
2568
|
|
|
2569
|
+
this.updateTimeDisplay();
|
|
2570
|
+
|
|
2485
2571
|
this.triggerEvent('loadstart');
|
|
2486
2572
|
});
|
|
2487
2573
|
|
|
2488
2574
|
this.video.addEventListener('loadedmetadata', () => {
|
|
2489
2575
|
this.updateDuration();
|
|
2490
2576
|
|
|
2577
|
+
this.updateTimeDisplay();
|
|
2578
|
+
|
|
2491
2579
|
this.triggerEvent('loadedmetadata', {
|
|
2492
2580
|
duration: this.getDuration(),
|
|
2493
2581
|
videoWidth: this.video.videoWidth,
|
|
@@ -2504,6 +2592,8 @@ addEventListener(eventType, callback) {
|
|
|
2504
2592
|
this.hideLoading();
|
|
2505
2593
|
}
|
|
2506
2594
|
|
|
2595
|
+
this.updateTimeDisplay();
|
|
2596
|
+
|
|
2507
2597
|
this.triggerEvent('loadeddata', {
|
|
2508
2598
|
currentTime: this.getCurrentTime()
|
|
2509
2599
|
});
|
|
@@ -2514,12 +2604,26 @@ addEventListener(eventType, callback) {
|
|
|
2514
2604
|
this.hideLoading();
|
|
2515
2605
|
}
|
|
2516
2606
|
|
|
2607
|
+
this.updateTimeDisplay();
|
|
2608
|
+
|
|
2517
2609
|
this.triggerEvent('canplay', {
|
|
2518
2610
|
currentTime: this.getCurrentTime(),
|
|
2519
2611
|
duration: this.getDuration()
|
|
2520
2612
|
});
|
|
2521
2613
|
});
|
|
2522
2614
|
|
|
2615
|
+
this.video.addEventListener('waiting', () => {
|
|
2616
|
+
if (!this.isChangingQuality) {
|
|
2617
|
+
this.showLoading();
|
|
2618
|
+
|
|
2619
|
+
this.updateTimeDisplay();
|
|
2620
|
+
|
|
2621
|
+
this.triggerEvent('waiting', {
|
|
2622
|
+
currentTime: this.getCurrentTime()
|
|
2623
|
+
});
|
|
2624
|
+
}
|
|
2625
|
+
});
|
|
2626
|
+
|
|
2523
2627
|
this.video.addEventListener('progress', () => {
|
|
2524
2628
|
this.updateBuffer();
|
|
2525
2629
|
|
|
@@ -6901,20 +7005,20 @@ getBufferedTime() {
|
|
|
6901
7005
|
} catch (error) {
|
|
6902
7006
|
return 0;
|
|
6903
7007
|
}
|
|
6904
|
-
|
|
7008
|
+
}
|
|
6905
7009
|
|
|
6906
|
-
|
|
7010
|
+
clearTitleTimeout() {
|
|
6907
7011
|
if (this.titleTimeout) {
|
|
6908
7012
|
clearTimeout(this.titleTimeout);
|
|
6909
7013
|
this.titleTimeout = null;
|
|
6910
7014
|
}
|
|
6911
|
-
|
|
7015
|
+
}
|
|
6912
7016
|
|
|
6913
|
-
|
|
7017
|
+
skipTime(seconds) {
|
|
6914
7018
|
if (!this.video || !this.video.duration || this.isChangingQuality) return;
|
|
6915
7019
|
|
|
6916
7020
|
this.video.currentTime = Math.max(0, Math.min(this.video.duration, this.video.currentTime + seconds));
|
|
6917
|
-
|
|
7021
|
+
}
|
|
6918
7022
|
|
|
6919
7023
|
updateTimeDisplay() {
|
|
6920
7024
|
|
|
@@ -6924,20 +7028,34 @@ updateTimeDisplay() {
|
|
|
6924
7028
|
|
|
6925
7029
|
if (this.durationEl && this.video) {
|
|
6926
7030
|
const duration = this.video.duration;
|
|
7031
|
+
const readyState = this.video.readyState;
|
|
7032
|
+
const currentTime = this.video.currentTime;
|
|
7033
|
+
const networkState = this.video.networkState;
|
|
7034
|
+
|
|
7035
|
+
const isInitialBuffering = (readyState < 2 && currentTime === 0) ||
|
|
7036
|
+
(currentTime === 0 && (!duration || duration === 0) && networkState === 2);
|
|
6927
7037
|
|
|
6928
|
-
|
|
7038
|
+
const isDurationInvalid = !duration || isNaN(duration) || !isFinite(duration);
|
|
6929
7039
|
|
|
6930
|
-
|
|
7040
|
+
if (isInitialBuffering) {
|
|
7041
|
+
|
|
7042
|
+
this.durationEl.textContent = t('loading');
|
|
7043
|
+
this.durationEl.classList.remove('encoding-state');
|
|
7044
|
+
this.durationEl.classList.add('loading-state');
|
|
7045
|
+
} else if (isDurationInvalid) {
|
|
7046
|
+
|
|
7047
|
+
this.durationEl.textContent = t('encoding_in_progress');
|
|
7048
|
+
this.durationEl.classList.remove('loading-state');
|
|
6931
7049
|
this.durationEl.classList.add('encoding-state');
|
|
6932
7050
|
} else {
|
|
6933
7051
|
|
|
6934
7052
|
this.durationEl.textContent = this.formatTime(duration);
|
|
6935
|
-
this.durationEl.classList.remove('encoding-state');
|
|
7053
|
+
this.durationEl.classList.remove('encoding-state', 'loading-state');
|
|
6936
7054
|
}
|
|
6937
7055
|
}
|
|
6938
7056
|
}
|
|
6939
7057
|
|
|
6940
|
-
|
|
7058
|
+
formatTime(seconds) {
|
|
6941
7059
|
if (isNaN(seconds) || seconds < 0) return '0:00';
|
|
6942
7060
|
|
|
6943
7061
|
const hours = Math.floor(seconds / 3600);
|
|
@@ -6948,7 +7066,7 @@ updateTimeDisplay() {
|
|
|
6948
7066
|
return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
|
|
6949
7067
|
}
|
|
6950
7068
|
return `${minutes}:${secs.toString().padStart(2, '0')}`;
|
|
6951
|
-
|
|
7069
|
+
}
|
|
6952
7070
|
|
|
6953
7071
|
}
|
|
6954
7072
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "myetv-player",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "MYETV Video Player - Modular HTML5 video player with plugin support for YouTube, Vimeo, Twitch, Facebook, and streaming protocols (HLS/DASH)",
|
|
5
5
|
"main": "dist/myetv-player.js",
|
|
6
6
|
"files": [
|
|
@@ -59,3 +59,4 @@
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
|
|
62
|
+
|