From e3ec5c3a48d28892dee481972ad85e799ff74a73 Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Wed, 14 Feb 2024 02:07:22 +0100 Subject: [PATCH] twitch vod downloading done ffmpeg essentials fix Project reorganized git lfs ffmpeg removed ffmpeg added --- .gitattributes | 1 + VDownload.Common/Playlist.cs | 24 - .../Services/ISourceSearchService.cs | 15 - VDownload.Common/Video.cs | 58 - VDownload.Common/VideoStream.cs | 22 - .../en-US/AuthenticationViewResources.resw | 147 +++ .../Strings/en-US/BaseViewResources.resw | 7 +- .../en-US/HomeDownloadsViewResources.resw | 156 +++ .../Strings/en-US/HomeVideoViewResources.resw | 171 +++ .../Strings/en-US/HomeViewResources.resw | 160 +++ .../Strings/en-US/NotificationsResources.resw | 135 +++ .../VDownload.Core.Strings.csproj | 8 +- .../VDownload.Core.Tasks/DownloadTask.cs | 229 ++++ .../DownloadTaskFactoryService.cs | 60 + .../DownloadTaskManager.cs | 168 +++ .../DownloadTaskNotInitializedException.cs | 21 + .../DownloadTaskStatus.cs | 4 +- .../VDownload.Core.Tasks.csproj | 25 + .../AuthenticationViewModel.cs | 67 +- .../BaseViewModel.cs | 110 ++ .../Home/HomeDownloadsViewModel.cs | 90 ++ .../Home/HomeVideoViewModel.cs | 185 +++ .../Home}/HomeViewModel.cs | 153 +-- .../Settings}/SettingsViewModel.cs | 9 +- .../VDownload.Core.ViewModels.csproj | 30 + .../Authentication}/AuthenticationView.xaml | 47 +- .../Authentication/AuthenticationView.xaml.cs | 18 + .../VDownload.Core.Views/BaseWindow.xaml | 37 +- .../VDownload.Core.Views/BaseWindow.xaml.cs | 59 + .../Home/HomeDownloadsView.xaml | 397 +++++++ .../Home/HomeDownloadsView.xaml.cs | 8 +- .../Home/HomeVideoView.xaml | 226 ++++ .../Home/HomeVideoView.xaml.cs | 8 +- .../VDownload.Core.Views/Home/HomeView.xaml | 139 +++ .../Home/HomeView.xaml.cs | 18 + .../Settings}/SettingsView.xaml | 6 +- .../Settings/SettingsView.xaml.cs | 26 + .../VDownload.Core.Views.csproj | 81 ++ .../ViewModelToViewConverter.cs | 43 +- .../BooleanToGridLengthConverter.cs | 44 - .../BooleanToGridLengthFillConverter.cs | 33 - ...ooleanToGridLengthFillReversedConverter.cs | 33 - .../BooleanToGridLengthReversedConverter.cs | 44 - .../BooleanToStringConverter.cs | 30 - .../BooleanToVisibilityConverter.cs | 35 - .../EnumToDescriptionConverter.cs | 29 - .../ReverseBooleanConverter.cs | 27 - .../StringToLowerConverter.cs | 22 - .../StringToUriConverter.cs | 30 - .../StringToVisibilityConverter.cs | 30 - .../VDownload.GUI.Converters.csproj | 21 - .../Models/NavigationViewItem.cs | 19 - .../ImagesResourceDictionary.cs | 59 - .../ResourceDictionariesServices.cs | 64 -- .../VDownload.GUI.ViewModels.csproj | 27 - .../AuthenticationView.xaml.cs | 27 - .../VDownload.GUI.Views/HomeView.xaml | 578 ---------- .../VDownload.GUI.Views.csproj | 50 - .../AudioExtension.cs | 7 +- .../MediaType.cs | 2 +- .../Playlist.cs | 5 +- VDownload.Models/ProcessingSpeed.cs | 21 + .../Source.cs | 2 +- .../VDownload.Models.csproj | 0 VDownload.Models/Video.cs | 37 + VDownload.Models/VideoDownloadOptions.cs | 44 + VDownload.Models/VideoExtension.cs | 18 + VDownload.Models/VideoStream.cs | 27 + VDownload.Models/VideoStreamDownloadResult.cs | 20 + .../AuthenticationConfiguration.cs | 30 - .../AuthenticationData.cs | 30 - .../AuthenticationService.cs | 97 -- .../AuthenticationData.cs | 26 + .../AuthenticationDataService.cs | 95 ++ .../Models/TokenAuthenticationData.cs} | 4 +- ...nload.Services.Data.Authentication.csproj} | 3 +- .../CommonConfiguration.cs | 18 + .../ConfigurationService.cs | 48 + .../Models/Appdata.cs | 22 + .../Models/Muxer.cs | 22 + .../Models/Path.cs | 19 + .../Models/Processing.cs | 19 + .../Models/Temp.cs | 16 + ...ownload.Services.Data.Configuration.csproj | 18 + .../CommonSettings.cs | 36 + .../Models/DefaultTaskSettings.cs | 28 + .../Models/Notifications.cs | 18 + .../Models/Processing.cs | 25 + .../SettingsData.cs | 30 + .../SettingsService.cs | 104 ++ .../VDownload.Services.Data.Settings.csproj | 19 + .../VDownload.Services.Search.csproj | 14 - .../VDownload.Services.Tasks/TasksService.cs | 101 -- .../DialogResult.cs | 2 +- .../DialogResultOkCancel.cs | 2 +- .../DialogResultYesNo.cs | 2 +- .../DialogResultYesNoCancel.cs | 2 +- .../DialogsService.cs | 6 +- .../VDownload.Services.UI.Dialogs.csproj | 6 +- .../DictionaryResourcesService.cs | 41 + ...oad.Services.UI.DictionaryResources.csproj | 15 + .../NotificationsService.cs | 36 + ...VDownload.Services.UI.Notifications.csproj | 15 + .../FileSavePickerFileTypeChoice.cs | 2 +- .../StoragePickerService.cs | 5 +- .../StoragePickerStartLocation.cs | 2 +- ...VDownload.Services.UI.StoragePicker.csproj | 15 + .../StringResources.cs | 37 + .../StringResourcesService.cs | 65 ++ ...ownload.Services.UI.StringResources.csproj | 13 +- .../VDownload.Services.UI.WebView.csproj | 7 +- .../WebViewService.cs | 5 +- .../WebViewWindow.xaml | 4 +- .../WebViewWindow.xaml.cs | 4 +- .../EncryptionService.cs | 2 +- ...wnload.Services.Utility.Encryption.csproj} | 0 .../FFmpegBuilder.cs | 191 ++++ .../FFmpegService.cs | 48 + .../VDownload.Services.Utility.FFmpeg.csproj | 18 + .../HttpClientService.cs | 2 +- .../HttpMethodType.cs | 2 +- .../HttpRequest.cs | 2 +- .../Token.cs | 2 +- ...wnload.Services.Utility.HttpClient.csproj} | 1 - .../VDownload.Services/ServiceProvider.cs | 11 - .../ISourceSearchService.cs | 10 + .../MediaSearchException.cs | 2 +- .../VDownload.Sources.Common.csproj | 3 +- .../TwitchApiService.cs | 46 +- .../VDownload.Sources.Twitch.Api.csproj | 4 +- .../TwitchAuthenticationService.cs | 97 +- ...nload.Sources.Twitch.Authentication.csproj | 13 +- .../Models/Api.cs | 20 + .../Models/Auth.cs | 16 + .../Models/Authentication.cs | 31 + .../Models/Download.cs | 10 + .../Models/EndpointsAuth.cs | 10 + .../Models/EndpointsHelix.cs | 10 + .../Models/EndpointsUsher.cs | 10 + .../Models/GetVideoToken.cs | 13 + .../Models/Gql.cs | 16 + .../Models/Helix.cs | 16 + .../Models/Queries.cs | 10 + .../Models/Search.cs | 13 + .../Models/Thumbnail.cs | 13 + .../Models/Usher.cs | 10 + .../Models/Vod.cs | 22 + .../TwitchApiAuthConfiguration.cs | 33 - .../TwitchApiAuthEndpointsConfiguration.cs | 29 - .../TwitchApiConfiguration.cs | 36 - .../TwitchApiGQLConfiguration.cs | 33 - .../TwitchApiGQLQueriesConfiguration.cs | 29 - .../TwitchApiGQLQueriesQueryConfiguration.cs | 29 - ...ApiGQLQueriesQueryExtendedConfiguration.cs | 29 - .../TwitchApiHelixConfiguration.cs | 33 - .../TwitchApiHelixEndpointsConfiguration.cs | 29 - .../TwitchApiUsherConfiguration.cs | 29 - .../TwitchApiUsherEndpointsConfiguration.cs | 29 - .../TwitchAuthenticationConfiguration.cs | 40 - .../TwitchConfiguration.cs | 29 +- .../TwitchSearchConfiguration.cs | 38 - ...wnload.Sources.Twitch.Configuration.csproj | 1 - .../Internal/TwitchVodChunk.cs | 16 + .../TwitchPlaylist.cs | 4 +- .../TwitchVideo.cs | 16 + .../TwitchVod.cs | 2 +- .../TwitchVodStream.cs | 218 ++++ .../VDownload.Sources.Twitch.Models.csproj | 15 + .../TwitchSearchService.cs | 165 --- .../VDownload.Sources.Twitch.Search.csproj | 16 - .../Models/ChunkDownloadingError.cs | 21 + .../Models/Vod.cs | 21 + .../TwitchSettings.cs | 16 + .../VDownload.Sources.Twitch.Settings.csproj | 2 +- .../TwitchSearchService.cs | 180 +++ .../VDownload.Sources.Twitch/TwitchVideo.cs | 21 - .../TwitchVideoStreamFactoryService.cs | 46 + .../TwitchVodStream.cs | 29 - .../VDownload.Sources.Twitch.csproj | 9 +- .../VDownload.Sources}/SearchService.cs | 23 +- .../VDownload.Sources.csproj | 15 + VDownload.Tasks/DownloadTask.cs | 201 ---- VDownload.Tasks/DownloadTasksManager.cs | 101 -- .../StringExtensions.cs | 22 +- .../VDownload.Toolkit.Extensions.csproj | 0 .../EventToCommandBehavior.cs | 2 +- .../VDownload.Toolkit.UI.Behaviors.csproj | 4 +- .../TimeSpanControl.xaml | 3 +- .../TimeSpanControl.xaml.cs | 5 +- .../VDownload.Toolkit.UI.Controls.csproj | 12 +- .../ObjectToIntConverter.cs | 4 +- .../ObjectToStringConverter.cs | 14 +- .../VDownload.Toolkit.UI.Converters.csproj | 4 +- .../NavigationViewItem.cs | 19 + .../VDownload.Toolkit.UI.Models.csproj | 9 + VDownload.sln | 1015 ++++++++++------- VDownload/App.xaml | 10 +- VDownload/App.xaml.cs | 223 ++-- .../AuthenticationDark.png | Bin .../AuthenticationLight.png | Bin .../{NavigationView => BaseView}/HomeDark.png | Bin .../HomeLight.png | Bin .../HomeDownloadsView/CancelledDark.png | Bin 0 -> 26004 bytes .../HomeDownloadsView/CancelledLight.png | Bin 0 -> 53637 bytes .../Assets/HomeDownloadsView/DoneDark.png | Bin 0 -> 66777 bytes .../Assets/HomeDownloadsView/DoneLight.png | Bin 0 -> 24822 bytes .../HomeDownloadsView/DownloadingDark.png | Bin 0 -> 32814 bytes .../HomeDownloadsView/DownloadingLight.png | Bin 0 -> 60085 bytes .../Assets/HomeDownloadsView/ErrorDark.png | Bin 0 -> 25529 bytes .../Assets/HomeDownloadsView/ErrorLight.png | Bin 0 -> 58093 bytes .../FileDark.png | Bin .../FileLight.png | Bin .../HomeDownloadsView/FinalizingDark.png | Bin 0 -> 57050 bytes .../HomeDownloadsView/FinalizingLight.png | Bin 0 -> 21705 bytes .../IdleDark.png | Bin .../IdleLight.png | Bin .../InitializingDark.png | Bin .../InitializingLight.png | Bin .../NoTasks.png | Bin .../HomeDownloadsView/ProcessingDark.png | Bin 0 -> 28839 bytes .../HomeDownloadsView/ProcessingLight.png | Bin 0 -> 86713 bytes .../QualityDark.png | Bin .../QualityLight.png | Bin .../QueuedDark.png | Bin .../QueuedLight.png | Bin .../TimeDark.png | Bin .../TimeLight.png | Bin .../{Video => HomeVideoView}/AuthorDark.png | Bin .../{Video => HomeVideoView}/AuthorLight.png | Bin .../{Video => HomeVideoView}/DateDark.png | Bin .../{Video => HomeVideoView}/DateLight.png | Bin .../DirectoryDark.png | Bin .../DirectoryLight.png | Bin .../ExtensionDark.png | Bin .../ExtensionLight.png | Bin .../{Video => HomeVideoView}/FilenameDark.png | Bin .../FilenameLight.png | Bin .../{Video => HomeVideoView}/MediaDark.png | Bin .../{Video => HomeVideoView}/MediaLight.png | Bin .../{Video => HomeVideoView}/QualityDark.png | Bin .../{Video => HomeVideoView}/QualityLight.png | Bin .../{Video => HomeVideoView}/TimeDark.png | Bin .../{Video => HomeVideoView}/TimeLight.png | Bin .../{Video => HomeVideoView}/TrimDark.png | Bin .../{Video => HomeVideoView}/TrimLight.png | Bin .../{Video => HomeVideoView}/ViewDark.png | Bin .../{Video => HomeVideoView}/ViewLight.png | Bin VDownload/Dictionaries/Colors.xaml | 3 +- VDownload/Dictionaries/Converters.xaml | 25 +- VDownload/Dictionaries/Images.xaml | 71 -- .../Dictionaries/Images/ImagesBaseView.xaml | 15 + .../Images/ImagesHomeDownloadsView.xaml | 36 + .../Images/ImagesHomeVideoView.xaml | 35 + VDownload/Dictionaries/Images/ImagesLogo.xaml | 6 + .../Dictionaries/Images/ImagesSources.xaml | 6 + VDownload/FFmpeg/ffmpeg.exe | 3 + VDownload/FFmpeg/ffprobe.exe | 3 + VDownload/MainWindow.xaml.cs | 61 - VDownload/MainWindowViewModel.cs | 101 -- VDownload/Package.appxmanifest | 10 +- VDownload/VDownload.csproj | 360 +++--- VDownload/app.manifest | 3 - VDownload/appsettings.json | 61 - VDownload/configuration.json | 170 +++ 264 files changed, 6239 insertions(+), 4014 deletions(-) create mode 100644 .gitattributes delete mode 100644 VDownload.Common/Playlist.cs delete mode 100644 VDownload.Common/Services/ISourceSearchService.cs delete mode 100644 VDownload.Common/Video.cs delete mode 100644 VDownload.Common/VideoStream.cs create mode 100644 VDownload.Core/VDownload.Core.Strings/Strings/en-US/AuthenticationViewResources.resw rename VDownload/Strings/en-US/Resources.resw => VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw (96%) create mode 100644 VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeDownloadsViewResources.resw create mode 100644 VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeVideoViewResources.resw create mode 100644 VDownload.Core/VDownload.Core.Strings/Strings/en-US/HomeViewResources.resw create mode 100644 VDownload.Core/VDownload.Core.Strings/Strings/en-US/NotificationsResources.resw rename VDownload.Tasks/VDownload.Tasks.csproj => VDownload.Core/VDownload.Core.Strings/VDownload.Core.Strings.csproj (73%) create mode 100644 VDownload.Core/VDownload.Core.Tasks/DownloadTask.cs create mode 100644 VDownload.Core/VDownload.Core.Tasks/DownloadTaskFactoryService.cs create mode 100644 VDownload.Core/VDownload.Core.Tasks/DownloadTaskManager.cs create mode 100644 VDownload.Core/VDownload.Core.Tasks/DownloadTaskNotInitializedException.cs rename {VDownload.Tasks => VDownload.Core/VDownload.Core.Tasks}/DownloadTaskStatus.cs (92%) create mode 100644 VDownload.Core/VDownload.Core.Tasks/VDownload.Core.Tasks.csproj rename {VDownload.GUI/VDownload.GUI.ViewModels => VDownload.Core/VDownload.Core.ViewModels/Authentication}/AuthenticationViewModel.cs (54%) create mode 100644 VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs create mode 100644 VDownload.Core/VDownload.Core.ViewModels/Home/HomeDownloadsViewModel.cs create mode 100644 VDownload.Core/VDownload.Core.ViewModels/Home/HomeVideoViewModel.cs rename {VDownload.GUI/VDownload.GUI.ViewModels => VDownload.Core/VDownload.Core.ViewModels/Home}/HomeViewModel.cs (57%) rename {VDownload.GUI/VDownload.GUI.ViewModels => VDownload.Core/VDownload.Core.ViewModels/Settings}/SettingsViewModel.cs (54%) create mode 100644 VDownload.Core/VDownload.Core.ViewModels/VDownload.Core.ViewModels.csproj rename {VDownload.GUI/VDownload.GUI.Views => VDownload.Core/VDownload.Core.Views/Authentication}/AuthenticationView.xaml (67%) create mode 100644 VDownload.Core/VDownload.Core.Views/Authentication/AuthenticationView.xaml.cs rename VDownload/MainWindow.xaml => VDownload.Core/VDownload.Core.Views/BaseWindow.xaml (70%) create mode 100644 VDownload.Core/VDownload.Core.Views/BaseWindow.xaml.cs create mode 100644 VDownload.Core/VDownload.Core.Views/Home/HomeDownloadsView.xaml rename VDownload.GUI/VDownload.GUI.Views/SettingsView.xaml.cs => VDownload.Core/VDownload.Core.Views/Home/HomeDownloadsView.xaml.cs (75%) create mode 100644 VDownload.Core/VDownload.Core.Views/Home/HomeVideoView.xaml rename VDownload.GUI/VDownload.GUI.Views/HomeView.xaml.cs => VDownload.Core/VDownload.Core.Views/Home/HomeVideoView.xaml.cs (76%) create mode 100644 VDownload.Core/VDownload.Core.Views/Home/HomeView.xaml create mode 100644 VDownload.Core/VDownload.Core.Views/Home/HomeView.xaml.cs rename {VDownload.GUI/VDownload.GUI.Views => VDownload.Core/VDownload.Core.Views/Settings}/SettingsView.xaml (77%) create mode 100644 VDownload.Core/VDownload.Core.Views/Settings/SettingsView.xaml.cs create mode 100644 VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj rename {VDownload.GUI/VDownload.GUI.Converters => VDownload.Core/VDownload.Core.Views}/ViewModelToViewConverter.cs (52%) delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/BooleanToGridLengthConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/BooleanToGridLengthFillConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/BooleanToGridLengthFillReversedConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/BooleanToGridLengthReversedConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/BooleanToStringConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/BooleanToVisibilityConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/EnumToDescriptionConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/ReverseBooleanConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/StringToLowerConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/StringToUriConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/StringToVisibilityConverter.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Converters/VDownload.GUI.Converters.csproj delete mode 100644 VDownload.GUI/VDownload.GUI.Customs/Models/NavigationViewItem.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.ResourceDictionaries/ImagesResourceDictionary.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.ResourceDictionaries/ResourceDictionariesServices.cs delete mode 100644 VDownload.GUI/VDownload.GUI.ViewModels/VDownload.GUI.ViewModels.csproj delete mode 100644 VDownload.GUI/VDownload.GUI.Views/AuthenticationView.xaml.cs delete mode 100644 VDownload.GUI/VDownload.GUI.Views/HomeView.xaml delete mode 100644 VDownload.GUI/VDownload.GUI.Views/VDownload.GUI.Views.csproj rename {VDownload.Common => VDownload.Models}/AudioExtension.cs (67%) rename {VDownload.Common => VDownload.Models}/MediaType.cs (92%) rename VDownload.Common/VideoExtension.cs => VDownload.Models/Playlist.cs (66%) create mode 100644 VDownload.Models/ProcessingSpeed.cs rename {VDownload.Common => VDownload.Models}/Source.cs (86%) rename VDownload.Extensions/VDownload.Extensions.csproj => VDownload.Models/VDownload.Models.csproj (100%) create mode 100644 VDownload.Models/Video.cs create mode 100644 VDownload.Models/VideoDownloadOptions.cs create mode 100644 VDownload.Models/VideoExtension.cs create mode 100644 VDownload.Models/VideoStream.cs create mode 100644 VDownload.Models/VideoStreamDownloadResult.cs delete mode 100644 VDownload.Services/VDownload.Services.Authentication/AuthenticationConfiguration.cs delete mode 100644 VDownload.Services/VDownload.Services.Authentication/AuthenticationData.cs delete mode 100644 VDownload.Services/VDownload.Services.Authentication/AuthenticationService.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Authentication/AuthenticationData.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Authentication/AuthenticationDataService.cs rename VDownload.Services/{VDownload.Services.Authentication/AuthenticationDataTwitch.cs => VDownload.Services.Data/VDownload.Services.Data.Authentication/Models/TokenAuthenticationData.cs} (70%) rename VDownload.Services/{VDownload.Services.Authentication/VDownload.Services.Authentication.csproj => VDownload.Services.Data/VDownload.Services.Data.Authentication/VDownload.Services.Data.Authentication.csproj} (64%) create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/CommonConfiguration.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/ConfigurationService.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Appdata.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Muxer.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Path.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Processing.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/Models/Temp.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Configuration/VDownload.Services.Data.Configuration.csproj create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/CommonSettings.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/Models/DefaultTaskSettings.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/Models/Notifications.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/Models/Processing.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/SettingsData.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/SettingsService.cs create mode 100644 VDownload.Services/VDownload.Services.Data/VDownload.Services.Data.Settings/VDownload.Services.Data.Settings.csproj delete mode 100644 VDownload.Services/VDownload.Services.Search/VDownload.Services.Search.csproj delete mode 100644 VDownload.Services/VDownload.Services.Tasks/TasksService.cs rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.Dialog => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.Dialogs}/DialogResult.cs (84%) rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.Dialog => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.Dialogs}/DialogResultOkCancel.cs (83%) rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.Dialog => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.Dialogs}/DialogResultYesNo.cs (82%) rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.Dialog => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.Dialogs}/DialogResultYesNoCancel.cs (84%) rename VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.Dialog/DialogService.cs => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.Dialogs/DialogsService.cs (97%) rename VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.ResourceDictionaries/VDownload.GUI.Services.ResourceDictionaries.csproj => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.Dialogs/VDownload.Services.UI.Dialogs.csproj (79%) create mode 100644 VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.DictionaryResources/DictionaryResourcesService.cs create mode 100644 VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.DictionaryResources/VDownload.Services.UI.DictionaryResources.csproj create mode 100644 VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.Notifications/NotificationsService.cs create mode 100644 VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.Notifications/VDownload.Services.UI.Notifications.csproj rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.StoragePicker => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StoragePicker}/FileSavePickerFileTypeChoice.cs (93%) rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.StoragePicker => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StoragePicker}/StoragePickerService.cs (97%) rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.StoragePicker => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StoragePicker}/StoragePickerStartLocation.cs (88%) create mode 100644 VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StoragePicker/VDownload.Services.UI.StoragePicker.csproj create mode 100644 VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResources.cs create mode 100644 VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs rename VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.StoragePicker/VDownload.GUI.Services.StoragePicker.csproj => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/VDownload.Services.UI.StringResources.csproj (55%) rename VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.WebView/VDownload.GUI.Services.WebView.csproj => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.WebView/VDownload.Services.UI.WebView.csproj (78%) rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.WebView => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.WebView}/WebViewService.cs (86%) rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.WebView => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.WebView}/WebViewWindow.xaml (80%) rename {VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.WebView => VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.WebView}/WebViewWindow.xaml.cs (97%) rename VDownload.Services/{VDownload.Services.Encryption => VDownload.Services.Utility/VDownload.Services.Utility.Encryption}/EncryptionService.cs (94%) rename VDownload.Services/{VDownload.Services.Encryption/VDownload.Services.Encryption.csproj => VDownload.Services.Utility/VDownload.Services.Utility.Encryption/VDownload.Services.Utility.Encryption.csproj} (100%) create mode 100644 VDownload.Services/VDownload.Services.Utility/VDownload.Services.Utility.FFmpeg/FFmpegBuilder.cs create mode 100644 VDownload.Services/VDownload.Services.Utility/VDownload.Services.Utility.FFmpeg/FFmpegService.cs create mode 100644 VDownload.Services/VDownload.Services.Utility/VDownload.Services.Utility.FFmpeg/VDownload.Services.Utility.FFmpeg.csproj rename VDownload.Services/{VDownload.Services.HttpClient => VDownload.Services.Utility/VDownload.Services.Utility.HttpClient}/HttpClientService.cs (98%) rename VDownload.Services/{VDownload.Services.HttpClient => VDownload.Services.Utility/VDownload.Services.Utility.HttpClient}/HttpMethodType.cs (83%) rename VDownload.Services/{VDownload.Services.HttpClient => VDownload.Services.Utility/VDownload.Services.Utility.HttpClient}/HttpRequest.cs (94%) rename VDownload.Services/{VDownload.Services.HttpClient => VDownload.Services.Utility/VDownload.Services.Utility.HttpClient}/Token.cs (93%) rename VDownload.Services/{VDownload.Services.HttpClient/VDownload.Services.HttpClient.csproj => VDownload.Services.Utility/VDownload.Services.Utility.HttpClient/VDownload.Services.Utility.HttpClient.csproj} (82%) delete mode 100644 VDownload.Services/VDownload.Services/ServiceProvider.cs create mode 100644 VDownload.Sources/VDownload.Sources.Common/ISourceSearchService.cs rename {VDownload.Common/Exceptions => VDownload.Sources/VDownload.Sources.Common}/MediaSearchException.cs (92%) rename VDownload.Services/VDownload.Services.Tasks/VDownload.Services.Tasks.csproj => VDownload.Sources/VDownload.Sources.Common/VDownload.Sources.Common.csproj (59%) create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Api.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Auth.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Authentication.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Download.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/EndpointsAuth.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/EndpointsHelix.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/EndpointsUsher.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/GetVideoToken.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Gql.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Helix.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Queries.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Search.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Thumbnail.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Usher.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/Models/Vod.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiAuthConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiAuthEndpointsConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiGQLConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiGQLQueriesConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiGQLQueriesQueryConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiGQLQueriesQueryExtendedConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiHelixConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiHelixEndpointsConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiUsherConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchApiUsherEndpointsConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchAuthenticationConfiguration.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Configuration/TwitchSearchConfiguration.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Models/Internal/TwitchVodChunk.cs rename VDownload.Sources/VDownload.Sources.Twitch/{VDownload.Sources.Twitch => VDownload.Sources.Twitch.Models}/TwitchPlaylist.cs (74%) create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Models/TwitchVideo.cs rename VDownload.Sources/VDownload.Sources.Twitch/{VDownload.Sources.Twitch => VDownload.Sources.Twitch.Models}/TwitchVod.cs (80%) create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Models/TwitchVodStream.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Models/VDownload.Sources.Twitch.Models.csproj delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Search/TwitchSearchService.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Search/VDownload.Sources.Twitch.Search.csproj create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Settings/Models/ChunkDownloadingError.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Settings/Models/Vod.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Settings/TwitchSettings.cs rename VDownload.Common/VDownload.Common.csproj => VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch.Settings/VDownload.Sources.Twitch.Settings.csproj (76%) create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch/TwitchSearchService.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch/TwitchVideo.cs create mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch/TwitchVideoStreamFactoryService.cs delete mode 100644 VDownload.Sources/VDownload.Sources.Twitch/VDownload.Sources.Twitch/TwitchVodStream.cs rename {VDownload.Services/VDownload.Services.Search => VDownload.Sources/VDownload.Sources}/SearchService.cs (77%) create mode 100644 VDownload.Sources/VDownload.Sources/VDownload.Sources.csproj delete mode 100644 VDownload.Tasks/DownloadTask.cs delete mode 100644 VDownload.Tasks/DownloadTasksManager.cs rename {VDownload.Extensions => VDownload.Toolkit/VDownload.Toolkit.Extensions}/StringExtensions.cs (76%) rename VDownload.Services/VDownload.Services/VDownload.Services.csproj => VDownload.Toolkit/VDownload.Toolkit.Extensions/VDownload.Toolkit.Extensions.csproj (100%) rename {VDownload.GUI/VDownload.GUI.Customs/Behaviors => VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Behaviors}/EventToCommandBehavior.cs (98%) rename VDownload.GUI/VDownload.GUI.Customs/VDownload.GUI.Customs.csproj => VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Behaviors/VDownload.Toolkit.UI.Behaviors.csproj (88%) rename {VDownload.GUI/VDownload.GUI.Controls => VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Controls}/TimeSpanControl.xaml (91%) rename {VDownload.GUI/VDownload.GUI.Controls => VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Controls}/TimeSpanControl.xaml.cs (95%) rename VDownload.GUI/VDownload.GUI.Controls/VDownload.GUI.Controls.csproj => VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Controls/VDownload.Toolkit.UI.Controls.csproj (74%) rename VDownload.GUI/VDownload.GUI.Converters/EnumToIntConverter.cs => VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Converters/ObjectToIntConverter.cs (83%) rename VDownload.GUI/VDownload.GUI.Converters/EnumToStringConverter.cs => VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Converters/ObjectToStringConverter.cs (54%) rename VDownload.GUI/VDownload.GUI.Services/VDownload.GUI.Services.Dialog/VDownload.GUI.Services.Dialog.csproj => VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Converters/VDownload.Toolkit.UI.Converters.csproj (86%) create mode 100644 VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Models/NavigationViewItem.cs create mode 100644 VDownload.Toolkit/VDownload.Toolkit.UI/VDownload.Toolkit.UI.Models/VDownload.Toolkit.UI.Models.csproj rename VDownload/Assets/{NavigationView => BaseView}/AuthenticationDark.png (100%) rename VDownload/Assets/{NavigationView => BaseView}/AuthenticationLight.png (100%) rename VDownload/Assets/{NavigationView => BaseView}/HomeDark.png (100%) rename VDownload/Assets/{NavigationView => BaseView}/HomeLight.png (100%) create mode 100644 VDownload/Assets/HomeDownloadsView/CancelledDark.png create mode 100644 VDownload/Assets/HomeDownloadsView/CancelledLight.png create mode 100644 VDownload/Assets/HomeDownloadsView/DoneDark.png create mode 100644 VDownload/Assets/HomeDownloadsView/DoneLight.png create mode 100644 VDownload/Assets/HomeDownloadsView/DownloadingDark.png create mode 100644 VDownload/Assets/HomeDownloadsView/DownloadingLight.png create mode 100644 VDownload/Assets/HomeDownloadsView/ErrorDark.png create mode 100644 VDownload/Assets/HomeDownloadsView/ErrorLight.png rename VDownload/Assets/{Downloads => HomeDownloadsView}/FileDark.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/FileLight.png (100%) create mode 100644 VDownload/Assets/HomeDownloadsView/FinalizingDark.png create mode 100644 VDownload/Assets/HomeDownloadsView/FinalizingLight.png rename VDownload/Assets/{Downloads => HomeDownloadsView}/IdleDark.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/IdleLight.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/InitializingDark.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/InitializingLight.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/NoTasks.png (100%) create mode 100644 VDownload/Assets/HomeDownloadsView/ProcessingDark.png create mode 100644 VDownload/Assets/HomeDownloadsView/ProcessingLight.png rename VDownload/Assets/{Downloads => HomeDownloadsView}/QualityDark.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/QualityLight.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/QueuedDark.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/QueuedLight.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/TimeDark.png (100%) rename VDownload/Assets/{Downloads => HomeDownloadsView}/TimeLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/AuthorDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/AuthorLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/DateDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/DateLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/DirectoryDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/DirectoryLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/ExtensionDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/ExtensionLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/FilenameDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/FilenameLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/MediaDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/MediaLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/QualityDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/QualityLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/TimeDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/TimeLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/TrimDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/TrimLight.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/ViewDark.png (100%) rename VDownload/Assets/{Video => HomeVideoView}/ViewLight.png (100%) delete mode 100644 VDownload/Dictionaries/Images.xaml create mode 100644 VDownload/Dictionaries/Images/ImagesBaseView.xaml create mode 100644 VDownload/Dictionaries/Images/ImagesHomeDownloadsView.xaml create mode 100644 VDownload/Dictionaries/Images/ImagesHomeVideoView.xaml create mode 100644 VDownload/Dictionaries/Images/ImagesLogo.xaml create mode 100644 VDownload/Dictionaries/Images/ImagesSources.xaml create mode 100644 VDownload/FFmpeg/ffmpeg.exe create mode 100644 VDownload/FFmpeg/ffprobe.exe delete mode 100644 VDownload/MainWindow.xaml.cs delete mode 100644 VDownload/MainWindowViewModel.cs delete mode 100644 VDownload/appsettings.json create mode 100644 VDownload/configuration.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5135af0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.exe filter=lfs diff=lfs merge=lfs -text diff --git a/VDownload.Common/Playlist.cs b/VDownload.Common/Playlist.cs deleted file mode 100644 index 203be1d..0000000 --- a/VDownload.Common/Playlist.cs +++ /dev/null @@ -1,24 +0,0 @@ -using CommunityToolkit.Mvvm.ComponentModel; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using VDownload.Common.Models; - -namespace VDownload.Common -{ - public abstract class Playlist : ObservableObject, IEnumerable