public static async Task <WebIntResult> ProcessAsync(IOwinContext context) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetRadioGroupCount: ITvProvider not found"); } var channelGroups = await TVAccess.GetGroupsAsync(context); return(new WebIntResult { Result = channelGroups.Count }); }
public static Task <WebIntResult> ProcessAsync(IOwinContext context) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetRecordingCount: ITvProvider not found"); } IList <MediaItem> items = MediaLibraryAccess.GetMediaItemsByAspect(context, BasicNecessaryMIATypeIds, BasicOptionalMIATypeIds); return(Task.FromResult(new WebIntResult { Result = items.Count })); }
public static Task <WebStreamServiceDescription> ProcessAsync(IOwinContext context) { WebStreamServiceDescription webStreamServiceDescription = new WebStreamServiceDescription { ApiVersion = GlobalVersion.API_VERSION, ServiceVersion = GlobalVersion.VERSION, SupportsMedia = true, SupportsRecordings = true, SupportsTV = ServiceRegistration.IsRegistered <SlimTv.Interfaces.ITvProvider>() }; return(Task.FromResult(webStreamServiceDescription)); }
public static async Task <WebBoolResult> ProcessAsync(IOwinContext context, string channelId, string title, DateTime startTime, DateTime endTime, WebScheduleType scheduleType) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("AddSchedule: ITvProvider not found"); } bool result = await TVAccess.CreateScheduleAsync(context, int.Parse(channelId), title, startTime, endTime, scheduleType); return(new WebBoolResult { Result = result }); }
public static async Task <WebBoolResult> ProcessAsync(IOwinContext context, string scheduleId) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("DeleteSchedule: ITvProvider not found"); } bool result = await TVAccess.DeleteScheduleAsync(context, int.Parse(scheduleId)); return(new WebBoolResult { Result = result }); }
private void InitMovieGenre(string language) { if (MovieGenreMap.ContainsKey(language)) { return; } var list = new List <GenreMapping>(); if (ServiceRegistration.IsRegistered <ISettingsManager>()) { var settings = ServiceRegistration.Get <ISettingsManager>().Load <GenreSettings>(); if (settings.MovieGenreMappings?.Length > 0) { list.AddRange(settings.MovieGenreMappings); } } string genreRegex; list.AddRange(new GenreMapping[] { new GenreMapping((int)VideoGenre.Action, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Action", language, out genreRegex) ? genreRegex : @"Action", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Adventure, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Adventure", language, out genreRegex) ? genreRegex : @"Adventure", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Animation, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Animation", language, out genreRegex) ? genreRegex : @"Animation", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Comedy, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Comedy", language, out genreRegex) ? genreRegex : @"Comedy", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Crime, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Crime", language, out genreRegex) ? genreRegex : @"Crime", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Documentary, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Documentary", language, out genreRegex) ? genreRegex : @"Documentary", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Biography, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Biography", language, out genreRegex) ? genreRegex : @"Biography", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Drama, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Drama", language, out genreRegex) ? genreRegex : @"Drama", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Family, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Family", language, out genreRegex) ? genreRegex : @"Family", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Fantasy, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Fantasy", language, out genreRegex) ? genreRegex : @"Fantasy", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.History, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.History", language, out genreRegex) ? genreRegex : @"History", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Horror, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Horror", language, out genreRegex) ? genreRegex : @"Horror", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Music, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Music", language, out genreRegex) ? genreRegex : @"Music", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Mystery, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Mystery", language, out genreRegex) ? genreRegex : @"Mystery", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Romance, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Romance", language, out genreRegex) ? genreRegex : @"Romance", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.SciFi, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.ScienceFiction", language, out genreRegex) ? genreRegex : @"Science Fiction", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.TvMovie, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.TVMovie", language, out genreRegex) ? genreRegex : @"TV", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Thriller, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Thriller", language, out genreRegex) ? genreRegex : @"Thriller", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.War, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.War", language, out genreRegex) ? genreRegex : @"War", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Western, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Western", language, out genreRegex) ? genreRegex : @"Western", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Kids, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Kids", language, out genreRegex) ? genreRegex : @"Kids|Children|Teen", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Noir, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Noir", language, out genreRegex) ? genreRegex : @"Noir", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Sport, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Sport", language, out genreRegex) ? genreRegex : @"Sport", RegexOptions.IgnoreCase)), new GenreMapping((int)VideoGenre.Superhero, new Regex(GenreStringManager.TryGetGenreString("Match", "Video.Superhero", language, out genreRegex) ? genreRegex : @"Superhero", RegexOptions.IgnoreCase)), }); MovieGenreMap.TryAdd(language, list); }
public static async Task <IList <WebDiskSpaceInformation> > ProcessAsync(IOwinContext context) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetAllRecordingDiskInformation: ITvProvider not found"); } var cards = await TVAccess.GetTunerCardsAsync(context); return(cards.Select(card => Card(card)).Select(x => x.RecordingFolder).Distinct().AsQueryable() .Select(x => DiskSpaceInformation.GetSpaceInformation(x)) .GroupBy(x => x.Disk, (key, list) => list.First()) .ToList()); }
private void InitMusicGenre(string language) { if (MusicGenreMap.ContainsKey(language)) { return; } var list = new List <GenreMapping>(); if (ServiceRegistration.IsRegistered <ISettingsManager>()) { var settings = ServiceRegistration.Get <ISettingsManager>().Load <GenreSettings>(); if (settings.MusicGenreMappings?.Length > 0) { list.AddRange(settings.MusicGenreMappings); } } string genreRegex; list.AddRange(new GenreMapping[] { new GenreMapping((int)AudioGenre.Classic, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Classic", language, out genreRegex) ? genreRegex : @"Classic", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Soundtrack, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Soundtrack", language, out genreRegex) ? genreRegex : @"Soundtrack", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.NewAge, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.NewAge", language, out genreRegex) ? genreRegex : @"New Age", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Rock, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Rock", language, out genreRegex) ? genreRegex : @"Rock", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Metal, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Metal", language, out genreRegex) ? genreRegex : @"Metal", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Country, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Classic", language, out genreRegex) ? genreRegex : @"Country", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Jazz, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Jazz", language, out genreRegex) ? genreRegex : @"Jazz", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Soul, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.RbSoul", language, out genreRegex) ? genreRegex : @"Soul", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Rap, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.HipHopRap", language, out genreRegex) ? genreRegex : @"Rap", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Reggae, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Raggae", language, out genreRegex) ? genreRegex : @"Reggae", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Pop, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Pop", language, out genreRegex) ? genreRegex : @"Pop", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Dance, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Dance", language, out genreRegex) ? genreRegex : @"Dance", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Electronic, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Electronic", language, out genreRegex) ? genreRegex : @"Electronic", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Comedy, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Comedy", language, out genreRegex) ? genreRegex : @"Comedy", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Folk, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Folk", language, out genreRegex) ? genreRegex : @"Folk", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.EasyListening, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.EasyListening", language, out genreRegex) ? genreRegex : @"Easy", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Holiday, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Holiday", language, out genreRegex) ? genreRegex : @"Holiday", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.World, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.World", language, out genreRegex) ? genreRegex : @"World", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Alternative, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Alternative", language, out genreRegex) ? genreRegex : @"Alternative", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Compilation, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Compilation", language, out genreRegex) ? genreRegex : @"Compilation", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Audiobook, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Audiobook", language, out genreRegex) ? genreRegex : @"Audiobook", RegexOptions.IgnoreCase)), new GenreMapping((int)AudioGenre.Karaoke, new Regex(GenreStringManager.TryGetGenreString("Match", "Audio.Karaoke", language, out genreRegex) ? genreRegex : @"Karaoke", RegexOptions.IgnoreCase)), }); MusicGenreMap.TryAdd(language, list); }
public static async Task <IList <WebProgramBasic> > ProcessAsync(IOwinContext context, string channelId, DateTime startTime, DateTime endTime) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetProgramsBasicForChannel: ITvProvider not found"); } var programs = await TVAccess.GetGroupProgramsAsync(context, startTime, endTime, int.Parse(channelId)); if (programs.Count == 0) { Logger.Warn("GetProgramsBasicForChannel: Couldn't get Now/Next Info for channel with Id: {0}", channelId); } return(programs.Select(program => ProgramBasic(program)).ToList()); }
public static async Task <WebChannelDetailed> ProcessAsync(IOwinContext context, string channelId) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetChannelDetailedById: ITvProvider not found"); } var channel = await TVAccess.GetChannelAsync(int.Parse(channelId)); if (channel == null) { throw new NotFoundException(string.Format("GetChannelDetailedById: Couldn't get channel with Id: {0}", channelId)); } return(ChannelDetailed(channel)); }
public IList <IChannelGroup> GetItems(string sortCriteria) { if (ServiceRegistration.IsRegistered <ITvProvider>()) { IChannelAndGroupInfoAsync channelAndGroupInfo = ServiceRegistration.Get <ITvProvider>() as IChannelAndGroupInfoAsync; IList <IChannelGroup> channelGroups = new List <IChannelGroup>(); var result = channelAndGroupInfo.GetChannelGroupsAsync().Result; if (result.Success) { result.Result = FilterGroups(result.Result); return(result.Result.OrderBy(g => g.Name).ToList()); } } return(null); }
public IList <IChannel> GetItems(string sortCriteria) { if (ServiceRegistration.IsRegistered <ITvProvider>()) { IChannelAndGroupInfoAsync channelAndGroupInfo = ServiceRegistration.Get <ITvProvider>() as IChannelAndGroupInfoAsync; IChannelGroup group = new ChannelGroup() { ChannelGroupId = GroupId }; var res = channelAndGroupInfo.GetChannelsAsync(group).Result; if (res.Success) { return(res.Result.OrderBy(c => c.Name).ToList()); } } return(null); }
public static async Task <WebScheduleBasic> ProcessAsync(IOwinContext context, string scheduleId) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetScheduleById: ITvProvider not found"); } var schedule = await TVAccess.GetScheduleAsync(context, int.Parse(scheduleId)); if (schedule == null) { throw new NotFoundException(string.Format("GetScheduleById: Couldn't get schedule with Id: {0}", scheduleId)); } WebScheduleBasic output = ScheduleBasic(schedule); return(output); }
public static Task <WebBoolResult> ProcessAsync(IOwinContext context, string id) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("DeleteRecording: ITvProvider not found"); } MediaItem item = MediaLibraryAccess.GetMediaItemById(context, Guid.Parse(id), BasicNecessaryMIATypeIds, BasicOptionalMIATypeIds); if (item == null) { throw new NotFoundException(String.Format("DeleteRecording: No MediaItem found with id: {0}", id)); } return(System.Threading.Tasks.Task.FromResult(new WebBoolResult { Result = MediaLibraryAccess.Delete(context, item) })); }
public static async Task <WebProgramDetailed> ProcessAsync(IOwinContext context, string programId) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetProgramDetailedById: ITvProvider not found"); } IProgram program = await TVAccess.GetProgramAsync(context, int.Parse(programId)); if (program == null) { throw new NotFoundException(string.Format("GetProgramDetailedById: Couldn't get Now/Next Info for channel with Id: {0}", programId)); } WebProgramDetailed webProgramDetailed = ProgramDetailed(program); return(webProgramDetailed); }
public static async Task <WebBoolResult> ProcessAsync(IOwinContext context, string programId) { if (programId == null) { throw new BadRequestException("CancelSchedule: programId is null"); } if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("CancelSchedule: ITvProvider not found"); } bool result = await TVAccess.UnCancelScheduleAsync(context, int.Parse(programId)); return(new WebBoolResult { Result = result }); }
public static async Task <WebProgramDetailed> ProcessAsync(IOwinContext context, string channelId) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetCurrentProgramOnChannel: ITvProvider not found"); } var programs = await TVAccess.GetChannelNowNextProgramAsync(context, int.Parse(channelId)); if (programs == null) { throw new BadRequestException(string.Format("GetCurrentProgramOnChannel: Couldn't get Now/Next Info for channel with Id: {0}", channelId)); } WebProgramDetailed webProgramDetailed = ProgramDetailed(programs[0]); return(webProgramDetailed); }
protected static async Task <IList <IChannelGroup> > GetChannelGroupsAsync(bool isTv) { if (!ServiceRegistration.IsRegistered <ITvHandler>()) { Logger.Error($"WifiRemote: List Channel Groups: No tv handler"); return(new List <IChannelGroup>()); } ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>(); var channelGroups = await tvHandler.ChannelAndGroupInfo.GetChannelGroupsAsync(); if (!channelGroups.Success) { Logger.Error($"WifiRemote: List Channel Groups: Error getting groups"); return(new List <IChannelGroup>()); } return(channelGroups.Result.Where(g => g.MediaType == (isTv ? MediaType.TV : MediaType.Radio)).ToList()); }
protected static async Task <IList <ISchedule> > GetSchedulesAsync() { if (!ServiceRegistration.IsRegistered <ITvHandler>()) { Logger.Error($"WifiRemote: List Schedules: No tv handler"); return(new List <ISchedule>()); } ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>(); var schedules = await tvHandler.ScheduleControl.GetSchedulesAsync(); if (!schedules.Success) { Logger.Error($"WifiRemote: List Schedules: Error getting schedules"); return(new List <ISchedule>()); } return(schedules.Result); }
public static async Task <WebChannelGroup> ProcessAsync(IOwinContext context, string groupId) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetRadioGroupById: ITvProvider not found"); } // select the channel Group we are looking for var group = await TVAccess.GetGroupAsync(context, int.Parse(groupId)); if (group == null) { throw new NotFoundException(string.Format("GetRadioGroupById: group with id: {0} not found", groupId)); } WebChannelGroup webChannelGroup = ChannelGroup(group); return(webChannelGroup); }
public static async Task <IList <WebChannelDetailed> > ProcessAsync(IOwinContext context, string groupId, WebSortField?sort, WebSortOrder?order) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetChannelsDetailed: ITvProvider not found"); } List <WebChannelDetailed> output = new List <WebChannelDetailed>(); var channels = await TVAccess.GetGroupChannelsAsync(context, groupId != null?int.Parse(groupId) : (int?)null); output.AddRange(channels.Where(x => x.MediaType == MediaType.TV).Select(channel => ChannelDetailed(channel))); // sort if (sort != null && order != null) { output = output.SortChannelList(sort, order).ToList(); } return(output); }
public static async Task <IList <WebUser> > ProcessAsync(IOwinContext context) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetActiveUsers: ITvProvider not found"); } var cards = await TVAccess.GetVirtualCardsAsync(context); return(cards.Select(card => new WebUser { ChannelId = card.User.IdChannel, Name = card.User.Name, CardId = card.User.CardId, HeartBeat = card.User.HeartBeat, IsAdmin = card.User.IsAdmin, SubChannel = card.User.SubChannel, TvStoppedReason = (int)card.User.TvStoppedReason, }).ToList()); }
public static async Task <WebBoolResult> ProcessAsync(IOwinContext context, string programId) { if (programId == null) { throw new BadRequestException("GetProgramIsScheduled: programId is null"); } if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetProgramIsScheduled: ITvProvider not found"); } var recordingStatus = await TVAccess.GetProgramRecordingStatusAsync(context, int.Parse(programId)); bool result = recordingStatus == RecordingStatus.Recording || recordingStatus == RecordingStatus.RuleScheduled || recordingStatus == RecordingStatus.Scheduled || recordingStatus == RecordingStatus.SeriesScheduled; return(new WebBoolResult { Result = result }); }
public override void Initialise(string sortCriteria, uint?offset = null, uint?count = null) { base.Initialise(sortCriteria, offset, count); if (ServiceRegistration.IsRegistered <ITvProvider>()) { IChannelAndGroupInfoAsync channelAndGroupInfo = ServiceRegistration.Get <ITvProvider>() as IChannelAndGroupInfoAsync; var res = channelAndGroupInfo?.GetChannelAsync(ChannelId).Result; if (res?.Success ?? false) { var dlnaItem = Client.GetLiveDlnaItem(ChannelId); if (dlnaItem == null) { var mediaItem = Client.StoreLiveDlnaItem(ChannelId); if (mediaItem == null) { Logger.Error("MediaServer: Error analyzing channel {0} stream", ChannelId); return; } } IChannel channel = res.Result; try { if (channel.MediaType == MediaType.TV) { Add(new MediaLibraryVideoBroadcastItem(channel.Name, channel.ChannelId, Client)); } else if (channel.MediaType == MediaType.Radio) { Add(new MediaLibraryAudioBroadcastItem(channel.Name, channel.ChannelId, Client)); } } catch (Exception ex) { Logger.Error("MediaServer: Error analyzing channel {0}", ex, ChannelId); } } } }
public static async Task <Stream> CorrectPlaylistUrlsAsync(string baseUrl, string playlist) { if (ServiceRegistration.IsRegistered <IMediaConverter>()) { IMediaConverter converter = ServiceRegistration.Get <IMediaConverter>(); if (baseUrl == null) { baseUrl = ""; } StringBuilder palylistBuilder = new StringBuilder(); using (var streamReader = new StreamReader(playlist, Encoding.UTF8)) using (var streamWriter = new StringWriter(palylistBuilder)) { string line = await streamReader.ReadLineAsync().ConfigureAwait(false); while (line != null) { //Fix ffmpeg adding 1 second to the target time if (line.Contains("#EXT-X-TARGETDURATION:")) { line = line.Replace("#EXT-X-TARGETDURATION:" + (converter.HLSSegmentTimeInSeconds + 1), "#EXT-X-TARGETDURATION:" + converter.HLSSegmentTimeInSeconds); } //Replace URL if (line.Contains(URL_PLACEHOLDER)) { line = line.Replace(URL_PLACEHOLDER, baseUrl); } await streamWriter.WriteLineAsync(line).ConfigureAwait(false); line = await streamReader.ReadLineAsync().ConfigureAwait(false); } } var memStream = new MemoryStream(Encoding.UTF8.GetBytes(palylistBuilder.ToString())); memStream.Position = 0; return(memStream); } return(null); }
public static async Task <IList <WebProgramDetailed> > ProcessAsync(IOwinContext context, string channelId) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetNowNextWebProgramDetailedForChannel: ITvProvider not found"); } var programs = await TVAccess.GetChannelNowNextProgramAsync(context, int.Parse(channelId)); if (programs == null) { throw new NotFoundException(string.Format("GetNowNextWebProgramDetailedForChannel: Couldn't get Now/Next Info for channel with Id: {0}", channelId)); } List <WebProgramDetailed> output = new List <WebProgramDetailed> { ProgramDetailed(programs[0]), ProgramDetailed(programs[1]) }; return(output); }
public static async Task <WebBoolResult> ProcessAsync(IOwinContext context, string scheduleId, string channelId = null, string title = null, DateTime?startTime = null, DateTime?endTime = null, WebScheduleType?scheduleType = null, int?preRecordInterval = null, int?postRecordInterval = null, string directory = null, int?priority = null) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("EditSchedule: ITvProvider not found"); } bool result = await TVAccess.EditScheduleAsync(context, int.Parse(scheduleId), channelId != null?int.Parse(channelId) : (int?)null, title, startTime, endTime, scheduleType, preRecordInterval, postRecordInterval, directory, priority); return(new WebBoolResult { Result = result }); }
private static void ThreadProc() { while (_screenControl == null) { try { if (ServiceRegistration.IsRegistered <IScreenControl>()) { _screenControl = ServiceRegistration.Get <IScreenControl>(); _rawInput = new RawInputHandler(_screenControl.MainWindowHandle, CAPTURE_ONLY_IN_FOREGROUND); _rawInput.AddMessageFilter(); // Adding a message filter will cause keypresses to be handled _rawInput.KeyPressed += OnKeyPressed; } } catch { // ignored } Thread.Sleep(500); } }
public static Task <Stream> CreateSubsPlaylistAsync(VideoTranscoding video, long startSegment) { if (ServiceRegistration.IsRegistered <IMediaConverter>()) { IMediaConverter converter = ServiceRegistration.Get <IMediaConverter>(); StringBuilder palylistBuilder = new StringBuilder(); using (StringWriter writer = new StringWriter(palylistBuilder)) { writer.WriteLine("#EXTM3U"); writer.WriteLine("#EXT-X-VERSION:3"); writer.WriteLine("#EXT-X-ALLOW-CACHE:NO"); writer.WriteLine("#EXT-X-TARGETDURATION:" + converter.HLSSegmentTimeInSeconds); writer.WriteLine("#EXT-X-MEDIA-SEQUENCE:0"); writer.WriteLine(); double remainingDuration = video.SourceMediaDuration.TotalSeconds; remainingDuration -= (Convert.ToDouble(startSegment) * Convert.ToDouble(converter.HLSSegmentTimeInSeconds)); while (remainingDuration > 0) { double segmentTime = remainingDuration >= converter.HLSSegmentTimeInSeconds ? converter.HLSSegmentTimeInSeconds : remainingDuration; writer.WriteLine("#EXTINF:" + segmentTime.ToString("0.000000", CultureInfo.InvariantCulture) + ","); writer.WriteLine(URL_PLACEHOLDER + "playlist" + startSegment.ToString("0") + ".vtt"); writer.WriteLine(); startSegment++; remainingDuration -= converter.HLSSegmentTimeInSeconds; } writer.WriteLine("#EXT-X-ENDLIST"); } var memStream = new MemoryStream(Encoding.UTF8.GetBytes(palylistBuilder.ToString())); memStream.Position = 0; return(Task.FromResult <Stream>(memStream)); } return(Task.FromResult <Stream>(null)); }
public static Task <IList <WebRecordingBasic> > ProcessAsync(IOwinContext context, WebSortField?sort, WebSortOrder?order, string filter = null) { if (!ServiceRegistration.IsRegistered <ITvProvider>()) { throw new BadRequestException("GetRecordings: ITvProvider not found"); } IList <MediaItem> items = MediaLibraryAccess.GetMediaItemsByAspect(context, BasicNecessaryMIATypeIds, BasicOptionalMIATypeIds); List <WebRecordingBasic> output = items.Select(item => RecordingBasic(item)).ToList(); // sort and filter if (sort != null && order != null) { output = output.Filter(filter).SortRecordingList(sort, order).ToList(); } else { output = output.Filter(filter).ToList(); } return(System.Threading.Tasks.Task.FromResult <IList <WebRecordingBasic> >(output)); }