unified-video-framework 1.4.251 → 1.4.253
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.253",
|
|
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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"}
|
|
@@ -954,6 +954,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
954
954
|
this.youtubePlayer.mute();
|
|
955
955
|
}
|
|
956
956
|
this.extractYouTubeAvailableQualities();
|
|
957
|
+
this.getYouTubeVideoTitle();
|
|
957
958
|
setTimeout(() => {
|
|
958
959
|
this.updateMetadataUI();
|
|
959
960
|
this.updateSettingsMenu();
|
|
@@ -970,6 +971,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
970
971
|
this.state.isPaused = false;
|
|
971
972
|
this.state.isBuffering = false;
|
|
972
973
|
this.updateYouTubeUI('playing');
|
|
974
|
+
setTimeout(() => {
|
|
975
|
+
this.extractYouTubeAvailableQualities();
|
|
976
|
+
}, 1000);
|
|
973
977
|
this.emit('onPlay');
|
|
974
978
|
break;
|
|
975
979
|
case window.YT.PlayerState.PAUSED:
|
|
@@ -982,6 +986,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
982
986
|
case window.YT.PlayerState.BUFFERING:
|
|
983
987
|
this.state.isBuffering = true;
|
|
984
988
|
this.updateYouTubeUI('buffering');
|
|
989
|
+
setTimeout(() => {
|
|
990
|
+
this.extractYouTubeAvailableQualities();
|
|
991
|
+
}, 500);
|
|
985
992
|
this.emit('onBuffering', true);
|
|
986
993
|
break;
|
|
987
994
|
case window.YT.PlayerState.ENDED:
|
|
@@ -994,6 +1001,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
994
1001
|
case window.YT.PlayerState.CUED:
|
|
995
1002
|
this.state.duration = this.youtubePlayer.getDuration();
|
|
996
1003
|
this.updateYouTubeUI('cued');
|
|
1004
|
+
setTimeout(() => {
|
|
1005
|
+
this.getYouTubeVideoTitle();
|
|
1006
|
+
}, 100);
|
|
997
1007
|
break;
|
|
998
1008
|
}
|
|
999
1009
|
}
|
|
@@ -1044,12 +1054,63 @@ export class WebPlayer extends BasePlayer {
|
|
|
1044
1054
|
details: { errorCode }
|
|
1045
1055
|
});
|
|
1046
1056
|
}
|
|
1047
|
-
|
|
1048
|
-
if (!this.youtubePlayer)
|
|
1057
|
+
getYouTubeVideoTitle() {
|
|
1058
|
+
if (!this.youtubePlayer || !this.youtubePlayerReady)
|
|
1059
|
+
return;
|
|
1060
|
+
try {
|
|
1061
|
+
const videoData = this.youtubePlayer.getVideoData();
|
|
1062
|
+
if (videoData && videoData.title) {
|
|
1063
|
+
this.debugLog('Got YouTube title from player API:', videoData.title);
|
|
1064
|
+
if (this.source && this.source.metadata) {
|
|
1065
|
+
this.source.metadata.title = videoData.title;
|
|
1066
|
+
}
|
|
1067
|
+
this.updateMetadataUI();
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
catch (error) {
|
|
1071
|
+
this.debugWarn('Could not get YouTube video title from API:', error);
|
|
1072
|
+
this.getYouTubeVideoTitleFromOEmbed();
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
async getYouTubeVideoTitleFromOEmbed() {
|
|
1076
|
+
if (!this.source?.metadata?.videoId)
|
|
1049
1077
|
return;
|
|
1078
|
+
try {
|
|
1079
|
+
const videoId = this.source.metadata.videoId;
|
|
1080
|
+
const oembedUrl = `https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json`;
|
|
1081
|
+
const response = await fetch(oembedUrl);
|
|
1082
|
+
if (response.ok) {
|
|
1083
|
+
const data = await response.json();
|
|
1084
|
+
if (data.title) {
|
|
1085
|
+
this.debugLog('Got YouTube title from oembed API:', data.title);
|
|
1086
|
+
if (this.source && this.source.metadata) {
|
|
1087
|
+
this.source.metadata.title = data.title;
|
|
1088
|
+
}
|
|
1089
|
+
this.updateMetadataUI();
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1093
|
+
catch (error) {
|
|
1094
|
+
this.debugWarn('Could not get YouTube title from oembed API:', error);
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
extractYouTubeAvailableQualities(retryCount = 0) {
|
|
1098
|
+
if (!this.youtubePlayer || !this.youtubePlayerReady) {
|
|
1099
|
+
this.debugLog('YouTube player not ready for quality extraction');
|
|
1100
|
+
return;
|
|
1101
|
+
}
|
|
1050
1102
|
try {
|
|
1051
1103
|
const availableQualityLevels = this.youtubePlayer.getAvailableQualityLevels();
|
|
1052
|
-
this.debugLog('YouTube
|
|
1104
|
+
this.debugLog('🔍 YouTube quality detection attempt', retryCount + 1, '- Found levels:', availableQualityLevels);
|
|
1105
|
+
this.debugLog('🔍 YouTube player state:', this.youtubePlayer.getPlayerState());
|
|
1106
|
+
this.debugLog('🔍 Current YouTube quality:', this.youtubePlayer.getPlaybackQuality());
|
|
1107
|
+
if ((!availableQualityLevels || availableQualityLevels.length === 0 || (availableQualityLevels.length === 1 && availableQualityLevels[0] === 'auto')) && retryCount < 5) {
|
|
1108
|
+
this.debugLog('No meaningful qualities detected, retrying in', (retryCount + 1) * 1000, 'ms...');
|
|
1109
|
+
setTimeout(() => {
|
|
1110
|
+
this.extractYouTubeAvailableQualities(retryCount + 1);
|
|
1111
|
+
}, (retryCount + 1) * 1000);
|
|
1112
|
+
return;
|
|
1113
|
+
}
|
|
1053
1114
|
const qualityMap = {
|
|
1054
1115
|
'hd1080': { label: '1080p', value: 'hd1080', height: 1080 },
|
|
1055
1116
|
'hd720': { label: '720p', value: 'hd720', height: 720 },
|
|
@@ -1060,15 +1121,19 @@ export class WebPlayer extends BasePlayer {
|
|
|
1060
1121
|
'auto': { label: 'Auto', value: 'auto', height: 0 }
|
|
1061
1122
|
};
|
|
1062
1123
|
this.youtubeAvailableQualities = [];
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1124
|
+
this.youtubeAvailableQualities.push({ label: 'Auto', value: 'auto', height: 0 });
|
|
1125
|
+
if (availableQualityLevels && availableQualityLevels.length > 0) {
|
|
1126
|
+
availableQualityLevels.forEach((qualityLevel) => {
|
|
1127
|
+
if (qualityLevel !== 'auto' && qualityMap[qualityLevel]) {
|
|
1128
|
+
this.youtubeAvailableQualities.push(qualityMap[qualityLevel]);
|
|
1129
|
+
}
|
|
1130
|
+
});
|
|
1131
|
+
const autoQuality = this.youtubeAvailableQualities.shift();
|
|
1132
|
+
this.youtubeAvailableQualities.sort((a, b) => (b.height || 0) - (a.height || 0));
|
|
1133
|
+
if (autoQuality)
|
|
1134
|
+
this.youtubeAvailableQualities.unshift(autoQuality);
|
|
1135
|
+
}
|
|
1136
|
+
this.debugLog('✅ Successfully mapped YouTube qualities:', this.youtubeAvailableQualities);
|
|
1072
1137
|
try {
|
|
1073
1138
|
const currentQuality = this.youtubePlayer.getPlaybackQuality();
|
|
1074
1139
|
this.youtubeCurrentQuality = qualityMap[currentQuality] || qualityMap['auto'];
|
|
@@ -1078,10 +1143,21 @@ export class WebPlayer extends BasePlayer {
|
|
|
1078
1143
|
this.debugWarn('Could not get current YouTube quality:', e);
|
|
1079
1144
|
this.youtubeCurrentQuality = qualityMap['auto'];
|
|
1080
1145
|
}
|
|
1081
|
-
this.
|
|
1146
|
+
this.detectAvailableQualities();
|
|
1147
|
+
this.debugLog('🚀 YouTube qualities successfully detected! Available qualities now:', this.availableQualities.length);
|
|
1148
|
+
this.updateQualityBadge();
|
|
1149
|
+
setTimeout(() => {
|
|
1150
|
+
this.debugLog('🔄 Force refreshing settings menu with YouTube qualities');
|
|
1151
|
+
this.updateSettingsMenu();
|
|
1152
|
+
}, 100);
|
|
1082
1153
|
}
|
|
1083
1154
|
catch (error) {
|
|
1084
1155
|
this.debugWarn('Could not extract YouTube qualities:', error);
|
|
1156
|
+
if (retryCount < 3) {
|
|
1157
|
+
setTimeout(() => {
|
|
1158
|
+
this.extractYouTubeAvailableQualities(retryCount + 1);
|
|
1159
|
+
}, 2000);
|
|
1160
|
+
}
|
|
1085
1161
|
}
|
|
1086
1162
|
}
|
|
1087
1163
|
setYouTubeQuality(qualityLevel) {
|
|
@@ -1113,6 +1189,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
1113
1189
|
this.showNotification(`Quality set to ${qualityMap[currentQuality]?.label || currentQuality} (YouTube optimized)`);
|
|
1114
1190
|
this.debugLog('⚠️ Requested quality:', qualityLevel, '| Actual quality:', currentQuality, '(YouTube may have optimized)');
|
|
1115
1191
|
}
|
|
1192
|
+
this.updateQualityBadge();
|
|
1116
1193
|
this.updateSettingsMenu();
|
|
1117
1194
|
}
|
|
1118
1195
|
catch (verifyError) {
|
|
@@ -1125,10 +1202,28 @@ export class WebPlayer extends BasePlayer {
|
|
|
1125
1202
|
this.showNotification('Quality control limited on YouTube');
|
|
1126
1203
|
}
|
|
1127
1204
|
}
|
|
1205
|
+
updateQualityBadge() {
|
|
1206
|
+
const qualityBadge = document.getElementById('uvf-quality-badge');
|
|
1207
|
+
if (!qualityBadge)
|
|
1208
|
+
return;
|
|
1209
|
+
if (this.youtubePlayer && this.youtubePlayerReady && this.youtubeCurrentQuality) {
|
|
1210
|
+
qualityBadge.textContent = this.youtubeCurrentQuality.label || 'AUTO';
|
|
1211
|
+
this.debugLog('Updated quality badge for YouTube:', this.youtubeCurrentQuality.label);
|
|
1212
|
+
}
|
|
1213
|
+
else if (this.currentQualityIndex >= 0 && this.qualities[this.currentQualityIndex]) {
|
|
1214
|
+
const quality = this.qualities[this.currentQualityIndex];
|
|
1215
|
+
qualityBadge.textContent = quality.label || 'HD';
|
|
1216
|
+
this.debugLog('Updated quality badge for standard video:', quality.label);
|
|
1217
|
+
}
|
|
1218
|
+
else {
|
|
1219
|
+
qualityBadge.textContent = 'AUTO';
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1128
1222
|
startYouTubeTimeTracking() {
|
|
1129
1223
|
if (this.youtubeTimeTrackingInterval) {
|
|
1130
1224
|
clearInterval(this.youtubeTimeTrackingInterval);
|
|
1131
1225
|
}
|
|
1226
|
+
let qualityCheckCounter = 0;
|
|
1132
1227
|
this.youtubeTimeTrackingInterval = setInterval(() => {
|
|
1133
1228
|
if (this.youtubePlayer && this.youtubePlayerReady) {
|
|
1134
1229
|
try {
|
|
@@ -1138,6 +1233,12 @@ export class WebPlayer extends BasePlayer {
|
|
|
1138
1233
|
this.state.currentTime = currentTime || 0;
|
|
1139
1234
|
this.state.duration = duration || 0;
|
|
1140
1235
|
this.state.bufferedPercentage = buffered || 0;
|
|
1236
|
+
qualityCheckCounter++;
|
|
1237
|
+
if (qualityCheckCounter >= 40 && this.youtubeAvailableQualities.length <= 1) {
|
|
1238
|
+
this.debugLog('Periodic YouTube quality check triggered');
|
|
1239
|
+
this.extractYouTubeAvailableQualities();
|
|
1240
|
+
qualityCheckCounter = 0;
|
|
1241
|
+
}
|
|
1141
1242
|
this.updateYouTubeProgressBar(currentTime, duration, buffered);
|
|
1142
1243
|
this.emit('onTimeUpdate', this.state.currentTime);
|
|
1143
1244
|
this.emit('onProgress', this.state.bufferedPercentage);
|
|
@@ -1504,12 +1605,27 @@ export class WebPlayer extends BasePlayer {
|
|
|
1504
1605
|
updateTimeTooltip(e) {
|
|
1505
1606
|
const progressBar = document.getElementById('uvf-progress-bar');
|
|
1506
1607
|
const tooltip = document.getElementById('uvf-time-tooltip');
|
|
1507
|
-
if (!progressBar || !tooltip
|
|
1608
|
+
if (!progressBar || !tooltip)
|
|
1609
|
+
return;
|
|
1610
|
+
let duration = 0;
|
|
1611
|
+
if (this.youtubePlayer && this.youtubePlayerReady) {
|
|
1612
|
+
try {
|
|
1613
|
+
duration = this.youtubePlayer.getDuration() || 0;
|
|
1614
|
+
}
|
|
1615
|
+
catch (error) {
|
|
1616
|
+
this.debugWarn('Error getting YouTube duration for tooltip:', error);
|
|
1617
|
+
return;
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
else if (this.video) {
|
|
1621
|
+
duration = this.video.duration || 0;
|
|
1622
|
+
}
|
|
1623
|
+
if (!duration || !isFinite(duration))
|
|
1508
1624
|
return;
|
|
1509
1625
|
const rect = progressBar.getBoundingClientRect();
|
|
1510
1626
|
const x = Math.max(0, Math.min(e.clientX - rect.left, rect.width));
|
|
1511
1627
|
const percent = (x / rect.width);
|
|
1512
|
-
const time = percent *
|
|
1628
|
+
const time = percent * duration;
|
|
1513
1629
|
tooltip.textContent = this.formatTime(time);
|
|
1514
1630
|
tooltip.style.left = `${x}px`;
|
|
1515
1631
|
tooltip.classList.add('visible');
|
|
@@ -5984,7 +6100,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
5984
6100
|
const qualityBadge = document.createElement('div');
|
|
5985
6101
|
qualityBadge.className = 'uvf-quality-badge';
|
|
5986
6102
|
qualityBadge.id = 'uvf-quality-badge';
|
|
5987
|
-
qualityBadge.textContent = '
|
|
6103
|
+
qualityBadge.textContent = 'AUTO';
|
|
5988
6104
|
rightControls.appendChild(qualityBadge);
|
|
5989
6105
|
this.debugLog('Settings config check:', this.settingsConfig);
|
|
5990
6106
|
this.debugLog('Settings enabled:', this.settingsConfig.enabled);
|
|
@@ -8274,11 +8390,13 @@ export class WebPlayer extends BasePlayer {
|
|
|
8274
8390
|
</div>`;
|
|
8275
8391
|
}
|
|
8276
8392
|
if (this.settingsConfig.quality && this.availableQualities.length > 0) {
|
|
8393
|
+
this.debugLog('🎛️ Building quality menu with', this.availableQualities.length, 'qualities:', this.availableQualities.map(q => q.label));
|
|
8277
8394
|
const qualityForDisplay = this.youtubePlayer && this.youtubePlayerReady && this.youtubeCurrentQuality
|
|
8278
8395
|
? this.youtubeCurrentQuality.value
|
|
8279
8396
|
: this.currentQuality;
|
|
8280
8397
|
const currentQuality = this.availableQualities.find(q => q.value === qualityForDisplay);
|
|
8281
8398
|
const currentQualityLabel = currentQuality ? currentQuality.label : 'Auto';
|
|
8399
|
+
this.debugLog('🎛️ Current quality for display:', qualityForDisplay, '(', currentQualityLabel, ')');
|
|
8282
8400
|
menuHTML += `
|
|
8283
8401
|
<div class="uvf-accordion-item">
|
|
8284
8402
|
<div class="uvf-accordion-header" data-section="quality">
|