/// <summary> /// 動画リストの更新のみを担当する /// </summary> /// <param name="videos"></param> /// <returns></returns> public IAttemptResult Refresh(IEnumerable <IListVideoInfo> originalVideos, Action <IListVideoInfo> addFunc, bool disableDBRetrieving = false) { var playlistID = this._current.SelectedPlaylist.Value?.Id ?? -1; if (playlistID == -1) { return(AttemptResult.Fail($"プレイストが選択されていません。")); } string format = this._settingsContainer.GetReactiveStringSetting(SettingsEnum.FileNameFormat, Format.DefaultFileNameFormat).Value; bool replaceStricted = this._settingsContainer.GetReactiveBoolSetting(SettingsEnum.ReplaceSBToMB).Value; string folderPath = this._current.PlaylistFolderPath; string?economySuffix = this._settingsContainer.GetReactiveStringSetting(SettingsEnum.EconomySuffix).Value; bool searchExact = this._settingsContainer.GetReactiveBoolSetting(SettingsEnum.SearchExact).Value; this._videoThumnailUtility.GetFundamentalThumbsIfNotExist(); this._localVideoUtils.ClearCache(); this._lightVideoListinfoHandler.AddPlaylist(playlistID); foreach (var originalVideo in originalVideos) { if (playlistID != (this._current.SelectedPlaylist.Value?.Id ?? -1)) { return(AttemptResult.Fail($"動画リスト更新中にプレイリストが変更されました。")); } IListVideoInfo video; if (disableDBRetrieving) { video = originalVideo; } else { IAttemptResult <IListVideoInfo> vResult = this._videoHandler.GetVideo(originalVideo.Id.Value); if (!vResult.IsSucceeded || vResult.Data is null) { continue; } video = vResult.Data; } ILightVideoListInfo light = this._lightVideoListinfoHandler.GetLightVideoListInfo(video.NiconicoId.Value, playlistID); video.Message = light.Message; video.IsSelected = light.IsSelected; var filename = this._localVideoUtils.GetFilePath(video, folderPath, format, replaceStricted, searchExact); if (filename.EndsWith(FileFolder.Mp4FileExt) || filename.EndsWith(FileFolder.TsFileExt)) { video.FileName.Value = filename; video.FolderPath.Value = Path.GetDirectoryName(filename) ?? folderPath; video.IsDownloaded.Value = !video.FileName.Value.IsNullOrEmpty(); if (economySuffix is not null) { if (filename.Contains(economySuffix)) { video.IsEconomy.Value = true; } else { video.IsEconomy.Value = false; } } } else { video.FolderPath.Value = filename; } //サムネイル bool hasCache = this._videoThumnailUtility.HasThumbnailCache(video); bool IsValidUrl = this._videoThumnailUtility.IsValidThumbnailUrl(video); bool IsValidPath = this._videoThumnailUtility.IsValidThumbnailPath(video); if (IsValidUrl && !hasCache) { this._videoThumnailUtility.GetThumbAsync(video, () => { video.IsThumbDownloading.Value = false; if (this._videoThumnailUtility.HasThumbnailCache(video)) { video.ThumbPath.Value = this._videoThumnailUtility.GetThumbFilePath(video.NiconicoId.Value); } }); video.IsThumbDownloading.Value = true; video.ThumbPath.Value = this._videoThumnailUtility.GetThumbFilePath("0"); addFunc(video); } else if (!IsValidPath && hasCache) { video.ThumbPath.Value = this._videoThumnailUtility.GetThumbFilePath(video.NiconicoId.Value); this._videoHandler.Update(video); addFunc(video); } else if (!hasCache) { video.ThumbPath.Value = this._videoThumnailUtility.GetThumbFilePath("0"); addFunc(video); } else { video.ThumbPath.Value = this._videoThumnailUtility.GetThumbFilePath(video.NiconicoId.Value); addFunc(video); } } return(new AttemptResult() { IsSucceeded = true, }); }
public void Uncheck(string niconicoID, int playlistID) { ILightVideoListInfo video = this._handler.GetLightVideoListInfo(niconicoID, playlistID); video.IsSelected.Value = false; }