Merge remote-tracking branch 'upstream/master' into fix-byname-queries
# Conflicts: # src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/Migrations/JellyfinDbModelSnapshot.cs
This commit is contained in:
@@ -4,6 +4,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Emby.Server.Implementations.Playlists;
|
||||
using Jellyfin.Data.Enums;
|
||||
using Jellyfin.Extensions;
|
||||
using MediaBrowser.Controller.Library;
|
||||
@@ -46,6 +47,19 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
||||
};
|
||||
}
|
||||
|
||||
// Anything directly inside the internal playlists folder is a playlist, even when its
|
||||
// playlist.xml is missing: failing to resolve here makes the library scan treat the
|
||||
// playlist as deleted from disk and remove it, taking its items with it.
|
||||
if (args.Parent is PlaylistsFolder)
|
||||
{
|
||||
return new Playlist
|
||||
{
|
||||
Path = args.Path,
|
||||
Name = filename,
|
||||
OpenAccess = true
|
||||
};
|
||||
}
|
||||
|
||||
// It's a directory-based playlist if the directory contains a playlist file
|
||||
IEnumerable<string> filePaths;
|
||||
try
|
||||
|
||||
@@ -51,5 +51,37 @@
|
||||
"Music": "Tónleikur",
|
||||
"UserStartedPlayingItemWithValues": "{0} spælur {1} á {2}",
|
||||
"HeaderContinueWatching": "Hald áfram at hyggja",
|
||||
"MusicVideos": "Sjónbandaløg"
|
||||
"MusicVideos": "Sjónbandaløg",
|
||||
"TaskUpdatePluginsDescription": "Niðurtekur og innleggur dagføringar til ískoytisforrit ið eru stillaði til at dagførast sjálvvirkandi.",
|
||||
"TaskCleanTranscodeDescription": "Strikar umkotaðar fílar ið eru eldri enn 1 dag.",
|
||||
"TaskOptimizeDatabase": "Albøt dátugrunn",
|
||||
"NameSeasonNumber": "Sesong {0}",
|
||||
"NameSeasonUnknown": "Ókend sesong",
|
||||
"ScheduledTaskFailedWithName": "{0} miseydnaðist",
|
||||
"Undefined": "Óskilmarkað",
|
||||
"TasksMaintenanceCategory": "Viðlíkahald",
|
||||
"TaskCleanLogs": "Reinsa gerðalistaskjáttu",
|
||||
"UserOnlineFromDevice": "{0} er íbundin frá {1}",
|
||||
"HeaderNextUp": "Næst á skránni",
|
||||
"NotificationOptionPluginError": "Brek í ískoytisforriti",
|
||||
"NotificationOptionInstallationFailed": "Innleggingarbrek",
|
||||
"NotificationOptionServerRestartRequired": "Tørvur er á ambætaraendurbyrjan",
|
||||
"TasksApplicationCategory": "Nýtsluskipan",
|
||||
"NotificationOptionApplicationUpdateAvailable": "Skipanardagføring er tøk",
|
||||
"NotificationOptionApplicationUpdateInstalled": "Skipanardagføring varð innløgd",
|
||||
"UserStoppedPlayingItemWithValues": "{0} er liðugur at spæla {1} á {2}",
|
||||
"HomeVideos": "Heimaupptøkur",
|
||||
"StartupEmbyServerIsLoading": "Jellyfin-ambætarin er undir byrjanarinnlesing. Vinaliga royn aftur um eitt bil.",
|
||||
"UserOfflineFromDevice": "{0} breyt av á {1}",
|
||||
"UserPasswordChangedWithName": "Loyniorðið hjá brúkaranum {0} er broytt",
|
||||
"TasksChannelsCategory": "Alnetsrásir",
|
||||
"TaskCleanActivityLog": "Reinsa virksemisskrá",
|
||||
"TaskCleanActivityLogDescription": "Strikar skrásetingar eldri enn ásetta aldur.",
|
||||
"TaskCleanCache": "Reinsa kovaskjáttu",
|
||||
"TaskCleanCacheDescription": "Strikar kovafílar ið kervið ikki hevur tørv á longur.",
|
||||
"TaskCleanTranscode": "Reinsa umkotuskjáttu",
|
||||
"TaskDownloadMissingLyrics": "Niðurtak vantandi sangtekstir",
|
||||
"TaskDownloadMissingSubtitles": "Niðurtak vantandi undirtekstir",
|
||||
"CleanupUserDataTaskDescription": "Strikar allar brúkaradátur, so sum spælistøðu, yndislistastøðu o.s.fr., fyri miðlar ið ikki hava verið tøkir í í minsta lagi 90 dagar.",
|
||||
"CleanupUserDataTask": "Koyrsla ið reinsar brúkaradátur"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
{
|
||||
"AppDeviceValues": "Aplicacion: {0}, Periferic: {1}"
|
||||
"AppDeviceValues": "Aplicacion: {0}, Periferic: {1}",
|
||||
"Books": "Libres",
|
||||
"Artists": "Artistas",
|
||||
"Collections": "Collecciones",
|
||||
"ChapterNameValue": "Capitol {0}",
|
||||
"External": "Extèrn",
|
||||
"Folders": "Dorsièrs",
|
||||
"Favorites": "Favorits",
|
||||
"HeaderContinueWatching": "Contunhar de regardar",
|
||||
"HeaderFavoriteEpisodes": "Episòdis Favorits",
|
||||
"AuthenticationSucceededWithUserName": "{0} autentificat amb succès",
|
||||
"HeaderFavoriteShows": "Serias Favoritas",
|
||||
"HeaderLiveTV": "TV en dirècte",
|
||||
"HeaderNextUp": "Seguent",
|
||||
"HearingImpaired": "Amb de deficiéncias auditivas",
|
||||
"Movies": "Filmes",
|
||||
"Music": "Musica",
|
||||
"Latest": "Darrièr",
|
||||
"Forced": "Forçat",
|
||||
"Default": "Defaut",
|
||||
"Genres": "Genres",
|
||||
"HomeVideos": "Vidèos d'Acuèlh",
|
||||
"Inherit": "Eiretar",
|
||||
"LabelIpAddressValue": "Adreça IP: {0}",
|
||||
"LabelRunningTimeValue": "Temps d'execucion : {0}"
|
||||
}
|
||||
|
||||
@@ -219,28 +219,15 @@ namespace Emby.Server.Implementations.Playlists
|
||||
var playlist = _libraryManager.GetItemById(playlistId) as Playlist
|
||||
?? throw new ArgumentException("No Playlist exists with Id " + playlistId);
|
||||
|
||||
// Retrieve all the items to be added to the playlist
|
||||
// Retrieve all the items to be added to the playlist.
|
||||
var newItems = GetPlaylistItems(newItemIds, user, options)
|
||||
.Where(i => i.SupportsAddingToPlaylist);
|
||||
|
||||
// Filter out duplicate items
|
||||
var existingIds = playlist.LinkedChildren.Select(c => c.ItemId).ToHashSet();
|
||||
newItems = newItems
|
||||
.Where(i => !existingIds.Contains(i.Id))
|
||||
.Distinct();
|
||||
|
||||
// Create a list of the new linked children to add to the playlist
|
||||
var childrenToAdd = newItems
|
||||
.Select(LinkedChild.Create)
|
||||
.ToList();
|
||||
|
||||
// Log duplicates that have been ignored, if any
|
||||
int numDuplicates = newItemIds.Count - childrenToAdd.Count;
|
||||
if (numDuplicates > 0)
|
||||
{
|
||||
_logger.LogWarning("Ignored adding {DuplicateCount} duplicate items to playlist {PlaylistName}.", numDuplicates, playlist.Name);
|
||||
}
|
||||
|
||||
// Do nothing else if there are no items to add to the playlist
|
||||
if (childrenToAdd.Count == 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user