| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | using MediaBrowser.Controller.Devices;using MediaBrowser.Controller.Sync;using MediaBrowser.Model.Devices;using MediaBrowser.Model.Dlna;using MediaBrowser.Model.Sync;using System;using System.Collections.Generic;using System.Linq;namespace MediaBrowser.Server.Implementations.Sync{    public class AppSyncProvider : ISyncProvider, IHasUniqueTargetIds, IHasSyncQuality, IHasDuplicateCheck    {        private readonly IDeviceManager _deviceManager;        public AppSyncProvider(IDeviceManager deviceManager)        {            _deviceManager = deviceManager;        }        public IEnumerable<SyncTarget> GetSyncTargets(string userId)        {            return _deviceManager.GetDevices(new DeviceQuery            {                SupportsSync = true,                UserId = userId            }).Items.Select(i => new SyncTarget            {                Id = i.Id,                Name = i.Name            });        }        public DeviceProfile GetDeviceProfile(SyncTarget target, string profile, string quality)        {            var caps = _deviceManager.GetCapabilities(target.Id);            var deviceProfile = caps == null || caps.DeviceProfile == null ? new DeviceProfile() : caps.DeviceProfile;            deviceProfile.MaxStaticBitrate = SyncHelper.AdjustBitrate(deviceProfile.MaxStaticBitrate, quality);            return deviceProfile;        }        public string Name        {            get { return "Mobile Sync"; }        }        public IEnumerable<SyncTarget> GetAllSyncTargets()        {            return _deviceManager.GetDevices(new DeviceQuery            {                SupportsSync = true            }).Items.Select(i => new SyncTarget            {                Id = i.Id,                Name = i.Name            });        }        public IEnumerable<SyncQualityOption> GetQualityOptions(SyncTarget target)        {            return new List<SyncQualityOption>            {                new SyncQualityOption                {                    Name = "Original",                    Id = "original",                    Description = "Syncs original files as-is, regardless of whether the device is capable of playing them or not."                },                new SyncQualityOption                {                    Name = "High",                    Id = "high",                    IsDefault = true                },                new SyncQualityOption                {                    Name = "Medium",                    Id = "medium"                },                new SyncQualityOption                {                    Name = "Low",                    Id = "low"                },                new SyncQualityOption                {                    Name = "Custom",                    Id = "custom"                }            };        }        public IEnumerable<SyncProfileOption> GetProfileOptions(SyncTarget target)        {            return new List<SyncProfileOption>();        }        public SyncJobOptions GetSyncJobOptions(SyncTarget target, string profile, string quality)        {            var isConverting = !string.Equals(quality, "original", StringComparison.OrdinalIgnoreCase);            return new SyncJobOptions            {                DeviceProfile = GetDeviceProfile(target, profile, quality),                IsConverting = isConverting            };        }        public bool AllowDuplicateJobItem(SyncJobItem original, SyncJobItem duplicate)        {            return false;        }    }}
 |