mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Added instant mixes
This commit is contained in:
parent
000607b1e5
commit
1dd5d68710
4 changed files with 129 additions and 10 deletions
44
ApiClient.js
44
ApiClient.js
|
@ -319,6 +319,50 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.getInstantMixFromSong = function (itemId, options) {
|
||||||
|
|
||||||
|
var url = self.getUrl("Songs/" + itemId + "/InstantMix", options);
|
||||||
|
|
||||||
|
return self.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: url,
|
||||||
|
dataType: "json"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
self.getInstantMixFromAlbum = function (itemId, options) {
|
||||||
|
|
||||||
|
var url = self.getUrl("Albums/" + itemId + "/InstantMix", options);
|
||||||
|
|
||||||
|
return self.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: url,
|
||||||
|
dataType: "json"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
self.getInstantMixFromArtist = function (name, options) {
|
||||||
|
|
||||||
|
var url = self.getUrl("Artists/" + self.encodeName(name) + "/InstantMix", options);
|
||||||
|
|
||||||
|
return self.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: url,
|
||||||
|
dataType: "json"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
self.getInstantMixFromMusicGenre = function (name, options) {
|
||||||
|
|
||||||
|
var url = self.getUrl("MusicGenres/" + self.encodeName(name) + "/InstantMix", options);
|
||||||
|
|
||||||
|
return self.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: url,
|
||||||
|
dataType: "json"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
self.getSimilarMovies = function (itemId, options) {
|
self.getSimilarMovies = function (itemId, options) {
|
||||||
|
|
||||||
var url = self.getUrl("Movies/" + itemId + "/Similar", options);
|
var url = self.getUrl("Movies/" + itemId + "/Similar", options);
|
||||||
|
|
|
@ -331,10 +331,23 @@
|
||||||
|
|
||||||
if (itemType == "Artist") {
|
if (itemType == "Artist") {
|
||||||
html += '<li><a href="#" onclick="MediaPlayer.playArtist(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play</a></li>';
|
html += '<li><a href="#" onclick="MediaPlayer.playArtist(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play</a></li>';
|
||||||
} else {
|
} else if (itemType != "MusicGenre") {
|
||||||
html += '<li><a href="#" onclick="MediaPlayer.playById(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play</a></li>';
|
html += '<li><a href="#" onclick="MediaPlayer.playById(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play</a></li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (itemType == "Audio") {
|
||||||
|
html += '<li><a href="#" onclick="MediaPlayer.playInstantMixFromSong(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Instant Mix</a></li>';
|
||||||
|
}
|
||||||
|
else if (itemType == "MusicAlbum") {
|
||||||
|
html += '<li><a href="#" onclick="MediaPlayer.playInstantMixFromAlbum(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Instant Mix</a></li>';
|
||||||
|
}
|
||||||
|
else if (itemType == "Artist") {
|
||||||
|
html += '<li><a href="#" onclick="MediaPlayer.playInstantMixFromArtist(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Instant Mix</a></li>';
|
||||||
|
}
|
||||||
|
else if (itemType == "MusicGenre") {
|
||||||
|
html += '<li><a href="#" onclick="MediaPlayer.playInstantMixFromMusicGenre(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Instant Mix</a></li>';
|
||||||
|
}
|
||||||
|
|
||||||
if (resumePositionTicks) {
|
if (resumePositionTicks) {
|
||||||
html += '<li><a href="#" onclick="MediaPlayer.playById(\'' + itemId + '\', ' + resumePositionTicks + ');LibraryBrowser.closePlayMenu();">Resume</a></li>';
|
html += '<li><a href="#" onclick="MediaPlayer.playById(\'' + itemId + '\', ' + resumePositionTicks + ');LibraryBrowser.closePlayMenu();">Resume</a></li>';
|
||||||
}
|
}
|
||||||
|
@ -342,7 +355,7 @@
|
||||||
if (isPlaying) {
|
if (isPlaying) {
|
||||||
if (itemType == "Artist") {
|
if (itemType == "Artist") {
|
||||||
html += '<li><a href="#" onclick="MediaPlayer.queueArtist(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Queue</a></li>';
|
html += '<li><a href="#" onclick="MediaPlayer.queueArtist(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Queue</a></li>';
|
||||||
} else {
|
} else if (itemType != "MusicGenre") {
|
||||||
html += '<li><a href="#" onclick="MediaPlayer.queue(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Queue</a></li>';
|
html += '<li><a href="#" onclick="MediaPlayer.queue(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Queue</a></li>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,10 +58,10 @@
|
||||||
|
|
||||||
var item = currentItem;
|
var item = currentItem;
|
||||||
var media = currentMediaElement;
|
var media = currentMediaElement;
|
||||||
|
|
||||||
// Try to report playback stopped before the browser closes
|
// Try to report playback stopped before the browser closes
|
||||||
if (item && media && currentProgressInterval) {
|
if (item && media && currentProgressInterval) {
|
||||||
|
|
||||||
var endTime = currentMediaElement.currentTime;
|
var endTime = currentMediaElement.currentTime;
|
||||||
|
|
||||||
var position = Math.floor(10000000 * endTime) + startTimeTicksOffset;
|
var position = Math.floor(10000000 * endTime) + startTimeTicksOffset;
|
||||||
|
@ -727,7 +727,7 @@
|
||||||
|
|
||||||
self.canPlay = function (item) {
|
self.canPlay = function (item) {
|
||||||
|
|
||||||
if (item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "Artist") {
|
if (item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "Artist" || item.Type == "MusicGenre") {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return self.canPlayMediaType(item.MediaType);
|
return self.canPlayMediaType(item.MediaType);
|
||||||
|
@ -796,7 +796,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($.browser.msie && videoType) {
|
else if ($.browser.msie && videoType) {
|
||||||
|
|
||||||
self.playWithWarning(items, startPosition, user, "iewebmplugin", "Internet Explorer Playback", "For optimal video playback of Internet Explorer desktop edition, please install google's webm plugin for IE.<br/><br/><a target='_blank' href='https://tools.google.com/dlpage/webmmf'>https://tools.google.com/dlpage/webmmf</a>");
|
self.playWithWarning(items, startPosition, user, "iewebmplugin", "Internet Explorer Playback", "For optimal video playback of Internet Explorer desktop edition, please install google's webm plugin for IE.<br/><br/><a target='_blank' href='https://tools.google.com/dlpage/webmmf'>https://tools.google.com/dlpage/webmmf</a>");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -936,12 +936,14 @@
|
||||||
$('.nowPlayingMediaInfo', nowPlayingBar).html(html);
|
$('.nowPlayingMediaInfo', nowPlayingBar).html(html);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var getItemFields = "MediaStreams,UserData,DisplayMediaType,Chapters,Path";
|
||||||
|
|
||||||
self.getItemsForPlayback = function (query) {
|
self.getItemsForPlayback = function (query) {
|
||||||
|
|
||||||
var userId = Dashboard.getCurrentUserId();
|
var userId = Dashboard.getCurrentUserId();
|
||||||
|
|
||||||
query.Limit = query.Limit || 100;
|
query.Limit = query.Limit || 100;
|
||||||
query.Fields = "MediaStreams,UserData,DisplayMediaType,SeriesInfo,AudioInfo,Chapters,Path";
|
query.Fields = getItemFields;
|
||||||
|
|
||||||
return ApiClient.getItems(userId, query);
|
return ApiClient.getItems(userId, query);
|
||||||
};
|
};
|
||||||
|
@ -972,6 +974,66 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.playInstantMixFromSong = function (id) {
|
||||||
|
|
||||||
|
ApiClient.getInstantMixFromSong(id, {
|
||||||
|
|
||||||
|
UserId: Dashboard.getCurrentUserId(),
|
||||||
|
Fields: getItemFields,
|
||||||
|
Limit: 50
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
self.play(result.Items);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
self.playInstantMixFromAlbum = function (id) {
|
||||||
|
|
||||||
|
ApiClient.getInstantMixFromAlbum(id, {
|
||||||
|
|
||||||
|
UserId: Dashboard.getCurrentUserId(),
|
||||||
|
Fields: getItemFields,
|
||||||
|
Limit: 50
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
self.play(result.Items);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
self.playInstantMixFromArtist = function (name) {
|
||||||
|
|
||||||
|
ApiClient.getInstantMixFromArtist(name, {
|
||||||
|
|
||||||
|
UserId: Dashboard.getCurrentUserId(),
|
||||||
|
Fields: getItemFields,
|
||||||
|
Limit: 50
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
self.play(result.Items);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
self.playInstantMixFromMusicGenre = function (name) {
|
||||||
|
|
||||||
|
ApiClient.getInstantMixFromMusicGenre(name, {
|
||||||
|
|
||||||
|
UserId: Dashboard.getCurrentUserId(),
|
||||||
|
Fields: getItemFields,
|
||||||
|
Limit: 50
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
self.play(result.Items);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
self.playArtist = function (artist) {
|
self.playArtist = function (artist) {
|
||||||
|
|
||||||
self.getItemsForPlayback({
|
self.getItemsForPlayback({
|
||||||
|
@ -1039,7 +1101,7 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.previousTrack = function () {
|
self.previousTrack = function () {
|
||||||
var newIndex = currentPlaylistIndex - 1;
|
var newIndex = currentPlaylistIndex - 1;
|
||||||
if (newIndex >= 0) {
|
if (newIndex >= 0) {
|
||||||
|
@ -1124,7 +1186,7 @@
|
||||||
changeStream(position);
|
changeStream(position);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
self.mute = function () {
|
self.mute = function () {
|
||||||
currentMediaElement.volume = 0;
|
currentMediaElement.volume = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.159" targetFramework="net45" />
|
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.160" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Common" version="3.9.56" targetFramework="net45" />
|
<package id="ServiceStack.Common" version="3.9.56" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Text" version="3.9.55" targetFramework="net45" />
|
<package id="ServiceStack.Text" version="3.9.55" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
Loading…
Add table
Add a link
Reference in a new issue