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) });
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); }
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("テスト動画")); }
public IAttemptResult Update(IListVideoInfo video) { STypes::Video converted = this._converter.ConvertLocalVideoToStoreVideo(video); IAttemptResult result = this._videoStoreHandler.Update(converted); return(result); }
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); }
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); }
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); }
public IAttemptResult WireVideo(STypes::Video video, int playlistId) { return(AttemptResult.Succeeded()); }