-
大小: 339KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-05-10
- 語(yǔ)言: 其他
- 標(biāo)簽: GoogleTake??
資源簡(jiǎn)介
Google為用戶提供了一種通過(guò)Google TakeOut從Google照片下載數(shù)據(jù)的方法。用戶可以下載包含所有(真的嗎?)照片的zip文件。問(wèn)題是Google選擇性地將Json文件替換為zip中的圖像文件。該json文件包含實(shí)際圖像所在的鏈接

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;
using?System.Json;
using?System.IO;
using?System.Net;
namespace?GoogleTakeoutImageDownloader
{
????public?interface?IDownloadProgressNotifier
????{
????????void?OnCurrentFileProgress(String?sCurrentFileName?int?processedFilesCount?int?totalFileCount);
????????void?onerror(String?sFileName?String?sErrorInformation);
????????void?PreDownload(int?TotalFilesCount);
????????void?OnDownloadFinish();
????}
????public?class?DownloadManager
????{
????????bool?stoponerror?=?false;
????????String?inputRootFolder;
????????String?outputRootFolder;
????????bool?overwriteOutputFolder?=?false;
????????IDownloadProgressNotifier?Notifier;
????????const?String?JSON_JPEG_FILE_FILTER?=?@“*.jpg.json“;
????????int?TotalFilesCount?=?0;
????????int?ProcessedFilesCount?=?0;
????????public?DownloadManager(String?RootFolder?String?outRootFolder?bool?bOverwrite?bool?bStoponerror?IDownloadProgressNotifier?notificationHandler)
????????{
????????????stoponerror?=?bStoponerror;
????????????inputRootFolder?=?RootFolder;
????????????outputRootFolder?=?outRootFolder;
????????????overwriteOutputFolder?=?bOverwrite;
????????????Notifier?=?notificationHandler;
????????????//
????????????//?Count?all?files?needs?to?be?processes.
????????????//
????????????TotalFilesCount?=?Directory.EnumerateFiles(inputRootFolder?JSON_JPEG_FILE_FILTER?SearchOption.AllDirectories).Count();
????????}
????????public?void?StartDownload()
????????{
????????????if?(Notifier?!=?null)
????????????????Notifier.PreDownload(TotalFilesCount);
????????????//
????????????//Create?Folder?structure?in?the?output?directory.
????????????//
????????????CreateDirectory(new?DirectoryInfo(Path.GetDirectoryName(inputRootFolder)));
????????????TraverseFolderTree(inputRootFolder);
????????????if?(Notifier?!=?null)
????????????????Notifier.OnDownloadFinish();
????????}
????????public?static?void?CreateDirectory(DirectoryInfo?directory)
????????{
????????????if?(!directory.Parent.Exists)
????????????????CreateDirectory(directory.Parent);
????????????directory.Create();
????????}
????????private?void?TraverseFolderTree(String?sSeedFolder)
????????{
????????????String?sCurrentOutputFolder?=?sSeedFolder.Replace(inputRootFolder?outputRootFolder)?;
????????????//
????????????//Create?folder?in?output?folder?hierarchy.?It?will?be?skipped?for?first?call.
????????????//
????????????if?(sSeedFolder?==?string.Empty)
????????????????Directory.CreateDirectory(sCurrentOutputFolder);
????????????//
????????????//?Traverse?through?all?directories?recursively.
????????????//
????????????foreach?(String?strDirectory?in?Directory.EnumerateDirectories(sSeedFolder))
????????????{
????????????????TraverseFolderTree(strDirectory);
????????????}
????????????//Create?Output?directory?if?not?alreaday?existed.
????????????if?(!Di
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\.vs\
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\.vs\GoogleTakeoutImageDownloader\
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\.vs\GoogleTakeoutImageDownloader\v15\
?????文件??????221696??2017-12-28?03:41??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\.vs\GoogleTakeoutImageDownloader\v15\.suo
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\.vs\GoogleTakeoutImageDownloader\v15\Server\
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\.vs\GoogleTakeoutImageDownloader\v15\Server\sqlite3\
?????文件???????????0??2017-12-09?20:10??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\.vs\GoogleTakeoutImageDownloader\v15\Server\sqlite3\db.lock
?????文件??????790528??2017-12-28?03:41??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\.vs\GoogleTakeoutImageDownloader\v15\Server\sqlite3\storage.ide
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\
?????文件????????1183??2017-12-09?20:10??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader.sln
?????文件?????????189??2017-12-09?20:10??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\App.config
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\bin\
?????目錄???????????0??2017-12-28?03:40??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\bin\Debug\
?????目錄???????????0??2017-12-28?03:40??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\bin\Release\
?????文件????????4810??2017-12-28?01:40??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\DownloadManager.cs
?????文件????????3421??2017-12-28?02:39??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\Form1.cs
?????文件????????7447??2017-12-28?02:24??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\Form1.Designer.cs
?????文件????????5817??2017-12-28?02:24??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\Form1.resx
?????文件????????3992??2017-12-10?15:27??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader.csproj
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Debug\
?????文件????????1464??2017-12-23?13:16??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Debug\DesignTimeResolveAssemblyReferences.cache
?????文件???????24620??2017-12-28?03:40??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件???????????0??2017-12-28?02:39??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Debug\GoogleTakeoutImageDownloader.csproj.CopyComplete
?????文件???????????0??2017-12-09?20:10??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
?????文件???????????0??2017-12-09?20:10??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
?????文件???????????0??2017-12-09?20:10??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
?????目錄???????????0??2017-12-09?20:10??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Debug\TempPE\
?????目錄???????????0??2017-12-28?03:43??GoogleTakeOutImageDownloader_source\GoogleTakeoutImageDownloader\GoogleTakeoutImageDownloader\obj\Release\
............此處省略51個(gè)文件信息
評(píng)論
共有 條評(píng)論