< Summary - Jellyfin

Information
Class: Jellyfin.Server.Migrations.Routines.MoveTrickplayFiles
Assembly: jellyfin
File(s): /srv/git/jellyfin/Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 20
Coverable lines: 20
Total lines: 73
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 10
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
get_Id()100%210%
get_Name()100%210%
get_PerformOnNewInstall()100%210%
Perform()0%7280%
GetOldTrickplayDirectory(...)0%620%

File(s)

/srv/git/jellyfin/Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs

#LineLine coverage
 1using System;
 2using System.Globalization;
 3using System.IO;
 4using MediaBrowser.Controller.Entities;
 5using MediaBrowser.Controller.Library;
 6using MediaBrowser.Controller.Trickplay;
 7using MediaBrowser.Model.IO;
 8
 9namespace Jellyfin.Server.Migrations.Routines;
 10
 11/// <summary>
 12/// Migration to move trickplay files to the new directory.
 13/// </summary>
 14public class MoveTrickplayFiles : IMigrationRoutine
 15{
 16    private readonly ITrickplayManager _trickplayManager;
 17    private readonly IFileSystem _fileSystem;
 18    private readonly ILibraryManager _libraryManager;
 19
 20    /// <summary>
 21    /// Initializes a new instance of the <see cref="MoveTrickplayFiles"/> class.
 22    /// </summary>
 23    /// <param name="trickplayManager">Instance of the <see cref="ITrickplayManager"/> interface.</param>
 24    /// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
 25    /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
 26    public MoveTrickplayFiles(ITrickplayManager trickplayManager, IFileSystem fileSystem, ILibraryManager libraryManager
 27    {
 028        _trickplayManager = trickplayManager;
 029        _fileSystem = fileSystem;
 030        _libraryManager = libraryManager;
 031    }
 32
 33    /// <inheritdoc />
 034    public Guid Id => new("4EF123D5-8EFF-4B0B-869D-3AED07A60E1B");
 35
 36    /// <inheritdoc />
 037    public string Name => "MoveTrickplayFiles";
 38
 39    /// <inheritdoc />
 040    public bool PerformOnNewInstall => true;
 41
 42    /// <inheritdoc />
 43    public void Perform()
 44    {
 045        var trickplayItems = _trickplayManager.GetTrickplayItemsAsync().GetAwaiter().GetResult();
 046        foreach (var itemId in trickplayItems)
 47        {
 048            var resolutions = _trickplayManager.GetTrickplayResolutions(itemId).GetAwaiter().GetResult();
 049            var item = _libraryManager.GetItemById(itemId);
 050            if (item is null)
 51            {
 52                continue;
 53            }
 54
 055            foreach (var resolution in resolutions)
 56            {
 057                var oldPath = GetOldTrickplayDirectory(item, resolution.Key);
 058                var newPath = _trickplayManager.GetTrickplayDirectory(item, resolution.Value.TileWidth, resolution.Value
 059                if (_fileSystem.DirectoryExists(oldPath))
 60                {
 061                    _fileSystem.MoveDirectory(oldPath, newPath);
 62                }
 63            }
 64        }
 065    }
 66
 67    private string GetOldTrickplayDirectory(BaseItem item, int? width = null)
 68    {
 069        var path = Path.Combine(item.GetInternalMetadataPath(), "trickplay");
 70
 071        return width.HasValue ? Path.Combine(path, width.Value.ToString(CultureInfo.InvariantCulture)) : path;
 72    }
 73}