mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
rework media versions to be based on original item id
This commit is contained in:
parent
fd0c1ec8ae
commit
7a9d65a367
10 changed files with 95 additions and 104 deletions
59
ApiClient.js
59
ApiClient.js
|
@ -2191,20 +2191,6 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets a list of all available conrete BaseItem types from the server
|
|
||||||
*/
|
|
||||||
self.getItemTypes = function (options) {
|
|
||||||
|
|
||||||
var url = self.getUrl("Library/ItemTypes", options);
|
|
||||||
|
|
||||||
return self.ajax({
|
|
||||||
type: "GET",
|
|
||||||
url: url,
|
|
||||||
dataType: "json"
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a url for a user image
|
* Constructs a url for a user image
|
||||||
* @param {String} userId
|
* @param {String} userId
|
||||||
|
@ -3805,7 +3791,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
||||||
* @param {String} userId
|
* @param {String} userId
|
||||||
* @param {String} itemId
|
* @param {String} itemId
|
||||||
*/
|
*/
|
||||||
self.reportPlaybackStart = function (userId, itemId, canSeek, queueableMediaTypes) {
|
self.reportPlaybackStart = function (userId, itemId, mediaVersionId, canSeek, queueableMediaTypes) {
|
||||||
|
|
||||||
if (!userId) {
|
if (!userId) {
|
||||||
throw new Error("null userId");
|
throw new Error("null userId");
|
||||||
|
@ -3824,16 +3810,26 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
||||||
|
|
||||||
var msg = [itemId, canSeek, queueableMediaTypes];
|
var msg = [itemId, canSeek, queueableMediaTypes];
|
||||||
|
|
||||||
|
if (mediaVersionId) {
|
||||||
|
msg.push(mediaVersionId);
|
||||||
|
}
|
||||||
|
|
||||||
self.sendWebSocketMessage("PlaybackStart", msg.join('|'));
|
self.sendWebSocketMessage("PlaybackStart", msg.join('|'));
|
||||||
|
|
||||||
deferred.resolveWith(null, []);
|
deferred.resolveWith(null, []);
|
||||||
return deferred.promise();
|
return deferred.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/PlayingItems/" + itemId, {
|
var params = {
|
||||||
CanSeek: canSeek,
|
CanSeek: canSeek,
|
||||||
QueueableMediaTypes: queueableMediaTypes
|
QueueableMediaTypes: queueableMediaTypes
|
||||||
});
|
};
|
||||||
|
|
||||||
|
if (mediaVersionId) {
|
||||||
|
params.mediaVersionId = mediaVersionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
var url = self.getUrl("Users/" + userId + "/PlayingItems/" + itemId, params);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
|
@ -3846,7 +3842,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
||||||
* @param {String} userId
|
* @param {String} userId
|
||||||
* @param {String} itemId
|
* @param {String} itemId
|
||||||
*/
|
*/
|
||||||
self.reportPlaybackProgress = function (userId, itemId, positionTicks, isPaused, isMuted) {
|
self.reportPlaybackProgress = function (userId, itemId, mediaVersionId, positionTicks, isPaused, isMuted) {
|
||||||
|
|
||||||
if (!userId) {
|
if (!userId) {
|
||||||
throw new Error("null userId");
|
throw new Error("null userId");
|
||||||
|
@ -3860,7 +3856,12 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
||||||
|
|
||||||
var deferred = $.Deferred();
|
var deferred = $.Deferred();
|
||||||
|
|
||||||
var msgData = itemId + "|" + (positionTicks == null ? "" : positionTicks) + "|" + (isPaused == null ? "" : isPaused) + "|" + (isMuted == null ? "" : isMuted);
|
var msgData = itemId;
|
||||||
|
|
||||||
|
msgData += "|" + (positionTicks == null ? "" : positionTicks);
|
||||||
|
msgData += "|" + (isPaused == null ? "" : isPaused);
|
||||||
|
msgData += "|" + (isMuted == null ? "" : isMuted);
|
||||||
|
msgData += "|" + (mediaVersionId == null ? "" : mediaVersionId);
|
||||||
|
|
||||||
self.sendWebSocketMessage("PlaybackProgress", msgData);
|
self.sendWebSocketMessage("PlaybackProgress", msgData);
|
||||||
|
|
||||||
|
@ -3877,6 +3878,10 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
||||||
params.positionTicks = positionTicks;
|
params.positionTicks = positionTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mediaVersionId) {
|
||||||
|
params.mediaVersionId = mediaVersionId;
|
||||||
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/PlayingItems/" + itemId + "/Progress", params);
|
var url = self.getUrl("Users/" + userId + "/PlayingItems/" + itemId + "/Progress", params);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
|
@ -3890,7 +3895,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
||||||
* @param {String} userId
|
* @param {String} userId
|
||||||
* @param {String} itemId
|
* @param {String} itemId
|
||||||
*/
|
*/
|
||||||
self.reportPlaybackStopped = function (userId, itemId, positionTicks) {
|
self.reportPlaybackStopped = function (userId, itemId, mediaVersionId, positionTicks) {
|
||||||
|
|
||||||
if (!userId) {
|
if (!userId) {
|
||||||
throw new Error("null userId");
|
throw new Error("null userId");
|
||||||
|
@ -3904,20 +3909,26 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
|
||||||
|
|
||||||
var deferred = $.Deferred();
|
var deferred = $.Deferred();
|
||||||
|
|
||||||
self.sendWebSocketMessage("PlaybackStopped", itemId + "|" + (positionTicks == null ? "" : positionTicks));
|
var msg = itemId;
|
||||||
|
msg += "|" + (positionTicks == null ? "" : positionTicks);
|
||||||
|
msg += "|" + (mediaVersionId == null ? "" : mediaVersionId);
|
||||||
|
|
||||||
|
self.sendWebSocketMessage("PlaybackStopped", msg);
|
||||||
|
|
||||||
deferred.resolveWith(null, []);
|
deferred.resolveWith(null, []);
|
||||||
return deferred.promise();
|
return deferred.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
var params = {
|
var params = {};
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
if (positionTicks) {
|
if (positionTicks) {
|
||||||
params.positionTicks = positionTicks;
|
params.positionTicks = positionTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mediaVersionId) {
|
||||||
|
params.mediaVersionId = mediaVersionId;
|
||||||
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/PlayingItems/" + itemId, params);
|
var url = self.getUrl("Users/" + userId + "/PlayingItems/" + itemId, params);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
|
|
|
@ -866,7 +866,6 @@ a.itemTag:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.mediaInfoStreamType {
|
.mediaInfoStreamType {
|
||||||
font-size: 16px;
|
|
||||||
display: block;
|
display: block;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
@ -874,14 +873,12 @@ a.itemTag:hover {
|
||||||
.mediaInfoAttribute {
|
.mediaInfoAttribute {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 110px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.mediaInfoLabel {
|
.mediaInfoLabel {
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 90px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.posterRibbon {
|
.posterRibbon {
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
#videoControls {
|
#videoControls {
|
||||||
z-index: 99999;
|
z-index: 99999;
|
||||||
padding: 0 20px 10px;
|
padding: 0 20px 5px;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: auto;
|
top: auto;
|
||||||
|
|
|
@ -398,7 +398,8 @@
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio",
|
Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio",
|
||||||
Limit: LibraryBrowser.getDefaultPageSize(),
|
Limit: LibraryBrowser.getDefaultPageSize(),
|
||||||
StartIndex: 0
|
StartIndex: 0,
|
||||||
|
CollapseBoxSetItems: false
|
||||||
};
|
};
|
||||||
|
|
||||||
query = $.extend(query, options || {});
|
query = $.extend(query, options || {});
|
||||||
|
|
|
@ -214,11 +214,7 @@
|
||||||
renderMediaVersions(page, item);
|
renderMediaVersions(page, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
var primaryVersion = (item.MediaVersions || []).filter(function (v) {
|
var chapters = item.Chapters || [];
|
||||||
return v.IsPrimaryVersion;
|
|
||||||
|
|
||||||
})[0];
|
|
||||||
var chapters = primaryVersion ? (primaryVersion.Chapters || []) : [];
|
|
||||||
|
|
||||||
if (!chapters.length) {
|
if (!chapters.length) {
|
||||||
$('#scenesCollapsible', page).hide();
|
$('#scenesCollapsible', page).hide();
|
||||||
|
@ -350,7 +346,7 @@
|
||||||
tabsHtml += '<label for="radioDetails" class="lblDetailTab">Details</label>';
|
tabsHtml += '<label for="radioDetails" class="lblDetailTab">Details</label>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.MediaType == "Audio" || item.MediaType == "Video") {
|
if (item.MediaVersions && item.MediaVersions.length) {
|
||||||
tabsHtml += '<input type="radio" name="radioDetailTab" class="radioDetailTab" id="radioMediaInfo" value="tabMediaInfo">';
|
tabsHtml += '<input type="radio" name="radioDetailTab" class="radioDetailTab" id="radioMediaInfo" value="tabMediaInfo">';
|
||||||
tabsHtml += '<label for="radioMediaInfo" class="lblDetailTab">Media Info</label>';
|
tabsHtml += '<label for="radioMediaInfo" class="lblDetailTab">Media Info</label>';
|
||||||
}
|
}
|
||||||
|
@ -1023,11 +1019,7 @@
|
||||||
function renderScenes(page, item, user, limit) {
|
function renderScenes(page, item, user, limit) {
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
var primaryVersion = (item.MediaVersions || []).filter(function (v) {
|
var chapters = item.Chapters || [];
|
||||||
return v.IsPrimaryVersion;
|
|
||||||
|
|
||||||
})[0];
|
|
||||||
var chapters = primaryVersion ? (primaryVersion.Chapters || []) : [];
|
|
||||||
|
|
||||||
for (var i = 0, length = chapters.length; i < length; i++) {
|
for (var i = 0, length = chapters.length; i < length; i++) {
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
getDefaultPageSize: function () {
|
getDefaultPageSize: function () {
|
||||||
|
|
||||||
var saved = localStorage.getItem('pagesize');
|
var saved = localStorage.getItem('pagesize_');
|
||||||
|
|
||||||
if (saved) {
|
if (saved) {
|
||||||
return parseInt(saved);
|
return parseInt(saved);
|
||||||
|
|
|
@ -207,19 +207,29 @@
|
||||||
|
|
||||||
function getItemCellsHtml(item, headercells) {
|
function getItemCellsHtml(item, headercells) {
|
||||||
|
|
||||||
return headercells.map(function (cell) {
|
var primaryVersion = (item.MediaVersions || []).filter(function (v) {
|
||||||
|
|
||||||
var html = '';
|
|
||||||
html += '<td>';
|
|
||||||
|
|
||||||
var stream;
|
|
||||||
|
|
||||||
var primaryVersion = (item.MediaVersions || []).filter(function(v) {
|
|
||||||
return v.IsPrimaryVersion;
|
return v.IsPrimaryVersion;
|
||||||
})[0] || {};
|
})[0] || {};
|
||||||
|
|
||||||
var mediaStreams = primaryVersion.MediaStreams || [];
|
var mediaStreams = primaryVersion.MediaStreams || [];
|
||||||
|
|
||||||
|
var videoStream = mediaStreams.filter(function (s) {
|
||||||
|
|
||||||
|
return s.Type == 'Video';
|
||||||
|
|
||||||
|
})[0];
|
||||||
|
|
||||||
|
var audioStream = mediaStreams.filter(function (s) {
|
||||||
|
|
||||||
|
return s.Type == 'Audio';
|
||||||
|
|
||||||
|
})[0];
|
||||||
|
|
||||||
|
return headercells.map(function (cell) {
|
||||||
|
|
||||||
|
var html = '';
|
||||||
|
html += '<td>';
|
||||||
|
|
||||||
switch (cell.type || cell.name) {
|
switch (cell.type || cell.name) {
|
||||||
|
|
||||||
case 'Album Artist':
|
case 'Album Artist':
|
||||||
|
@ -264,52 +274,30 @@
|
||||||
}
|
}
|
||||||
case 'Audio':
|
case 'Audio':
|
||||||
{
|
{
|
||||||
stream = mediaStreams.filter(function (s) {
|
if (audioStream) {
|
||||||
|
|
||||||
return s.Type == 'Audio';
|
var name = (audioStream.Codec || '').toUpperCase();
|
||||||
|
html += name == 'DCA' ? (audioStream.Profile || '').toUpperCase() : name;
|
||||||
})[0];
|
|
||||||
|
|
||||||
if (stream) {
|
|
||||||
|
|
||||||
var name = (stream.Codec || '').toUpperCase();
|
|
||||||
html += name == 'DCA' ? (stream.Profile || '').toUpperCase() : name;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'Video':
|
case 'Video':
|
||||||
{
|
{
|
||||||
stream = mediaStreams.filter(function (s) {
|
if (videoStream) {
|
||||||
|
html += (videoStream.Codec || '').toUpperCase();
|
||||||
return s.Type == 'Video';
|
|
||||||
|
|
||||||
})[0];
|
|
||||||
|
|
||||||
if (stream) {
|
|
||||||
html += (stream.Codec || '').toUpperCase();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'Resolution':
|
case 'Resolution':
|
||||||
{
|
{
|
||||||
stream = mediaStreams.filter(function (s) {
|
if (videoStream && videoStream.Width) {
|
||||||
|
html += videoStream.Width + "*" + (videoStream.Height || "-");
|
||||||
return s.Type == 'Video';
|
|
||||||
|
|
||||||
})[0];
|
|
||||||
|
|
||||||
if (stream && stream.Width) {
|
|
||||||
html += stream.Width + "*" + (stream.Height || "-");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'Embedded Image':
|
case 'Embedded Image':
|
||||||
{
|
{
|
||||||
if (mediaStreams.filter(function (s) {
|
if (videoStream) {
|
||||||
|
|
||||||
return s.Type == 'Video';
|
|
||||||
|
|
||||||
}).length) {
|
|
||||||
html += '<div class="libraryReportIndicator clearLibraryReportIndicator"><div class="ui-icon-check ui-btn-icon-notext"></div></div>';
|
html += '<div class="libraryReportIndicator clearLibraryReportIndicator"><div class="ui-icon-check ui-btn-icon-notext"></div></div>';
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -319,7 +319,7 @@
|
||||||
|
|
||||||
var currentTicks = self.getCurrentTicks();
|
var currentTicks = self.getCurrentTicks();
|
||||||
|
|
||||||
var chapters = currentMediaVersion.Chapters || [];
|
var chapters = currentItem.Chapters || [];
|
||||||
|
|
||||||
for (var i = 0, length = chapters.length; i < length; i++) {
|
for (var i = 0, length = chapters.length; i < length; i++) {
|
||||||
|
|
||||||
|
@ -344,7 +344,7 @@
|
||||||
|
|
||||||
if (chapter.ImageTag) {
|
if (chapter.ImageTag) {
|
||||||
|
|
||||||
imgUrl = ApiClient.getImageUrl(currentMediaVersion.ItemId, {
|
imgUrl = ApiClient.getImageUrl(currentItem.Id, {
|
||||||
maxwidth: 200,
|
maxwidth: 200,
|
||||||
tag: chapter.ImageTag,
|
tag: chapter.ImageTag,
|
||||||
type: "Chapter",
|
type: "Chapter",
|
||||||
|
@ -706,7 +706,8 @@
|
||||||
SubtitleStreamIndex: getInitialSubtitleStreamIndex(mediaStreams, user),
|
SubtitleStreamIndex: getInitialSubtitleStreamIndex(mediaStreams, user),
|
||||||
AudioStreamIndex: getInitialAudioStreamIndex(mediaStreams, user),
|
AudioStreamIndex: getInitialAudioStreamIndex(mediaStreams, user),
|
||||||
deviceId: ApiClient.deviceId(),
|
deviceId: ApiClient.deviceId(),
|
||||||
Static: false
|
Static: false,
|
||||||
|
mediaVersionId: mediaVersion.Id
|
||||||
};
|
};
|
||||||
|
|
||||||
var mp4Quality = getVideoQualityOptions(mediaStreams).filter(function (opt) {
|
var mp4Quality = getVideoQualityOptions(mediaStreams).filter(function (opt) {
|
||||||
|
@ -733,7 +734,7 @@
|
||||||
|
|
||||||
var seekParam = isStatic && startPosition ? '#t=' + (startPosition / 10000000) : '';
|
var seekParam = isStatic && startPosition ? '#t=' + (startPosition / 10000000) : '';
|
||||||
|
|
||||||
var mp4VideoUrl = ApiClient.getUrl('Videos/' + mediaVersion.ItemId + '/stream.mp4', $.extend({}, baseParams, {
|
var mp4VideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/stream.mp4', $.extend({}, baseParams, {
|
||||||
profile: 'baseline',
|
profile: 'baseline',
|
||||||
level: 3,
|
level: 3,
|
||||||
Static: isStatic,
|
Static: isStatic,
|
||||||
|
@ -745,7 +746,7 @@
|
||||||
|
|
||||||
})) + seekParam;
|
})) + seekParam;
|
||||||
|
|
||||||
var webmVideoUrl = ApiClient.getUrl('Videos/' + mediaVersion.ItemId + '/stream.webm', $.extend({}, baseParams, {
|
var webmVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/stream.webm', $.extend({}, baseParams, {
|
||||||
|
|
||||||
VideoCodec: 'vpx',
|
VideoCodec: 'vpx',
|
||||||
AudioCodec: 'Vorbis',
|
AudioCodec: 'Vorbis',
|
||||||
|
@ -755,7 +756,7 @@
|
||||||
|
|
||||||
})) + seekParam;
|
})) + seekParam;
|
||||||
|
|
||||||
var hlsVideoUrl = ApiClient.getUrl('Videos/' + mediaVersion.ItemId + '/stream.m3u8', $.extend({}, baseParams, {
|
var hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/stream.m3u8', $.extend({}, baseParams, {
|
||||||
profile: 'baseline',
|
profile: 'baseline',
|
||||||
level: 3,
|
level: 3,
|
||||||
timeStampOffsetMs: 0,
|
timeStampOffsetMs: 0,
|
||||||
|
@ -835,7 +836,7 @@
|
||||||
$('#video-subtitleButton', videoControls).hide();
|
$('#video-subtitleButton', videoControls).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mediaVersion.Chapters && mediaVersion.Chapters.length) {
|
if (item.Chapters && item.Chapters.length) {
|
||||||
$('#video-chaptersButton', videoControls).show();
|
$('#video-chaptersButton', videoControls).show();
|
||||||
} else {
|
} else {
|
||||||
$('#video-chaptersButton', videoControls).hide();
|
$('#video-chaptersButton', videoControls).hide();
|
||||||
|
@ -882,9 +883,9 @@
|
||||||
|
|
||||||
videoElement.off("playing.once");
|
videoElement.off("playing.once");
|
||||||
|
|
||||||
ApiClient.reportPlaybackStart(Dashboard.getCurrentUserId(), mediaVersion.ItemId, true, item.MediaType);
|
ApiClient.reportPlaybackStart(Dashboard.getCurrentUserId(), item.Id, mediaVersion.Id, true, item.MediaType);
|
||||||
|
|
||||||
self.startProgressInterval(mediaVersion.ItemId);
|
self.startProgressInterval(item.Id, mediaVersion.Id);
|
||||||
|
|
||||||
}).on("pause", function (e) {
|
}).on("pause", function (e) {
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
|
|
||||||
var position = Math.floor(10000000 * endTime) + self.startTimeTicksOffset;
|
var position = Math.floor(10000000 * endTime) + self.startTimeTicksOffset;
|
||||||
|
|
||||||
ApiClient.reportPlaybackStopped(Dashboard.getCurrentUserId(), currentMediaVersion.ItemId, position);
|
ApiClient.reportPlaybackStopped(Dashboard.getCurrentUserId(), currentItem.Id, currentMediaVersion.Id, position);
|
||||||
|
|
||||||
if (currentItem.MediaType == "Video") {
|
if (currentItem.MediaType == "Video") {
|
||||||
ApiClient.stopActiveEncodings();
|
ApiClient.stopActiveEncodings();
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
self.nextTrack();
|
self.nextTrack();
|
||||||
};
|
};
|
||||||
|
|
||||||
self.startProgressInterval = function (itemId) {
|
self.startProgressInterval = function (itemId, mediaVersionId) {
|
||||||
|
|
||||||
clearProgressInterval();
|
clearProgressInterval();
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
currentProgressInterval = setInterval(function () {
|
currentProgressInterval = setInterval(function () {
|
||||||
|
|
||||||
if (currentMediaElement) {
|
if (currentMediaElement) {
|
||||||
sendProgressUpdate(itemId);
|
sendProgressUpdate(itemId, mediaVersionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}, intervalTime);
|
}, intervalTime);
|
||||||
|
@ -156,8 +156,8 @@
|
||||||
|
|
||||||
$(this).off('play.onceafterseek').on('ended.playbackstopped', self.onPlaybackStopped).on('ended.playnext', self.playNextAfterEnded);
|
$(this).off('play.onceafterseek').on('ended.playbackstopped', self.onPlaybackStopped).on('ended.playnext', self.playNextAfterEnded);
|
||||||
|
|
||||||
self.startProgressInterval(currentMediaVersion.ItemId);
|
self.startProgressInterval(currentItem.Id, currentMediaVersion.Id);
|
||||||
sendProgressUpdate(currentMediaVersion.ItemId);
|
sendProgressUpdate(currentItem.Id, currentMediaVersion.Id);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -957,7 +957,7 @@
|
||||||
|
|
||||||
var position = Math.floor(10000000 * endTime) + self.startTimeTicksOffset;
|
var position = Math.floor(10000000 * endTime) + self.startTimeTicksOffset;
|
||||||
|
|
||||||
ApiClient.reportPlaybackStopped(Dashboard.getCurrentUserId(), currentMediaVersion.ItemId, position);
|
ApiClient.reportPlaybackStopped(Dashboard.getCurrentUserId(), currentItem.Id, currentMediaVersion.Id, position);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -984,9 +984,9 @@
|
||||||
return url + '&' + param + "=" + value;
|
return url + '&' + param + "=" + value;
|
||||||
};
|
};
|
||||||
|
|
||||||
function sendProgressUpdate(itemId) {
|
function sendProgressUpdate(itemId, mediaVersionId) {
|
||||||
|
|
||||||
ApiClient.reportPlaybackProgress(Dashboard.getCurrentUserId(), itemId, self.getCurrentTicks(), currentMediaElement.paused, currentMediaElement.volume == 0);
|
ApiClient.reportPlaybackProgress(Dashboard.getCurrentUserId(), itemId, mediaVersionId, self.getCurrentTicks(), currentMediaElement.paused, currentMediaElement.volume == 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
function clearProgressInterval() {
|
function clearProgressInterval() {
|
||||||
|
@ -1029,18 +1029,19 @@
|
||||||
var baseParams = {
|
var baseParams = {
|
||||||
audioChannels: 2,
|
audioChannels: 2,
|
||||||
audioBitrate: 128000,
|
audioBitrate: 128000,
|
||||||
StartTimeTicks: startPositionTicks
|
StartTimeTicks: startPositionTicks,
|
||||||
|
mediaVersionId: mediaVersion.Id
|
||||||
};
|
};
|
||||||
|
|
||||||
var mp3Url = ApiClient.getUrl('Audio/' + mediaVersion.ItemId + '/stream.mp3', $.extend({}, baseParams, {
|
var mp3Url = ApiClient.getUrl('Audio/' + item.Id + '/stream.mp3', $.extend({}, baseParams, {
|
||||||
audioCodec: 'mp3'
|
audioCodec: 'mp3'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
var aacUrl = ApiClient.getUrl('Audio/' + mediaVersion.ItemId + '/stream.aac', $.extend({}, baseParams, {
|
var aacUrl = ApiClient.getUrl('Audio/' + item.Id + '/stream.aac', $.extend({}, baseParams, {
|
||||||
audioCodec: 'aac'
|
audioCodec: 'aac'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
var webmUrl = ApiClient.getUrl('Audio/' + mediaVersion.ItemId + '/stream.webm', $.extend({}, baseParams, {
|
var webmUrl = ApiClient.getUrl('Audio/' + item.Id + '/stream.webm', $.extend({}, baseParams, {
|
||||||
audioCodec: 'Vorbis'
|
audioCodec: 'Vorbis'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -1131,9 +1132,9 @@
|
||||||
|
|
||||||
audioElement.off("play.once");
|
audioElement.off("play.once");
|
||||||
|
|
||||||
ApiClient.reportPlaybackStart(Dashboard.getCurrentUserId(), mediaVersion.ItemId, true, item.MediaType);
|
ApiClient.reportPlaybackStart(Dashboard.getCurrentUserId(), item.Id, mediaVersion.Id, true, item.MediaType);
|
||||||
|
|
||||||
self.startProgressInterval(mediaVersion.ItemId);
|
self.startProgressInterval(item.Id, mediaVersion.Id);
|
||||||
|
|
||||||
}).on("pause", function () {
|
}).on("pause", function () {
|
||||||
|
|
||||||
|
@ -1200,7 +1201,7 @@
|
||||||
return (trunc(titles[0], 30) + "<br />" + trunc(titles[1], 30)).replace("---", " ");
|
return (trunc(titles[0], 30) + "<br />" + trunc(titles[1], 30)).replace("---", " ");
|
||||||
};
|
};
|
||||||
|
|
||||||
var getItemFields = "MediaVersions";
|
var getItemFields = "MediaVersions,Chapters";
|
||||||
}
|
}
|
||||||
|
|
||||||
window.MediaPlayer = new mediaPlayer();
|
window.MediaPlayer = new mediaPlayer();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.245" targetFramework="net45" />
|
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.246" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
Loading…
Add table
Add a link
Reference in a new issue