Skip to content

Commit

Permalink
connect updates
Browse files Browse the repository at this point in the history
  • Loading branch information
LukePulverenti committed Oct 25, 2014
1 parent a63374e commit cb2fd2c
Show file tree
Hide file tree
Showing 147 changed files with 1,226 additions and 581 deletions.
2 changes: 1 addition & 1 deletion MediaBrowser.Api/BaseApiService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ protected object ToStaticFileResult(string path)
return ResultFactory.GetStaticFileResult(Request, path);
}

private readonly char[] _dashReplaceChars = { '?', '/' };
private readonly char[] _dashReplaceChars = { '?', '/', '&' };
private const char SlugChar = '-';

protected MusicArtist GetArtist(string name, ILibraryManager libraryManager)
Expand Down
2 changes: 1 addition & 1 deletion MediaBrowser.Api/ItemRefreshService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ private async Task RefreshCollectionFolderChildren(RefreshItem request, Collecti

private MetadataRefreshOptions GetRefreshOptions(BaseRefreshRequest request)
{
return new MetadataRefreshOptions
return new MetadataRefreshOptions(new DirectoryService())
{
MetadataRefreshMode = request.MetadataRefreshMode,
ImageRefreshMode = request.ImageRefreshMode,
Expand Down
5 changes: 4 additions & 1 deletion MediaBrowser.Api/Playback/BaseStreamingService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.MediaInfo;
using System;
using System.Collections.Generic;
Expand Down Expand Up @@ -1545,6 +1544,7 @@ protected async Task<StreamState> GetState(StreamRequest request, CancellationTo
state.InputVideoSync = "-1";
state.InputAudioSync = "1";
state.InputContainer = recording.Container;
state.ReadInputAtNativeFramerate = source.ReadAtNativeFramerate;
}
else if (item is LiveTvChannel)
{
Expand Down Expand Up @@ -1572,6 +1572,7 @@ protected async Task<StreamState> GetState(StreamRequest request, CancellationTo
state.RemoteHttpHeaders = mediaSource.RequiredHttpHeaders;
state.InputBitrate = mediaSource.Bitrate;
state.InputFileSize = mediaSource.Size;
state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate;
mediaStreams = mediaSource.MediaStreams;
}
else
Expand All @@ -1588,6 +1589,7 @@ protected async Task<StreamState> GetState(StreamRequest request, CancellationTo
state.InputContainer = mediaSource.Container;
state.InputFileSize = mediaSource.Size;
state.InputBitrate = mediaSource.Bitrate;
state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate;

var video = item as Video;

Expand Down Expand Up @@ -1687,6 +1689,7 @@ private void AttachMediaStreamInfo(StreamState state,
state.RemoteHttpHeaders = mediaSource.RequiredHttpHeaders;
state.InputBitrate = mediaSource.Bitrate;
state.InputFileSize = mediaSource.Size;
state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate;

AttachMediaStreamInfo(state, mediaSource.MediaStreams, videoRequest, requestedUrl);
}
Expand Down
10 changes: 1 addition & 9 deletions MediaBrowser.Api/Playback/StreamState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,15 +95,7 @@ public StreamState(ILiveTvManager liveTvManager, ILogger logger)

public bool DeInterlace { get; set; }

public bool ReadInputAtNativeFramerate
{
get {

return InputProtocol == MediaProtocol.Rtmp ||
string.Equals(InputContainer, "wtv", StringComparison.OrdinalIgnoreCase) ||
!string.IsNullOrEmpty(LiveTvStreamId);
}
}
public bool ReadInputAtNativeFramerate { get; set; }

public TransportStreamTimestamp InputTimestamp { get; set; }

Expand Down
2 changes: 1 addition & 1 deletion MediaBrowser.Api/Subtitles/SubtitleService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ public void Post(DownloadRemoteSubtitles request)
await _subtitleManager.DownloadSubtitles(video, request.SubtitleId, CancellationToken.None)
.ConfigureAwait(false);
await video.RefreshMetadata(new MetadataRefreshOptions(), CancellationToken.None).ConfigureAwait(false);
await video.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()), CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
Expand Down
4 changes: 2 additions & 2 deletions MediaBrowser.Api/UserLibrary/PlaystateService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -375,11 +375,11 @@ private async Task<UserItemDataDto> UpdatePlayedStatus(User user, string itemId,

if (wasPlayed)
{
await item.MarkPlayed(user, datePlayed, _userDataRepository).ConfigureAwait(false);
await item.MarkPlayed(user, datePlayed, true).ConfigureAwait(false);
}
else
{
await item.MarkUnplayed(user, _userDataRepository).ConfigureAwait(false);
await item.MarkUnplayed(user).ConfigureAwait(false);
}

return _userDataRepository.GetUserDataDto(item, user);
Expand Down
5 changes: 4 additions & 1 deletion MediaBrowser.Controller/Channels/ChannelMediaInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ public class ChannelMediaInfo

public string Id { get; set; }

public bool ReadAtNativeFramerate { get; set; }

public ChannelMediaInfo()
{
RequiredHttpHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
Expand All @@ -59,7 +61,8 @@ public MediaSourceInfo ToMediaSource()
RequiredHttpHeaders = RequiredHttpHeaders,
RunTimeTicks = RunTimeTicks,
Name = id,
Id = id
Id = id,
ReadAtNativeFramerate = ReadAtNativeFramerate
};

var bitrate = (AudioBitrate ?? 0) + (VideoBitrate ?? 0);
Expand Down
26 changes: 15 additions & 11 deletions MediaBrowser.Controller/Entities/BaseItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -766,7 +766,7 @@ private IEnumerable<Video> LoadThemeVideos(IEnumerable<FileSystemInfo> fileSyste

public Task RefreshMetadata(CancellationToken cancellationToken)
{
return RefreshMetadata(new MetadataRefreshOptions(), cancellationToken);
return RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()), cancellationToken);
}

/// <summary>
Expand All @@ -783,8 +783,6 @@ public async Task RefreshMetadata(MetadataRefreshOptions options, CancellationTo

if (IsFolder || Parent != null)
{
options.DirectoryService = options.DirectoryService ?? new DirectoryService(Logger);

try
{
var files = locationType != LocationType.Remote && locationType != LocationType.Virtual ?
Expand Down Expand Up @@ -1360,10 +1358,12 @@ public void AddGenre(string name)
/// </summary>
/// <param name="user">The user.</param>
/// <param name="datePlayed">The date played.</param>
/// <param name="userManager">The user manager.</param>
/// <param name="resetPosition">if set to <c>true</c> [reset position].</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
public virtual async Task MarkPlayed(User user, DateTime? datePlayed, IUserDataManager userManager)
public virtual async Task MarkPlayed(User user,
DateTime? datePlayed,
bool resetPosition)
{
if (user == null)
{
Expand All @@ -1372,7 +1372,7 @@ public virtual async Task MarkPlayed(User user, DateTime? datePlayed, IUserDataM

var key = GetUserDataKey();

var data = userManager.GetUserData(user.Id, key);
var data = UserDataManager.GetUserData(user.Id, key);

if (datePlayed.HasValue)
{
Expand All @@ -1383,20 +1383,24 @@ public virtual async Task MarkPlayed(User user, DateTime? datePlayed, IUserDataM
// Ensure it's at least one
data.PlayCount = Math.Max(data.PlayCount, 1);

if (resetPosition)
{
data.PlaybackPositionTicks = 0;
}

data.LastPlayedDate = datePlayed ?? data.LastPlayedDate;
data.Played = true;

await userManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
await UserDataManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
}

/// <summary>
/// Marks the unplayed.
/// </summary>
/// <param name="user">The user.</param>
/// <param name="userManager">The user manager.</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
public virtual async Task MarkUnplayed(User user, IUserDataManager userManager)
public virtual async Task MarkUnplayed(User user)
{
if (user == null)
{
Expand All @@ -1405,7 +1409,7 @@ public virtual async Task MarkUnplayed(User user, IUserDataManager userManager)

var key = GetUserDataKey();

var data = userManager.GetUserData(user.Id, key);
var data = UserDataManager.GetUserData(user.Id, key);

//I think it is okay to do this here.
// if this is only called when a user is manually forcing something to un-played
Expand All @@ -1415,7 +1419,7 @@ public virtual async Task MarkUnplayed(User user, IUserDataManager userManager)
data.LastPlayedDate = null;
data.Played = false;

await userManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
await UserDataManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
}

/// <summary>
Expand Down
27 changes: 15 additions & 12 deletions MediaBrowser.Controller/Entities/Folder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ protected virtual IEnumerable<BaseItem> LoadChildren()

public Task ValidateChildren(IProgress<double> progress, CancellationToken cancellationToken)
{
return ValidateChildren(progress, cancellationToken, new MetadataRefreshOptions());
return ValidateChildren(progress, cancellationToken, new MetadataRefreshOptions(new DirectoryService()));
}

/// <summary>
Expand All @@ -332,8 +332,6 @@ public Task ValidateChildren(IProgress<double> progress, CancellationToken cance
/// <returns>Task.</returns>
public Task ValidateChildren(IProgress<double> progress, CancellationToken cancellationToken, MetadataRefreshOptions metadataRefreshOptions, bool recursive = true)
{
metadataRefreshOptions.DirectoryService = metadataRefreshOptions.DirectoryService ?? new DirectoryService(Logger);

return ValidateChildrenWithCancellationSupport(progress, cancellationToken, recursive, true, metadataRefreshOptions, metadataRefreshOptions.DirectoryService);
}

Expand Down Expand Up @@ -1141,12 +1139,16 @@ public override async Task ChangedExternally()
/// </summary>
/// <param name="user">The user.</param>
/// <param name="datePlayed">The date played.</param>
/// <param name="userManager">The user manager.</param>
/// <param name="resetPosition">if set to <c>true</c> [reset position].</param>
/// <returns>Task.</returns>
public override async Task MarkPlayed(User user, DateTime? datePlayed, IUserDataManager userManager)
public override async Task MarkPlayed(User user,
DateTime? datePlayed,
bool resetPosition)
{
// Sweep through recursively and update status
var tasks = GetRecursiveChildren(user, true).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual).Select(c => c.MarkPlayed(user, datePlayed, userManager));
var tasks = GetRecursiveChildren(user, true)
.Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
.Select(c => c.MarkPlayed(user, datePlayed, resetPosition));

await Task.WhenAll(tasks).ConfigureAwait(false);
}
Expand All @@ -1155,12 +1157,13 @@ public override async Task MarkPlayed(User user, DateTime? datePlayed, IUserData
/// Marks the unplayed.
/// </summary>
/// <param name="user">The user.</param>
/// <param name="userManager">The user manager.</param>
/// <returns>Task.</returns>
public override async Task MarkUnplayed(User user, IUserDataManager userManager)
public override async Task MarkUnplayed(User user)
{
// Sweep through recursively and update status
var tasks = GetRecursiveChildren(user, true).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual).Select(c => c.MarkUnplayed(user, userManager));
var tasks = GetRecursiveChildren(user, true)
.Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
.Select(c => c.MarkUnplayed(user));

await Task.WhenAll(tasks).ConfigureAwait(false);
}
Expand Down Expand Up @@ -1195,14 +1198,14 @@ public BaseItem FindByPath(string path)

public override bool IsPlayed(User user)
{
return GetRecursiveChildren(user).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
return GetRecursiveChildren(user)
.Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
.All(i => i.IsPlayed(user));
}

public override bool IsUnplayed(User user)
{
return GetRecursiveChildren(user).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual)
.All(i => i.IsUnplayed(user));
return !IsPlayed(user);
}

public override void FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, User user)
Expand Down
2 changes: 1 addition & 1 deletion MediaBrowser.Controller/Entities/User.cs
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ public Task Rename(string newName)

Name = newName;

return RefreshMetadata(new MetadataRefreshOptions
return RefreshMetadata(new MetadataRefreshOptions(new DirectoryService())
{
ReplaceAllMetadata = true,
ImageRefreshMode = ImageRefreshMode.FullRefresh,
Expand Down
3 changes: 1 addition & 2 deletions MediaBrowser.Controller/Entities/Video.cs
Original file line number Diff line number Diff line change
Expand Up @@ -398,9 +398,8 @@ private Task RefreshAlternateVersion(MetadataRefreshOptions options, Video video
var currentImagePath = video.GetImagePath(ImageType.Primary);
var ownerImagePath = this.GetImagePath(ImageType.Primary);

var newOptions = new MetadataRefreshOptions
var newOptions = new MetadataRefreshOptions(options.DirectoryService)
{
DirectoryService = options.DirectoryService,
ImageRefreshMode = options.ImageRefreshMode,
MetadataRefreshMode = options.MetadataRefreshMode,
ReplaceAllMetadata = options.ReplaceAllMetadata
Expand Down
22 changes: 10 additions & 12 deletions MediaBrowser.Controller/IO/FileData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,13 @@ public static class FileData
/// <param name="resolveShortcuts">if set to <c>true</c> [resolve shortcuts].</param>
/// <returns>Dictionary{System.StringFileSystemInfo}.</returns>
/// <exception cref="System.ArgumentNullException">path</exception>
public static Dictionary<string, FileSystemInfo> GetFilteredFileSystemEntries(IDirectoryService directoryService, string path, IFileSystem fileSystem, ILogger logger, ItemResolveArgs args, int flattenFolderDepth = 0, bool resolveShortcuts = true)
public static Dictionary<string, FileSystemInfo> GetFilteredFileSystemEntries(IDirectoryService directoryService,
string path,
IFileSystem fileSystem,
ILogger logger,
ItemResolveArgs args,
int flattenFolderDepth = 0,
bool resolveShortcuts = true)
{
if (string.IsNullOrEmpty(path))
{
Expand All @@ -36,21 +42,13 @@ public static Dictionary<string, FileSystemInfo> GetFilteredFileSystemEntries(ID
throw new ArgumentNullException("args");
}

var entries = directoryService.GetFileSystemEntries(path);

if (!resolveShortcuts && flattenFolderDepth == 0)
{
// Seeing dupes on some users file system for some reason
var dictionary = new Dictionary<string, FileSystemInfo>(StringComparer.OrdinalIgnoreCase);

foreach (var info in entries)
{
dictionary[info.FullName] = info;
}

return dictionary;
return directoryService.GetFileSystemDictionary(path);
}

var entries = directoryService.GetFileSystemEntries(path);

var dict = new Dictionary<string, FileSystemInfo>(StringComparer.OrdinalIgnoreCase);

foreach (var entry in entries)
Expand Down
Loading

0 comments on commit cb2fd2c

Please sign in to comment.