├── LICENSE ├── LICENSE-swift-uniyaml ├── PhotosExporter.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── andreas.xcuserdatad │ │ ├── IDEFindNavigatorScopes.plist │ │ ├── UserInterfaceState.xcuserstate │ │ └── xcdebugger │ │ └── Expressions.xcexplist └── xcuserdata │ └── andreas.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ ├── PhotosExporter.xcscheme │ └── xcschememanagement.plist ├── PhotosExporter ├── AppDelegate.swift ├── Info.plist ├── PhotosExporter.entitlements ├── exporter │ ├── FlatFolderDescriptor.swift │ ├── IncrementalPhotosExporter.swift │ ├── MediaLibUtil.swift │ ├── PhotosExporter.swift │ ├── PhotosExporterFactory.swift │ └── SnapshotPhotosExporter.swift ├── photolibrary-access │ ├── PhotoLibraryUtil.swift │ ├── PhotosMetadataReader.swift │ └── PhotosSqliteDAO.swift ├── photosmodel │ ├── MediaObject.swift │ ├── PhotoCollection.swift │ ├── PhotoObject.swift │ └── PhotosMetadata.swift ├── preferences │ ├── Decoder.swift │ ├── Encoder.swift │ ├── PreferencesReader.swift │ ├── YAML.swift │ └── model │ │ ├── FileSystemExportPlan.swift │ │ ├── GooglePhotosExportPlan.swift │ │ ├── MediaObjectFilter.swift │ │ ├── Plan.swift │ │ └── Preferences.swift ├── ui │ ├── DataModel.xcdatamodeld │ │ └── PreferencesDataModel.xcdatamodel │ │ │ └── contents │ ├── MainMenu.xib │ ├── StatusMenuController.swift │ ├── assets │ │ └── Assets.xcassets │ │ │ ├── Contents.json │ │ │ └── statusBarIcon.imageset │ │ │ ├── Contents.json │ │ │ ├── sync_black.png │ │ │ └── sync_black@2x.png │ └── preferences │ │ ├── GeneralSettingsView.xib │ │ ├── GeneralSettingsViewController.swift │ │ ├── PlansView.xib │ │ ├── PlansViewController.swift │ │ ├── PreferencesWindow.xib │ │ └── PreferencesWindowController.swift └── util │ ├── Errors.swift │ ├── Logger.swift │ ├── StopWatch.swift │ └── String+extensions.swift ├── PreferencesReaderTest ├── Info.plist └── PreferencesReaderTest.swift ├── Readme.md └── doc └── filesystem-structure.png /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/LICENSE -------------------------------------------------------------------------------- /LICENSE-swift-uniyaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/LICENSE-swift-uniyaml -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/IDEFindNavigatorScopes.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/IDEFindNavigatorScopes.plist -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Expressions.xcexplist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Expressions.xcexplist -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/PhotosExporter.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/PhotosExporter.xcscheme -------------------------------------------------------------------------------- /PhotosExporter.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist -------------------------------------------------------------------------------- /PhotosExporter/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/AppDelegate.swift -------------------------------------------------------------------------------- /PhotosExporter/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/Info.plist -------------------------------------------------------------------------------- /PhotosExporter/PhotosExporter.entitlements: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/PhotosExporter.entitlements -------------------------------------------------------------------------------- /PhotosExporter/exporter/FlatFolderDescriptor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/exporter/FlatFolderDescriptor.swift -------------------------------------------------------------------------------- /PhotosExporter/exporter/IncrementalPhotosExporter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/exporter/IncrementalPhotosExporter.swift -------------------------------------------------------------------------------- /PhotosExporter/exporter/MediaLibUtil.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/exporter/MediaLibUtil.swift -------------------------------------------------------------------------------- /PhotosExporter/exporter/PhotosExporter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/exporter/PhotosExporter.swift -------------------------------------------------------------------------------- /PhotosExporter/exporter/PhotosExporterFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/exporter/PhotosExporterFactory.swift -------------------------------------------------------------------------------- /PhotosExporter/exporter/SnapshotPhotosExporter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/exporter/SnapshotPhotosExporter.swift -------------------------------------------------------------------------------- /PhotosExporter/photolibrary-access/PhotoLibraryUtil.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/photolibrary-access/PhotoLibraryUtil.swift -------------------------------------------------------------------------------- /PhotosExporter/photolibrary-access/PhotosMetadataReader.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/photolibrary-access/PhotosMetadataReader.swift -------------------------------------------------------------------------------- /PhotosExporter/photolibrary-access/PhotosSqliteDAO.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/photolibrary-access/PhotosSqliteDAO.swift -------------------------------------------------------------------------------- /PhotosExporter/photosmodel/MediaObject.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/photosmodel/MediaObject.swift -------------------------------------------------------------------------------- /PhotosExporter/photosmodel/PhotoCollection.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/photosmodel/PhotoCollection.swift -------------------------------------------------------------------------------- /PhotosExporter/photosmodel/PhotoObject.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/photosmodel/PhotoObject.swift -------------------------------------------------------------------------------- /PhotosExporter/photosmodel/PhotosMetadata.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/photosmodel/PhotosMetadata.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/Decoder.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/Decoder.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/Encoder.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/Encoder.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/PreferencesReader.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/PreferencesReader.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/YAML.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/YAML.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/model/FileSystemExportPlan.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/model/FileSystemExportPlan.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/model/GooglePhotosExportPlan.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/model/GooglePhotosExportPlan.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/model/MediaObjectFilter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/model/MediaObjectFilter.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/model/Plan.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/model/Plan.swift -------------------------------------------------------------------------------- /PhotosExporter/preferences/model/Preferences.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/preferences/model/Preferences.swift -------------------------------------------------------------------------------- /PhotosExporter/ui/DataModel.xcdatamodeld/PreferencesDataModel.xcdatamodel/contents: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/DataModel.xcdatamodeld/PreferencesDataModel.xcdatamodel/contents -------------------------------------------------------------------------------- /PhotosExporter/ui/MainMenu.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/MainMenu.xib -------------------------------------------------------------------------------- /PhotosExporter/ui/StatusMenuController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/StatusMenuController.swift -------------------------------------------------------------------------------- /PhotosExporter/ui/assets/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/assets/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /PhotosExporter/ui/assets/Assets.xcassets/statusBarIcon.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/assets/Assets.xcassets/statusBarIcon.imageset/Contents.json -------------------------------------------------------------------------------- /PhotosExporter/ui/assets/Assets.xcassets/statusBarIcon.imageset/sync_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/assets/Assets.xcassets/statusBarIcon.imageset/sync_black.png -------------------------------------------------------------------------------- /PhotosExporter/ui/assets/Assets.xcassets/statusBarIcon.imageset/sync_black@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/assets/Assets.xcassets/statusBarIcon.imageset/sync_black@2x.png -------------------------------------------------------------------------------- /PhotosExporter/ui/preferences/GeneralSettingsView.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/preferences/GeneralSettingsView.xib -------------------------------------------------------------------------------- /PhotosExporter/ui/preferences/GeneralSettingsViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/preferences/GeneralSettingsViewController.swift -------------------------------------------------------------------------------- /PhotosExporter/ui/preferences/PlansView.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/preferences/PlansView.xib -------------------------------------------------------------------------------- /PhotosExporter/ui/preferences/PlansViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/preferences/PlansViewController.swift -------------------------------------------------------------------------------- /PhotosExporter/ui/preferences/PreferencesWindow.xib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/preferences/PreferencesWindow.xib -------------------------------------------------------------------------------- /PhotosExporter/ui/preferences/PreferencesWindowController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/ui/preferences/PreferencesWindowController.swift -------------------------------------------------------------------------------- /PhotosExporter/util/Errors.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/util/Errors.swift -------------------------------------------------------------------------------- /PhotosExporter/util/Logger.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/util/Logger.swift -------------------------------------------------------------------------------- /PhotosExporter/util/StopWatch.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/util/StopWatch.swift -------------------------------------------------------------------------------- /PhotosExporter/util/String+extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PhotosExporter/util/String+extensions.swift -------------------------------------------------------------------------------- /PreferencesReaderTest/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PreferencesReaderTest/Info.plist -------------------------------------------------------------------------------- /PreferencesReaderTest/PreferencesReaderTest.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/PreferencesReaderTest/PreferencesReaderTest.swift -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/Readme.md -------------------------------------------------------------------------------- /doc/filesystem-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abentele/PhotosExporter/HEAD/doc/filesystem-structure.png --------------------------------------------------------------------------------