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;
        }
Example #2
0
        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);
                }
            }
        }
Example #3
0
        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)");
        }
Example #4
0
 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);
     }
 }
Example #5
0
        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);
            }
        }
Example #6
0
        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");
            }
        }
Example #7
0
        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());
            }
        }
Example #8
0
        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");
            }
        }