gitextract_i1gh213a/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.yml │ │ └── config.yml │ ├── dependabot.yml │ └── workflows/ │ └── main.yml ├── .gitignore ├── Directory.Build.props ├── Directory.Packages.props ├── License.txt ├── NuGet.config ├── Readme.md ├── YoutubeDownloader/ │ ├── .gitignore │ ├── App.axaml │ ├── App.axaml.cs │ ├── Converters/ │ │ ├── EqualityConverter.cs │ │ ├── MarkdownToInlinesConverter.cs │ │ ├── VideoQualityPreferenceToStringConverter.cs │ │ ├── VideoToHighestQualityThumbnailUrlStringConverter.cs │ │ └── VideoToLowestQualityThumbnailUrlStringConverter.cs │ ├── Download-FFmpeg.ps1 │ ├── Framework/ │ │ ├── DialogManager.cs │ │ ├── DialogViewModelBase.cs │ │ ├── SnackbarManager.cs │ │ ├── ThemeVariant.cs │ │ ├── UserControl.cs │ │ ├── ViewManager.cs │ │ ├── ViewModelBase.cs │ │ ├── ViewModelManager.cs │ │ └── Window.cs │ ├── Localization/ │ │ ├── Language.cs │ │ ├── LocalizationManager.English.cs │ │ ├── LocalizationManager.French.cs │ │ ├── LocalizationManager.German.cs │ │ ├── LocalizationManager.Spanish.cs │ │ ├── LocalizationManager.Ukrainian.cs │ │ └── LocalizationManager.cs │ ├── Program.cs │ ├── Publish-MacOSBundle.ps1 │ ├── Services/ │ │ ├── SettingsService.AuthCookiesEncryptionConverter.cs │ │ ├── SettingsService.cs │ │ └── UpdateService.cs │ ├── StartOptions.cs │ ├── Utils/ │ │ ├── Disposable.cs │ │ ├── DisposableCollector.cs │ │ ├── Extensions/ │ │ │ ├── AvaloniaExtensions.cs │ │ │ ├── DirectoryExtensions.cs │ │ │ ├── DisposableExtensions.cs │ │ │ ├── EnvironmentExtensions.cs │ │ │ ├── NotifyPropertyChangedExtensions.cs │ │ │ ├── PathExtensions.cs │ │ │ └── ProcessExtensions.cs │ │ ├── NativeMethods.cs │ │ └── ResizableSemaphore.cs │ ├── ViewModels/ │ │ ├── Components/ │ │ │ ├── DashboardViewModel.cs │ │ │ ├── DownloadStatus.cs │ │ │ └── DownloadViewModel.cs │ │ ├── Dialogs/ │ │ │ ├── AuthSetupViewModel.cs │ │ │ ├── DownloadMultipleSetupViewModel.cs │ │ │ ├── DownloadSingleSetupViewModel.cs │ │ │ ├── MessageBoxViewModel.cs │ │ │ └── SettingsViewModel.cs │ │ └── MainViewModel.cs │ ├── Views/ │ │ ├── Components/ │ │ │ ├── DashboardView.axaml │ │ │ └── DashboardView.axaml.cs │ │ ├── Dialogs/ │ │ │ ├── AuthSetupView.axaml │ │ │ ├── AuthSetupView.axaml.cs │ │ │ ├── DownloadMultipleSetupView.axaml │ │ │ ├── DownloadMultipleSetupView.axaml.cs │ │ │ ├── DownloadSingleSetupView.axaml │ │ │ ├── DownloadSingleSetupView.axaml.cs │ │ │ ├── MessageBoxView.axaml │ │ │ ├── MessageBoxView.axaml.cs │ │ │ ├── SettingsView.axaml │ │ │ └── SettingsView.axaml.cs │ │ ├── MainView.axaml │ │ └── MainView.axaml.cs │ ├── YoutubeDownloader.csproj │ └── app.manifest ├── YoutubeDownloader.Core/ │ ├── Downloading/ │ │ ├── FFmpeg.cs │ │ ├── FileNameTemplate.cs │ │ ├── VideoDownloadOption.cs │ │ ├── VideoDownloadPreference.cs │ │ ├── VideoDownloader.cs │ │ └── VideoQualityPreference.cs │ ├── Resolving/ │ │ ├── QueryResolver.cs │ │ ├── QueryResult.cs │ │ └── QueryResultKind.cs │ ├── Tagging/ │ │ ├── MediaFile.cs │ │ ├── MediaTagInjector.cs │ │ ├── MusicBrainzClient.cs │ │ └── MusicBrainzRecording.cs │ ├── Utils/ │ │ ├── Extensions/ │ │ │ ├── AsyncCollectionExtensions.cs │ │ │ ├── CollectionExtensions.cs │ │ │ ├── GenericExtensions.cs │ │ │ ├── PathExtensions.cs │ │ │ ├── StringExtensions.cs │ │ │ └── YoutubeExtensions.cs │ │ ├── Http.cs │ │ ├── ThrottleLock.cs │ │ └── Url.cs │ └── YoutubeDownloader.Core.csproj ├── YoutubeDownloader.sln ├── favicon.icns └── global.json