unified-video-framework 1.4.250 → 1.4.252
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unified-video-framework",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.252",
|
|
4
4
|
"description": "Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more",
|
|
5
5
|
"main": "packages/core/dist/index.js",
|
|
6
6
|
"types": "packages/core/dist/index.d.ts",
|
|
@@ -116,11 +116,14 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
116
116
|
private onYouTubePlayerStateChange;
|
|
117
117
|
private updateYouTubeUI;
|
|
118
118
|
private onYouTubePlayerError;
|
|
119
|
+
private getYouTubeVideoTitle;
|
|
120
|
+
private getYouTubeVideoTitleFromOEmbed;
|
|
119
121
|
private youtubeTimeTrackingInterval;
|
|
120
122
|
private youtubeAvailableQualities;
|
|
121
123
|
private youtubeCurrentQuality;
|
|
122
124
|
private extractYouTubeAvailableQualities;
|
|
123
125
|
private setYouTubeQuality;
|
|
126
|
+
private updateQualityBadge;
|
|
124
127
|
private startYouTubeTimeTracking;
|
|
125
128
|
private updateYouTubeProgressBar;
|
|
126
129
|
protected loadScript(src: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -853,6 +853,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
853
853
|
}
|
|
854
854
|
this.updateMetadataUI();
|
|
855
855
|
await this.createYouTubePlayer(videoId);
|
|
856
|
+
setTimeout(() => {
|
|
857
|
+
this.updateMetadataUI();
|
|
858
|
+
}, 1000);
|
|
856
859
|
this.debugLog('✅ YouTube video loaded successfully');
|
|
857
860
|
this.debugLog('YouTube video title:', metadata.title);
|
|
858
861
|
}
|
|
@@ -951,6 +954,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
951
954
|
this.youtubePlayer.mute();
|
|
952
955
|
}
|
|
953
956
|
this.extractYouTubeAvailableQualities();
|
|
957
|
+
this.getYouTubeVideoTitle();
|
|
958
|
+
setTimeout(() => {
|
|
959
|
+
this.updateMetadataUI();
|
|
960
|
+
this.updateSettingsMenu();
|
|
961
|
+
}, 500);
|
|
954
962
|
}
|
|
955
963
|
this.startYouTubeTimeTracking();
|
|
956
964
|
this.emit('onReady');
|
|
@@ -987,6 +995,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
987
995
|
case window.YT.PlayerState.CUED:
|
|
988
996
|
this.state.duration = this.youtubePlayer.getDuration();
|
|
989
997
|
this.updateYouTubeUI('cued');
|
|
998
|
+
setTimeout(() => {
|
|
999
|
+
this.getYouTubeVideoTitle();
|
|
1000
|
+
}, 100);
|
|
990
1001
|
break;
|
|
991
1002
|
}
|
|
992
1003
|
}
|
|
@@ -1037,6 +1048,46 @@ export class WebPlayer extends BasePlayer {
|
|
|
1037
1048
|
details: { errorCode }
|
|
1038
1049
|
});
|
|
1039
1050
|
}
|
|
1051
|
+
getYouTubeVideoTitle() {
|
|
1052
|
+
if (!this.youtubePlayer || !this.youtubePlayerReady)
|
|
1053
|
+
return;
|
|
1054
|
+
try {
|
|
1055
|
+
const videoData = this.youtubePlayer.getVideoData();
|
|
1056
|
+
if (videoData && videoData.title) {
|
|
1057
|
+
this.debugLog('Got YouTube title from player API:', videoData.title);
|
|
1058
|
+
if (this.source && this.source.metadata) {
|
|
1059
|
+
this.source.metadata.title = videoData.title;
|
|
1060
|
+
}
|
|
1061
|
+
this.updateMetadataUI();
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
catch (error) {
|
|
1065
|
+
this.debugWarn('Could not get YouTube video title from API:', error);
|
|
1066
|
+
this.getYouTubeVideoTitleFromOEmbed();
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1069
|
+
async getYouTubeVideoTitleFromOEmbed() {
|
|
1070
|
+
if (!this.source?.metadata?.videoId)
|
|
1071
|
+
return;
|
|
1072
|
+
try {
|
|
1073
|
+
const videoId = this.source.metadata.videoId;
|
|
1074
|
+
const oembedUrl = `https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json`;
|
|
1075
|
+
const response = await fetch(oembedUrl);
|
|
1076
|
+
if (response.ok) {
|
|
1077
|
+
const data = await response.json();
|
|
1078
|
+
if (data.title) {
|
|
1079
|
+
this.debugLog('Got YouTube title from oembed API:', data.title);
|
|
1080
|
+
if (this.source && this.source.metadata) {
|
|
1081
|
+
this.source.metadata.title = data.title;
|
|
1082
|
+
}
|
|
1083
|
+
this.updateMetadataUI();
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
catch (error) {
|
|
1088
|
+
this.debugWarn('Could not get YouTube title from oembed API:', error);
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1040
1091
|
extractYouTubeAvailableQualities() {
|
|
1041
1092
|
if (!this.youtubePlayer)
|
|
1042
1093
|
return;
|
|
@@ -1071,6 +1122,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
1071
1122
|
this.debugWarn('Could not get current YouTube quality:', e);
|
|
1072
1123
|
this.youtubeCurrentQuality = qualityMap['auto'];
|
|
1073
1124
|
}
|
|
1125
|
+
this.updateQualityBadge();
|
|
1074
1126
|
this.updateSettingsMenu();
|
|
1075
1127
|
}
|
|
1076
1128
|
catch (error) {
|
|
@@ -1106,6 +1158,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
1106
1158
|
this.showNotification(`Quality set to ${qualityMap[currentQuality]?.label || currentQuality} (YouTube optimized)`);
|
|
1107
1159
|
this.debugLog('⚠️ Requested quality:', qualityLevel, '| Actual quality:', currentQuality, '(YouTube may have optimized)');
|
|
1108
1160
|
}
|
|
1161
|
+
this.updateQualityBadge();
|
|
1109
1162
|
this.updateSettingsMenu();
|
|
1110
1163
|
}
|
|
1111
1164
|
catch (verifyError) {
|
|
@@ -1118,6 +1171,23 @@ export class WebPlayer extends BasePlayer {
|
|
|
1118
1171
|
this.showNotification('Quality control limited on YouTube');
|
|
1119
1172
|
}
|
|
1120
1173
|
}
|
|
1174
|
+
updateQualityBadge() {
|
|
1175
|
+
const qualityBadge = document.getElementById('uvf-quality-badge');
|
|
1176
|
+
if (!qualityBadge)
|
|
1177
|
+
return;
|
|
1178
|
+
if (this.youtubePlayer && this.youtubePlayerReady && this.youtubeCurrentQuality) {
|
|
1179
|
+
qualityBadge.textContent = this.youtubeCurrentQuality.label || 'AUTO';
|
|
1180
|
+
this.debugLog('Updated quality badge for YouTube:', this.youtubeCurrentQuality.label);
|
|
1181
|
+
}
|
|
1182
|
+
else if (this.currentQualityIndex >= 0 && this.qualities[this.currentQualityIndex]) {
|
|
1183
|
+
const quality = this.qualities[this.currentQualityIndex];
|
|
1184
|
+
qualityBadge.textContent = quality.label || 'HD';
|
|
1185
|
+
this.debugLog('Updated quality badge for standard video:', quality.label);
|
|
1186
|
+
}
|
|
1187
|
+
else {
|
|
1188
|
+
qualityBadge.textContent = 'AUTO';
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1121
1191
|
startYouTubeTimeTracking() {
|
|
1122
1192
|
if (this.youtubeTimeTrackingInterval) {
|
|
1123
1193
|
clearInterval(this.youtubeTimeTrackingInterval);
|
|
@@ -1151,12 +1221,18 @@ export class WebPlayer extends BasePlayer {
|
|
|
1151
1221
|
const progressHandle = document.getElementById('uvf-progress-handle');
|
|
1152
1222
|
if (progressHandle && !this.isDragging) {
|
|
1153
1223
|
progressHandle.style.left = percent + '%';
|
|
1224
|
+
progressHandle.classList.remove('dragging');
|
|
1154
1225
|
}
|
|
1155
1226
|
const progressBuffered = document.getElementById('uvf-progress-buffered');
|
|
1156
1227
|
if (progressBuffered) {
|
|
1157
1228
|
progressBuffered.style.width = buffered + '%';
|
|
1158
1229
|
}
|
|
1159
|
-
|
|
1230
|
+
const timeDisplay = document.getElementById('uvf-time-display');
|
|
1231
|
+
if (timeDisplay) {
|
|
1232
|
+
const currentTimeStr = this.formatTime(currentTime);
|
|
1233
|
+
const durationStr = this.formatTime(duration);
|
|
1234
|
+
timeDisplay.textContent = `${currentTimeStr} / ${durationStr}`;
|
|
1235
|
+
}
|
|
1160
1236
|
}
|
|
1161
1237
|
loadScript(src) {
|
|
1162
1238
|
return new Promise((resolve, reject) => {
|
|
@@ -1491,12 +1567,27 @@ export class WebPlayer extends BasePlayer {
|
|
|
1491
1567
|
updateTimeTooltip(e) {
|
|
1492
1568
|
const progressBar = document.getElementById('uvf-progress-bar');
|
|
1493
1569
|
const tooltip = document.getElementById('uvf-time-tooltip');
|
|
1494
|
-
if (!progressBar || !tooltip
|
|
1570
|
+
if (!progressBar || !tooltip)
|
|
1571
|
+
return;
|
|
1572
|
+
let duration = 0;
|
|
1573
|
+
if (this.youtubePlayer && this.youtubePlayerReady) {
|
|
1574
|
+
try {
|
|
1575
|
+
duration = this.youtubePlayer.getDuration() || 0;
|
|
1576
|
+
}
|
|
1577
|
+
catch (error) {
|
|
1578
|
+
this.debugWarn('Error getting YouTube duration for tooltip:', error);
|
|
1579
|
+
return;
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
else if (this.video) {
|
|
1583
|
+
duration = this.video.duration || 0;
|
|
1584
|
+
}
|
|
1585
|
+
if (!duration || !isFinite(duration))
|
|
1495
1586
|
return;
|
|
1496
1587
|
const rect = progressBar.getBoundingClientRect();
|
|
1497
1588
|
const x = Math.max(0, Math.min(e.clientX - rect.left, rect.width));
|
|
1498
1589
|
const percent = (x / rect.width);
|
|
1499
|
-
const time = percent *
|
|
1590
|
+
const time = percent * duration;
|
|
1500
1591
|
tooltip.textContent = this.formatTime(time);
|
|
1501
1592
|
tooltip.style.left = `${x}px`;
|
|
1502
1593
|
tooltip.classList.add('visible');
|
|
@@ -5971,7 +6062,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
5971
6062
|
const qualityBadge = document.createElement('div');
|
|
5972
6063
|
qualityBadge.className = 'uvf-quality-badge';
|
|
5973
6064
|
qualityBadge.id = 'uvf-quality-badge';
|
|
5974
|
-
qualityBadge.textContent = '
|
|
6065
|
+
qualityBadge.textContent = 'AUTO';
|
|
5975
6066
|
rightControls.appendChild(qualityBadge);
|
|
5976
6067
|
this.debugLog('Settings config check:', this.settingsConfig);
|
|
5977
6068
|
this.debugLog('Settings enabled:', this.settingsConfig.enabled);
|
|
@@ -7085,11 +7176,27 @@ export class WebPlayer extends BasePlayer {
|
|
|
7085
7176
|
const progressBar = document.querySelector('.uvf-progress-bar');
|
|
7086
7177
|
const progressFilled = document.getElementById('uvf-progress-filled');
|
|
7087
7178
|
const progressHandle = document.getElementById('uvf-progress-handle');
|
|
7088
|
-
if (!progressBar
|
|
7179
|
+
if (!progressBar)
|
|
7089
7180
|
return;
|
|
7090
|
-
|
|
7181
|
+
let duration = 0;
|
|
7182
|
+
if (this.youtubePlayer && this.youtubePlayerReady) {
|
|
7183
|
+
try {
|
|
7184
|
+
duration = this.youtubePlayer.getDuration() || 0;
|
|
7185
|
+
}
|
|
7186
|
+
catch (error) {
|
|
7187
|
+
this.debugWarn('Error getting YouTube duration for seeking:', error);
|
|
7188
|
+
return;
|
|
7189
|
+
}
|
|
7190
|
+
}
|
|
7191
|
+
else if (this.video) {
|
|
7192
|
+
duration = this.video.duration;
|
|
7193
|
+
}
|
|
7194
|
+
else {
|
|
7195
|
+
this.debugWarn('No video source available for seeking');
|
|
7196
|
+
return;
|
|
7197
|
+
}
|
|
7091
7198
|
if (!isFinite(duration) || isNaN(duration) || duration <= 0) {
|
|
7092
|
-
this.debugWarn('Invalid video duration, cannot seek via progress bar');
|
|
7199
|
+
this.debugWarn('Invalid video duration, cannot seek via progress bar:', duration);
|
|
7093
7200
|
return;
|
|
7094
7201
|
}
|
|
7095
7202
|
const rect = progressBar.getBoundingClientRect();
|
|
@@ -7100,19 +7207,18 @@ export class WebPlayer extends BasePlayer {
|
|
|
7100
7207
|
this.debugWarn('Calculated seek time is invalid:', time);
|
|
7101
7208
|
return;
|
|
7102
7209
|
}
|
|
7103
|
-
|
|
7210
|
+
this.debugLog('Seeking to position:', time, 'seconds (', Math.round(percent), '%)');
|
|
7211
|
+
if (progressFilled && !this.isDragging) {
|
|
7104
7212
|
progressFilled.style.width = percent + '%';
|
|
7105
7213
|
}
|
|
7106
|
-
if (progressHandle) {
|
|
7214
|
+
if (progressHandle && !this.isDragging) {
|
|
7107
7215
|
progressHandle.style.left = percent + '%';
|
|
7108
|
-
|
|
7109
|
-
progressHandle.classList.add('dragging');
|
|
7110
|
-
}
|
|
7111
|
-
else {
|
|
7112
|
-
progressHandle.classList.remove('dragging');
|
|
7113
|
-
}
|
|
7216
|
+
progressHandle.classList.add('dragging');
|
|
7114
7217
|
}
|
|
7115
7218
|
this.seek(time);
|
|
7219
|
+
if (this.youtubePlayer && this.youtubePlayerReady) {
|
|
7220
|
+
this.emit('onSeeking');
|
|
7221
|
+
}
|
|
7116
7222
|
}
|
|
7117
7223
|
formatTime(seconds) {
|
|
7118
7224
|
if (!seconds || isNaN(seconds))
|
|
@@ -7941,6 +8047,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
7941
8047
|
option.classList.add('active');
|
|
7942
8048
|
}
|
|
7943
8049
|
});
|
|
8050
|
+
const qualityBadge = document.getElementById('uvf-quality-badge');
|
|
8051
|
+
if (qualityBadge) {
|
|
8052
|
+
const qualityOption = this.youtubeAvailableQualities.find(q => q.value === quality);
|
|
8053
|
+
qualityBadge.textContent = qualityOption ? qualityOption.label : 'AUTO';
|
|
8054
|
+
}
|
|
7944
8055
|
return;
|
|
7945
8056
|
}
|
|
7946
8057
|
const qualityBadge = document.getElementById('uvf-quality-badge');
|
|
@@ -8316,7 +8427,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
8316
8427
|
}
|
|
8317
8428
|
detectAvailableQualities() {
|
|
8318
8429
|
const isYouTube = this.youtubePlayer && this.youtubePlayerReady && this.youtubeAvailableQualities.length > 0;
|
|
8319
|
-
this.availableQualities =
|
|
8430
|
+
this.availableQualities = [];
|
|
8320
8431
|
let detectedQualities = [];
|
|
8321
8432
|
if (isYouTube) {
|
|
8322
8433
|
detectedQualities = this.youtubeAvailableQualities.map(q => ({
|
|
@@ -8325,6 +8436,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
8325
8436
|
height: q.height
|
|
8326
8437
|
}));
|
|
8327
8438
|
this.debugLog('Using YouTube qualities:', detectedQualities);
|
|
8439
|
+
this.availableQualities = detectedQualities;
|
|
8440
|
+
return;
|
|
8328
8441
|
}
|
|
8329
8442
|
else if (this.hls && this.hls.levels) {
|
|
8330
8443
|
this.hls.levels.forEach((level, index) => {
|