public void OnGet(int id, int rating, string videoId, string videoName, string videoChannel, string videoDate, string videoDuration, string videoThumbnail, bool canRemove) { VideoModel video = new VideoModel(videoId, videoName, videoChannel, videoDate, videoDuration, videoThumbnail); MyItem = new QueueItemModel(id, video, rating); CanRemove = canRemove; }
public async Task NextSong(string sessionId, bool fromPlay) { if (SessionHandler.IsValidSession(sessionId)) { QueueModel myQueue = SessionHandler.GetQueue(sessionId); PlayerModel myPlayer = SessionHandler.GetPlayer(sessionId); if (myQueue.Queue.Count > 0) { QueueItemModel next = myQueue.Queue[0]; myQueue.PopFromQueue(); myPlayer.VideoId = next.Video.VideoId; myPlayer.VideoName = next.Video.Name; myPlayer.TotalSeconds = 0; myPlayer.Start(); if (fromPlay) { await Clients.Group(sessionId).SendAsync("Play", myPlayer.GetVideoDetails()); } else { await Clients.Group(sessionId).SendAsync("NextSong", myPlayer.GetVideoDetails()); } } else { await DisposePlayer(sessionId); } } }
private string GetEntityMessage(QueueItemModel item, out IIndexModel indexModel, out IndexItemModel itemModel) { indexModel = entityRepository.GetById(item.TargetEntityId.ToString()); var options = entityRepository.LoadOptions(indexModel.Id.ToString(), new List <string> { "Indexer" }); var reporterMappingColumnOption = options.FirstOrDefault(o => o.Key == "indexer_reporter_columns"); var reporterMappingColumns = !string.IsNullOrWhiteSpace(reporterMappingColumnOption?.Value) ? JsonConvert.DeserializeObject <List <ReporterColumnMapping> >(reporterMappingColumnOption.Value) : new List <ReporterColumnMapping> { new ReporterColumnMapping { SourceName = "Value", MappingName = "Name", Key = true, Value = true } }; var entityModel = entityRepository.GetIndexedItemById(indexModel, item.TargetItemId); itemModel = entityModel; var keys = reporterMappingColumns.Where(r => r.Key) .Select(r => $@"_{r.MappingName}_: {entityModel.GetValue(r.SourceName)?.ToString() ?? "(empty)"}"); var vals = reporterMappingColumns.Where(r => r.Value) .Select(r => $@"_{r.MappingName}_: {entityModel.GetValue(r.SourceName)?.ToString() ?? "(empty)"}"); if (reporterMappingColumns.Count == 1) { vals = reporterMappingColumns.Where(r => r.Value) .Select(r => $@"{entityModel.GetValue(r.SourceName)?.ToString() ?? "(empty)"}"); } var executed = item.ExecutedAt.UnixTimeToTime().ToString("G"); var executedIn = item.ExecutedAt - item.ExecuteAt; return($@"*{indexModel.Name}* ({string.Join(", ", keys)}): {vals} {executed} in {executedIn} second(s)"); }
public async Task AddVote(string sessionId, int itemId) { if (SessionHandler.IsValidSession(sessionId)) { QueueModel myQueue = SessionHandler.GetQueue(sessionId); QueueItemModel myItem = myQueue.Queue.Where(item => item.Id == itemId).First(); myItem.Rating++; await Clients.Group(sessionId).SendAsync("SetRating", myItem.Rating, itemId); } }
public async Task Remove(string sessionId, string userId, int itemId) { if (SessionHandler.IsValidSession(sessionId)) { if (!SessionHandler.GetPermissions(sessionId).CanRemove&& !SessionHandler.IsHostUser(sessionId, userId)) { return; } QueueModel myQueue = SessionHandler.GetQueue(sessionId); QueueItemModel myItem = myQueue.Queue.Where(item => item.Id == itemId).First(); myQueue.Queue.Remove(myItem); await Clients.Group(sessionId).SendAsync("RemoveItem", itemId); } }
public async Task MigrateClientQueue(string sessionId, string queue) { if (SessionHandler.IsValidSession(sessionId)) { QueueModel myQueue = SessionHandler.GetQueue(sessionId); string[] charDelimiters = new string[] { "\",\"", ",[\"", "\"],", "],[" }; queue = queue.Replace("[[", ""); queue = queue.Replace("]]", ""); string[] values = queue.Split(charDelimiters, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < values.Length; i += 8) { VideoModel video = new VideoModel(values[i + 1], values[i + 2], values[i + 3], values[i + 4], values[i + 5], values[i + 6]); QueueItemModel queueItem = new QueueItemModel(myQueue.NextId(), video, int.Parse(values[i + 7])); myQueue.Queue.Add(queueItem); } await Clients.Caller.SendAsync("QueueMigrated"); } }
public async Task QueuePlaylist(QueueModel myQueue, int queueCount, string sessionId, string[] data) { if (myQueue == null) { myQueue = new QueueModel(queueCount); } List <VideoModel> playlistVideos = await search.GetPlaylistVideos(data[0]); foreach (VideoModel video in playlistVideos) { QueueItemModel item = new QueueItemModel(myQueue.NextId(), video, 0); myQueue.Queue.Add(item); } if (sessionId != null) { await Clients.Group(sessionId).SendAsync("QueuePlaylist", myQueue.Queue.Where(item => item.Id >= queueCount).ToArray()); } else { await Clients.Caller.SendAsync("QueuePlaylist", myQueue.Queue.Where(item => item.Id >= queueCount).ToArray()); } }
public async Task AddToQueue(string sessionId, string userId, string[] data, bool isPlaylist) { if (SessionHandler.GetUsersSession(userId) == sessionId) { if (!SessionHandler.GetPermissions(sessionId).CanAddPlaylist&& isPlaylist && !SessionHandler.IsHostUser(sessionId, userId)) { return; } QueueModel myQueue = SessionHandler.GetQueue(sessionId); if (isPlaylist) { await QueuePlaylist(myQueue, myQueue.Queue.Count, sessionId, data); } else { VideoModel video = new VideoModel(data[0], data[1], data[2], data[3], data[4], data[5]); QueueItemModel item = new QueueItemModel(myQueue.NextId(), video, 1); myQueue.Queue.Add(item); await Clients.Group(sessionId).SendAsync("AddToQueue", item); } await Clients.Caller.SendAsync("Cancel"); } }