예제 #1
0
        public PlaylistVideoModel GetPlaylistVideoModelById(Guid playlistId)
        {
            PlaylistVideoModel playlistVideoModel = new PlaylistVideoModel();
            var playlistDetail = _context.TblYoutubeVideoGroups.FirstOrDefault(playlist => playlist.Id == playlistId);

            if (playlistDetail != null)
            {
                playlistVideoModel.playlistDetail = _iMapper.Map <PlayList>(playlistDetail);
                if (playlistVideoModel.playlistDetail.parentGroupId != null)
                {
                    var groupName = _context.TblYoutubeVideoGroups.FirstOrDefault(y => y.Id == playlistVideoModel.playlistDetail.parentGroupId)?.GroupName;
                    playlistVideoModel.playlistDetail.parentGroupSelectListItem = new SelectListItemStringModel {
                        text = groupName, value = playlistVideoModel.playlistDetail.parentGroupId.ToString()
                    };
                }

                var playlistVideos = _context.TblYoutubeVideos.OrderBy(x => x.SequenceNumber).Where(video => video.GroupId == playlistDetail.Id && video.IsDeleted != true)?.ToList();
                if (playlistVideos != null && playlistVideos.Count > 0)
                {
                    playlistVideoModel.playlistVideos = _iMapper.Map <List <Video> >(playlistVideos);
                    playlistVideoModel.totalResults   = playlistVideoModel.playlistVideos.Count();
                }
            }
            return(playlistVideoModel);
        }
예제 #2
0
        public bool isPlaylistAlreadyExist(PlaylistVideoModel playlistVideoModel)
        {
            if (_context.TblYoutubeVideoGroups.Any(x => x.Id != playlistVideoModel.playlistDetail.id && x.PlaylistId == playlistVideoModel.playlistDetail.playlistId))
            {
                return(true);
            }

            return(false);
        }
 public void ValidatePlaylistModel(PlaylistVideoModel model, ModelStateDictionary ModelState)
 {
     if (model.playlistDetail == null)
     {
         ModelState.AddModelError("error", "Playlist model does not exist.");
         return;
     }
     if (_youtubeRepository.isPlaylistAlreadyExist(model))
     {
         ModelState.AddModelError("error", $"Playlist with id {model.playlistDetail.playlistId} already exist.");
     }
 }
예제 #4
0
 public Guid?SavePlaylist(PlaylistVideoModel playlistVideoModel)
 {
     if (playlistVideoModel.playlistDetail != null)
     {
         var tblPlaylist = new TblYoutubeVideoGroups();
         if (playlistVideoModel.playlistDetail.id != null)
         {
             tblPlaylist = _context.TblYoutubeVideoGroups.Where(group => group.Id == playlistVideoModel.playlistDetail.id).FirstOrDefault();
             if (tblPlaylist == null)
             {
                 tblPlaylist = _iMapper.Map <TblYoutubeVideoGroups>(playlistVideoModel.playlistDetail);
             }
         }
         _iMapper.Map(playlistVideoModel.playlistDetail, tblPlaylist);
         if (playlistVideoModel.playlistDetail.parentGroupSelectListItem != null)
         {
             if (!(String.IsNullOrEmpty(playlistVideoModel.playlistDetail.parentGroupSelectListItem.value) ||
                   String.IsNullOrWhiteSpace(playlistVideoModel.playlistDetail.parentGroupSelectListItem.value)))
             {
                 tblPlaylist.ParentGroupId = new Guid(playlistVideoModel.playlistDetail.parentGroupSelectListItem.value);
             }
         }
         if (tblPlaylist.Id == Guid.Empty)
         {
             tblPlaylist.CreatedDate = DateTime.Now;
             tblPlaylist.Id          = Guid.NewGuid();
             _context.TblYoutubeVideoGroups.Add(tblPlaylist);
             _context.SaveChanges();
         }
         else
         {
             _context.Entry(tblPlaylist).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
             _context.SaveChanges();
         }
         playlistVideoModel.playlistDetail.id = tblPlaylist.Id;
     }
     if (playlistVideoModel.playlistVideos != null)
     {
         foreach (var video in playlistVideoModel.playlistVideos)
         {
             video.groupId = playlistVideoModel.playlistDetail.id;
             SaveVideo(video);
         }
     }
     return(playlistVideoModel.playlistDetail.id);
 }
예제 #5
0
        public PlaylistVideoModel GetVideosByPlaylistId(string playlistId, string apiKey)
        {
            var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey          = apiKey,
                ApplicationName = this.GetType().ToString()
            });


            List <PlaylistItemListResponse> lstPlaylistItemListResponse = new List <PlaylistItemListResponse>();
            var playListResponse = new PlaylistItemListResponse();
            var nextPageToken    = "";

            while (nextPageToken != null)
            {
                var searchPlaylistRequest = youtubeService.PlaylistItems.List("snippet,contentDetails,id");
                searchPlaylistRequest.PlaylistId = playlistId;
                searchPlaylistRequest.PageToken  = nextPageToken;
                searchPlaylistRequest.MaxResults = 50;
                playListResponse = searchPlaylistRequest.Execute();
                lstPlaylistItemListResponse.Add(playListResponse);
                nextPageToken = playListResponse.NextPageToken;
            }
            var playlistVideoModel = new PlaylistVideoModel();

            playlistVideoModel.playlistDetail = new PlayList();
            playlistVideoModel.playlistVideos = new List <Models.Video>();
            var firstplaylist = 0;

            foreach (var playlist in lstPlaylistItemListResponse)
            {
                if (playlist.Items.Count > 0)
                {
                    if (firstplaylist == 0)
                    {
                        var firstPlaylist = playlist.Items.First();
                        playlistVideoModel.playlistDetail.channelId        = firstPlaylist.Snippet.ChannelId;
                        playlistVideoModel.playlistDetail.playlistId       = firstPlaylist.Snippet.PlaylistId;
                        playlistVideoModel.playlistDetail.groupName        = firstPlaylist.Snippet.Title;
                        playlistVideoModel.playlistDetail.groupDescription = firstPlaylist.Snippet.Description;
                        playlistVideoModel.playlistDetail.groupImageUrl    = firstPlaylist.Snippet.Thumbnails?.Medium?.Url;
                        playlistVideoModel.totalResults = playlist.PageInfo.TotalResults;
                        playlistVideoModel.playlistDetail.languageId = -1;
                        playlistVideoModel.playlistDetail.genreId    = -1;
                    }
                    foreach (var item in playlist.Items)
                    {
                        Models.Video video = new Models.Video();
                        video.videoId        = item.Snippet.ResourceId.VideoId;
                        video.videoName      = item.Snippet.Title;
                        firstplaylist        = firstplaylist + 1;
                        video.sequenceNumber = firstplaylist;
                        video.imageUrl60     = item.Snippet.Thumbnails?.Standard?.Url;
                        video.imageUrl90     = item.Snippet.Thumbnails?.Medium?.Url;
                        video.imageUrl120    = item.Snippet.Thumbnails?.High?.Url;
                        playlistVideoModel.playlistVideos.Add(video);
                    }
                }
            }
            return(playlistVideoModel);
        }
예제 #6
0
 public Guid?SavePlaylist(PlaylistVideoModel model)
 {
     return(this._youtubeRepository.SavePlaylist(model));
 }