private static async Task <List <LegacyLocalMylist> > LoadLegacyLocalMylistGroups() { try { var folder = await GetPlaylistsSaveFolder(); if (folder == null) { return(new List <LegacyLocalMylist>()); } var files = await folder.GetFilesAsync(); // 読み込み List <LegacyLocalMylist> loadedItem = new List <LegacyLocalMylist>(); foreach (var file in files) { var playlistFileAccessor = new FolderBasedFileAccessor <LegacyLocalMylist>(folder, file.Name); var playlist = await playlistFileAccessor.Load(); if (playlist != null) { loadedItem.Add(playlist); } } loadedItem.Sort((x, y) => x.SortIndex - y.SortIndex); return(loadedItem); } catch { return(new List <LegacyLocalMylist>()); } }
protected override Task OnInitializeAsync(CancellationToken token) { Debug.Write($"キャッシュ情報のリストアを開始"); return(HohoemaApp.UIDispatcher.RunIdleAsync(async(_) => { using (var releaser = await _CacheRequestProcessingLock.LockAsync()) { // ダウンロード中のアイテムをリストア await RestoreBackgroundDownloadTask(); // キャッシュ完了したアイテムをキャッシュフォルダから検索 await RetrieveCacheCompletedVideos(); // キャッシュリクエストファイルのアクセサーを初期化 var videoSaveFolder = await _HohoemaApp.GetApplicationLocalDataFolder(); _CacheRequestedItemsFileAccessor = new FolderBasedFileAccessor <IList <NicoVideoCacheRequest> >(videoSaveFolder, CACHE_REQUESTED_FILENAME); } // ダウンロード待機中のアイテムを復元 await RestoreCacheRequestedItems(); State = CacheManagerState.Running; }) .AsTask()); }
/// <summary> /// 0.11.x以前のフィード情報をLiteDbへと移行します /// </summary> /// <param name="files"></param> /// <returns></returns> public async Task MigrateBefore_0_11() { var feedGroupFolder = await GetFeedGroupFolder(); if (feedGroupFolder == null) { return; } var files = await feedGroupFolder.GetFilesAsync(); foreach (var file in files) { if (file.FileType == ".json") { var fileName = file.Name; try { var fileAccessor = new FolderBasedFileAccessor <FeedGroup2>(feedGroupFolder, fileName); var item = await fileAccessor.Load(FeedGroupSerializerSettings); if (item != null) { var newDbFeedGroup = new Database.Feed(item.Label); if (item.FeedSourceList != null) { foreach (var source in item.FeedSourceList) { newDbFeedGroup.AddSource(new Database.Bookmark() { Label = source.Name, Content = source.Id, BookmarkType = FollowItemTypeConvertToFeedSourceType(source.FollowItemType) }); } } Database.FeedDb.AddOrUpdate(newDbFeedGroup); Debug.WriteLine($"FeedManager: [Sucesss] load {item.Label}"); continue; } else { Debug.WriteLine($"FeedManager: [?] .json but not FeedGroup file < {fileName}"); } } catch { Debug.WriteLine($"FeedManager: [Failed] load {file.Path}"); } } } await feedGroupFolder.DeleteAsync(StorageDeleteOption.PermanentDelete); }
public LocalMylist CreatePlaylist(string id, string name) { var sortIndex = _Playlists.Count > 0 ? _Playlists.Max(x => x.SortIndex) + 1 : 0; var playlist = new LocalMylist(id, name) { HohoemaPlaylist = this, SortIndex = sortIndex }; var playlistFileAccessor = new FolderBasedFileAccessor <LocalMylist>(PlaylistsSaveFolder, playlist.Label + ".json"); _PlaylistFileAccessorMap.Add(playlist.Id, playlistFileAccessor); _Playlists.Add(playlist); Save(playlist).ConfigureAwait(false); return(playlist); }
public async Task Load() { var files = await HohoemaApp.GetSyncRoamingData(PlaylistsSaveFolder); // 古いデータを解放 foreach (var playlist in _Playlists) { playlist.Dispose(); } _PlaylistFileAccessorMap.Clear(); _Playlists.Clear(); // 読み込み List <LocalMylist> loadedItem = new List <LocalMylist>(); foreach (var file in files) { var playlistFileAccessor = new FolderBasedFileAccessor <LocalMylist>(PlaylistsSaveFolder, file.Name); var playlist = await playlistFileAccessor.Load(); if (playlist == null || playlist.Id == WatchAfterPlaylistId) { await playlistFileAccessor.Delete(); continue; } if (playlist != null) { playlist.HohoemaPlaylist = this; // 重複登録されている場合、ファイルの日付が古いほうを削除 // (本来はリネームのミスがないようにするべき) if (_PlaylistFileAccessorMap.ContainsKey(playlist.Id)) { var prevFileAccessor = _PlaylistFileAccessorMap[playlist.Id]; var prevFile = await prevFileAccessor.TryGetFile(); var prevFileProp = await prevFile.GetBasicPropertiesAsync(); var fileProp = await file.GetBasicPropertiesAsync(); if (prevFileProp.DateModified < fileProp.DateModified) { await prevFileAccessor.Delete(StorageDeleteOption.PermanentDelete); _PlaylistFileAccessorMap.Remove(playlist.Id); _PlaylistFileAccessorMap.Add(playlist.Id, playlistFileAccessor); loadedItem.Add(playlist); } else { await HohoemaApp.RoamingDataRemoved(file); await file.DeleteAsync(); } } else { _PlaylistFileAccessorMap.Add(playlist.Id, playlistFileAccessor); loadedItem.Add(playlist); } } } loadedItem.Sort((x, y) => x.SortIndex - y.SortIndex); foreach (var sortedPlaylist in loadedItem) { _Playlists.Add(sortedPlaylist); } }