Example #1
0
        public IAttemptResult <int> AddVideo(STypes::Video video)
        {
            //既にデータベースに存在する場合は再利用
            if (this.Exists(video.NiconicoId))
            {
                IAttemptResult <STypes::Video> vResult = this.GetVideo(video.NiconicoId);

                if (!vResult.IsSucceeded || vResult.Data is null)
                {
                    return(AttemptResult <int> .Fail(vResult.Message));
                }


                //動画情報が存在する場合は更新
                if (string.IsNullOrEmpty(video.Title))
                {
                    return(AttemptResult <int> .Succeeded(vResult.Data.Id));
                }

                video.Id = vResult.Data.Id;

                IAttemptResult uResult = this.UpdateInternal(video);

                if (uResult.IsSucceeded)
                {
                    this._logger.Log($"動画を上書きモードで追加しました。(niconicoID:{video.NiconicoId})");
                }

                return(uResult.IsSucceeded switch
                {
                    true => AttemptResult <int> .Succeeded(vResult.Data.Id),
                    _ => AttemptResult <int> .Fail(uResult.Message)
                });
Example #2
0
        public IAttemptResult WireVideoToPlaylist(int videoID, int playlistID)
        {
            IAttemptResult <STypes::Video> vResult = this._videoStoreHandler.GetVideo(videoID);

            if (!vResult.IsSucceeded || vResult.Data is null)
            {
                return(AttemptResult.Fail("追加する動画はDBに保存されていません。"));
            }

            STypes::Video video = vResult.Data;

            video.PlaylistIds.AddUnique(playlistID);
            this._videoStoreHandler.Update(video);

            IAttemptResult result = this._playlistStoreHandler.WireVideo(video, playlistID);

            ITreePlaylistInfo playlistInfo = this._playlistInfoContainer.GetPlaylist(playlistID);
            IListVideoInfo    videoInfo    = this._videoInfoContainer.GetVideo(video.NiconicoId);

            if (!playlistInfo.Videos.Any(v => v.Id.Value == videoID))
            {
                playlistInfo.Videos.Add(videoInfo);
            }

            return(result);
        }
Example #3
0
        public void 複数プレイリストに単一動画を追加する()
        {
            var videoInfo = new STypes::Video();

            videoInfo.NiconicoId = "sm9";
            videoInfo.Title      = "テスト動画";

            IAttemptResult <int> videoResult = this.handler !.AddVideo(videoInfo);

            IAttemptResult <int> v1Result = this.handler !.AddVideo(videoInfo);
            IAttemptResult <int> v2Result = this.handler.AddVideo(videoInfo);

            int videoId1 = v1Result.Data;
            int videoId2 = v2Result.Data;

            IAttemptResult <STypes::Video> video = this.handler.GetVideo(videoId1);

            Assert.That(v1Result.IsSucceeded, Is.True);
            Assert.That(v2Result.IsSucceeded, Is.True);
            Assert.AreEqual(videoId1, videoId2);
            Assert.That(video.IsSucceeded, Is.True);
            Assert.That(video.Data, Is.Not.Null);
            Assert.That(video.Data !.Id, Is.EqualTo(videoId1));
            Assert.That(video.Data.NiconicoId, Is.EqualTo("sm9"));
            Assert.That(video.Data.Title, Is.EqualTo("テスト動画"));
        }
Example #4
0
        public IAttemptResult Update(IListVideoInfo video)
        {
            STypes::Video converted = this._converter.ConvertLocalVideoToStoreVideo(video);

            IAttemptResult result = this._videoStoreHandler.Update(converted);

            return(result);
        }
Example #5
0
        public void 動画を追加する()
        {
            var videoInfo = new STypes::Video();

            videoInfo.NiconicoId = "sm9";
            videoInfo.Title      = "テスト動画";

            IAttemptResult <int> videoResult = this.handler !.AddVideo(videoInfo);

            int videoId = videoResult.Data;

            Assert.That(videoResult.IsSucceeded, Is.True);
            Assert.That(this.handler.Exists(videoId), Is.True);
            Assert.That(this.handler.Exists("sm9"), Is.True);
        }
Example #6
0
        public IAttemptResult UnWireVideoToPlaylist(int videoID, int playlistID)
        {
            IAttemptResult <STypes::Video> vResult = this._videoStoreHandler.GetVideo(videoID);

            if (!vResult.IsSucceeded || vResult.Data is null)
            {
                return(AttemptResult.Fail("削除する動画はDBに保存されていません。"));
            }

            STypes::Video     video        = vResult.Data;
            ITreePlaylistInfo playlistInfo = this._playlistInfoContainer.GetPlaylist(playlistID);
            IListVideoInfo    videoInfo    = this._videoInfoContainer.GetVideo(video.NiconicoId);

            playlistInfo.Videos.RemoveAll(v => v.Id.Value == videoID);

            IAttemptResult result = this._playlistStoreHandler.UnWireVideo(videoID, playlistID);

            return(result);
        }
Example #7
0
        public IAttemptResult WireVideo(STypes::Video video, int playlistId)
        {
            if (!this.Exists(playlistId))
            {
                return(AttemptResult.Fail("指定したプレイリストが存在しません。"));
            }

            IAttemptResult <STypes::Playlist> pResult = this.GetPlaylist(playlistId);

            if (!pResult.IsSucceeded || pResult.Data is null)
            {
                return(AttemptResult.Fail("プレイリストの取得に失敗しました。"));
            }

            STypes::Playlist playlist = pResult.Data;


            if (playlist.Videos is null)
            {
                playlist.Videos = new List <STypes.Video>();
            }

            if (playlist.Videos.Any(v => v.NiconicoId == video.NiconicoId))
            {
                return(AttemptResult.Fail("すでに登録されている動画です。"));
            }

            playlist.Videos.Add(video);
            playlist.CustomVideoSequence.Add(video.Id);

            IAttemptResult uResult = this.databaseInstance.Update(playlist, STypes::Playlist.TableName);

            if (!uResult.IsSucceeded)
            {
                return(AttemptResult.Fail($"動画の追加に失敗しました。(詳細:{uResult.ExceptionMessage})"));
            }

            this.logger.Log($"{video.NiconicoId}をプレイリスト({playlist.PlaylistName})に追加しました。");

            return(AttemptResult.Succeeded());
        }
        public IListVideoInfo ConvertStoreVideoToLocalVideo(STypes::Video source)
        {
            IListVideoInfo converted = this._container.GetVideo(source.NiconicoId);

            converted.Id.Value            = source.Id;
            converted.NiconicoId.Value    = source.NiconicoId;
            converted.Title.Value         = source.Title;
            converted.IsDeleted.Value     = source.IsDeleted;
            converted.OwnerName.Value     = source.OwnerName;
            converted.UploadedOn.Value    = source.UploadedOn;
            converted.LargeThumbUrl.Value = source.LargeThumbUrl;
            converted.ThumbUrl.Value      = source.ThumbUrl;
            converted.ThumbPath.Value     = source.ThumbPath;
            converted.FileName.Value      = source.FileName;
            converted.Tags               = source.Tags ?? new List <string>();
            converted.ViewCount.Value    = source.ViewCount;
            converted.CommentCount.Value = source.CommentCount;
            converted.MylistCount.Value  = source.MylistCount;
            converted.LikeCount.Value    = source.LikeCount;
            converted.OwnerID.Value      = source.OwnerID;
            converted.Duration.Value     = source.Duration;

            return(converted);
        }
        public STypes::Video ConvertLocalVideoToStoreVideo(IListVideoInfo source)
        {
            var converted = new STypes::Video();

            converted.Id            = source.Id.Value;
            converted.NiconicoId    = source.NiconicoId.Value;
            converted.Title         = source.Title.Value;
            converted.UploadedOn    = source.UploadedOn.Value;
            converted.ThumbUrl      = source.ThumbUrl.Value;
            converted.LargeThumbUrl = source.LargeThumbUrl.Value;
            converted.ThumbPath     = source.ThumbPath.Value;
            converted.IsSelected    = source.IsSelected.Value;
            converted.FileName      = source.FileName.Value;
            converted.Tags          = source.Tags.ToList();
            converted.ViewCount     = source.ViewCount.Value;
            converted.CommentCount  = source.CommentCount.Value;
            converted.MylistCount   = source.MylistCount.Value;
            converted.LikeCount     = source.LikeCount.Value;
            converted.Duration      = source.Duration.Value;
            converted.OwnerID       = source.OwnerID.Value;
            converted.OwnerName     = source.OwnerName.Value;

            return(converted);
        }
Example #10
0
 public IAttemptResult WireVideo(STypes::Video video, int playlistId)
 {
     return(AttemptResult.Succeeded());
 }