diff --git a/CHANGELOG.md b/CHANGELOG.md index b3ae3933..83f3e673 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +# 0.2.8.0 + +## New features + +* Added an option to create playlist files (m3u, psl, wpl or zpl). [#82](https://github.com/Otiel/BandcampDownloader/issues/82) +* Added italian localization. Thanks **@RichyZ99** for the complete translation! [#84](https://github.com/Otiel/BandcampDownloader/pull/84) + +## Improvements + +* Tag actions ("modify", "do not modify", "empty") are now localized. +* Minor UI improvements. + +## Bug fixes + +* Fixed a crash that could occur when "☑ Retrieve files size" was unchecked. [#74](https://github.com/Otiel/BandcampDownloader/issues/74) + # 0.2.7.0 ## New features @@ -12,7 +28,7 @@ * The track file name setting is now checked and must have the _mp3_ extension. [#80](https://github.com/Otiel/BandcampDownloader/issues/80) * The proxy port setting is now checked and must be an integer. -# Bug fixes +## Bug fixes * Minor bug fixes relative to the UI. diff --git a/docs/commits-conventions.md b/docs/commits-conventions.md index ae393a4e..a03d5f95 100644 --- a/docs/commits-conventions.md +++ b/docs/commits-conventions.md @@ -33,8 +33,7 @@ docs | `patch` | A change to the documentation. | Hidden style | `patch` | Formatting, missing semi colons, etc; no production code change | Hidden refactor | `patch` | Refactoring production code, eg. renaming a variable | Hidden test | `patch` | Adding tests, refactoring tests; no production code change | Hidden -chore | `patch` | Updating grunt tasks, etc; no production code change | Hidden -other | `patch` | What doesn't fall in any other category (udpating a library...) | Conditional +chore | `patch` | Updating grunt tasks, updating a library, etc | Conditional ## Body diff --git a/docs/dependencies.md b/docs/dependencies.md index 4fd64533..450cd96a 100644 --- a/docs/dependencies.md +++ b/docs/dependencies.md @@ -11,6 +11,7 @@ BandcampDownloader relies on a number of open-source libraries, all listed below * [`Json.NET`](https://github.com/JamesNK/Newtonsoft.Json): used to parse Json from bandcamp.com pages. * [`MessageBoxManager`](https://www.codeproject.com/Articles/18399/Localizing-System-MessageBox): used to localize the buttons of the Windows system message box. * [`NLog`](https://github.com/NLog/NLog): used to log events. +* [`PlaylistsNET`](https://github.com/tmk907/PlaylistsNET): used to create playlists. * [`Resource.Embedder`](https://github.com/MarcStan/Resource.Embedder): used to embed localization resources (_*.resources.dll_) in the main _exe_ file (not supported by `Costura`). * [`TagLib#`](https://github.com/mono/taglib-sharp): used to save ID3 tags in MP3 files. * [`WPFLocalizationExtension`](https://github.com/XAMLMarkupExtensions/WPFLocalizationExtension): used to manage the localization. diff --git a/src/BandcampDownloader/BandcampDownloader.csproj b/src/BandcampDownloader/BandcampDownloader.csproj index 0a8ae419..d82479f7 100644 --- a/src/BandcampDownloader/BandcampDownloader.csproj +++ b/src/BandcampDownloader/BandcampDownloader.csproj @@ -1,7 +1,7 @@  - + Debug x86 @@ -12,7 +12,7 @@ Properties BandcampDownloader BandcampDownloader - v4.5.2 + v4.7.2 512 @@ -83,24 +83,32 @@ ..\packages\Castle.Core.4.4.0\lib\net45\Castle.Core.dll - ..\packages\Config.Net.4.13.2\lib\net452\Config.Net.dll + ..\packages\Config.Net.4.13.7\lib\net452\Config.Net.dll ..\packages\Costura.Fody.3.3.2\lib\net40\Costura.dll - - ..\packages\HtmlAgilityPack.1.11.2\lib\Net45\HtmlAgilityPack.dll + + ..\packages\HtmlAgilityPack.1.11.3\lib\Net45\HtmlAgilityPack.dll ..\packages\ImageResizer.4.2.5\lib\net45\ImageResizer.dll + + - ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll + ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll ..\packages\NLog.4.6.2\lib\net45\NLog.dll + + ..\packages\PlaylistsNET.1.0.4\lib\net45\PlaylistsNET.dll + + + ..\packages\taglib.2.1.0.0\lib\policy.2.0.taglib-sharp.dll + @@ -111,13 +119,12 @@ - 4.0 - + ..\packages\taglib.2.1.0.0\lib\taglib-sharp.dll @@ -137,6 +144,7 @@ + @@ -165,6 +173,9 @@ UserControlSettingsGeneral.xaml + + UserControlSettingsPlaylist.xaml + UserControlSettingsNetwork.xaml @@ -206,6 +217,10 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -241,6 +256,7 @@ Resources.fr.Designer.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -249,9 +265,7 @@ Designer - - Designer - + SettingsSingleFileGenerator Settings.Designer.cs @@ -300,15 +314,15 @@ + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ... + + + Apri la cartella + + + _Annulla + + + Controlla _ora + + + _Impostazioni + + + Apri le Impostazioni + + + Ripristina le impostazioni predefinite + + + _Salva + + + _Scarica + + + _Annulla + + + _Cerca aggiornamenti all'avvio + + + Se si spunta, l'applicazione cercherà il seguente indirizzo all'avvio: + + + Converti in _jpg + + + Se si spunta, la copertina sarà convertita in jpg con una compressione di livello 90 (ottimo compromesso fra dimensione e qualità). + + + Limita _larghezza/altezza massime + + + Se si spunta, la copertina sarà ridimensionata con larghezza/altezza massime specificate. + + + Converti in jp_g + + + Se si spunta, la copertina sarà convertita in jpg con una compressione di livello 90 (ottimo compromesso fra dimensione e qualità). + + + Limita larg_hezza/altezza massime + + + Se si spunta, la copertina sarà ridimensionata con larghezza/altezza massime specificate. + + + Create _playlist for each album + + + If checked, a file containing the album tracks will be created for each downloaded album. + + + Scarica _discografia + + + Se si spunta, sarà scaricata l'intera discografia dell'artista. + + + _Emetti suoni di notifica + + + Se si spunta, partirà una notifica sonora ad ogni scaricamento finito. + + + Use _extended format (for M3U only) + + + If checked, the extended format (directives prefaced by the # character) will be used when creating M3U playlists. + + + _Modifica i tag (ID3) delle tracce + + + Se si spunta, ogni tag sarà modificato come specificato sotto. + +Se non si spunta, tutte le impostazioni sotto saranno ignorate e i tag rimarranno come nel file scaricato. +Ciò è uguale a scegliere "Non modificare" per ogni tag. + + + Scarica un album alla _volta + + + Se si spunta, il programma scaricherà un album alla volta. +Se non si spunta, tutti gli album saranno scaricati contemporaneamente (consigliato per connessioni a banda larga). + + + Ottieni dimensioni _dei file + + + Se si spunta, saranno ottenute le dimensioni dei file cosí da aumentare la precisione della barra di progresso. +Togli la spunta da quest'impostazione per risparmiare tempo. + + + Salva nella _cartella + + + Se si spunta, la copertina sarà scaricata nella cartella dell'album. + + + Salva nei _tag + + + Se si spunta, la copertina sarà salvata nei tag della traccia. + + + _Mostra registro informazioni esteso + + + Se si spunta, il registro sarà piú preciso. + + + Scegli la cartella in cui salvare gli album + + + Cambia queste impostazioni a tuo rischio e pericolo. + + + Artista al_bum + + + Nome a_lbum + + + _Differenza di grandezza (%) dei file permessa + + + Art_ista + + + _Ripristina impostazioni + + + Comm_enti + + + File _name format + + + Dimensione massima (_px) + + + Dimensione massima (p_x) + + + _Massimo numero di tentativi + + + Attesa (sec) _prima di un nuovo tentativo + + + _Esponente di un nuovo tentativo + + + Salva _gli album in + + + _Formato nomi file: + + + Proxy _HTTP(S) + + + _Porta + + + _Lingua + + + Testo can_zoni + + + File _name format + + + Playlist _format + + + Alcune impostazioni non possono essere modificate durante lo scaricamento. + + + _Numero traccia + + + _Titolo + + + (il file registro è sempre esteso) + + + Fai click qui per andare sul sito ufficiale del progetto: + + + Non è possibile trovare aggiornamenti. + + + È disponibile una nuova versione ({0}) + + + Anno _di rilascio album + + + Impostazioni avanzate + + + Copertina + + + Scaricamenti + + + Generale + + + Rete + + + Playlist + + + Rinomina e tag + + + &annulla + + + &No + + + &OK + + + &Sí + + + Annullare tutti gli scaricamenti? + + + Si è verificato un errore durante la ricerca di aggiornamenti. Per favore, riprova piú tardi. + + + Ci sono scaricamenti in corso. Sei sicuro di voler chiudere l'applicazione e fermarli? + + + Disponi già della versione piú recente ({0}). + + + Ripristinare i valori predefiniti delle impostazioni? + + + È disponibile una nuova versione: +Versione attuale = {0} +Ultima versione = {1} + +Desideri andare sul sito ufficiale per scaricare l'ultima versione? + + + _Configurazione manuale dei proxy + + + _Nessun proxy + + + Proxy _di sistema + + + Do not modify + + + Empty tag + + + Do not modify + + + Empty tag + + + Save in tag + + + Help translate + + + Scaricando una traccia, se esiste già un file con lo stesso nome, si comparerà alla traccia da scaricare. +Se la dimensione dei file differisce meno di questo valore (in percentuale), la traccia non sarà scaricata. + +Valore consigliato = 5 + + + You can use placeholders to customize the file name: +- {artist} will be replaced by the album artist +- {album} will be replaced by the album name +- {year}, {month} and {day} will be replaced by the album release date + + + Numero massimo di tentativi per scaricare una traccia se fallisce lo scaricamento. +Raggiunto tale numero (per ogni traccia), la traccia sarà saltata. + +Valore consigliato = 7 + + + Controlla il meccanismo di backoff esponenziale. +Dopo ogni scaricamento fallito, BandcampDownloader può aspettare un certo tempo prima di riprovare +a scaricare la traccia, cosí da non attivare il filtro anti spam di Bandcamp. +La formula usata per calcolare il tempo d'attesa è: +tempo = cooldown * (esponente ^ conta-tentativi) + +Valore consigliato = 0.2 + + + Controlla il meccanismo di backoff esponenziale. +Dopo ogni scaricamento fallito, BandcampDownloader può aspettare un certo tempo prima di riprovare +a scaricare la traccia, cosí da non attivare il filtro anti spam di Bandcamp. +La formula usata per calcolare il tempo d'attesa è: +tempo = cooldown * (esponente ^ conta-tentativi) + +Valore consigliato = 4 + + + Puoi usare segnaposto per personalizzare le cartelle scaricate in base all'album: +- {artist} è sostituito con l'artista dell'album; +- {album} è sostituito col nome dell'album; +- {year}, {month} e {day} sono sostituiti con la data di rilascio. + + + Puoi usare segnaposto per personalizzare il nome dei file: +- {artist} è sostituito con l'artista dell'album; +- {title} è sostituito col nome della traccia; +- {tracknum} è sostituito col numero della traccia; +- {album} è sostituito col nome dell'album; +- {year}, {month} e {day} sono sostituiti con la data di rilascio. + + + You can use placeholders to customize the file name: +- {artist} will be replaced by the album artist +- {album} will be replaced by the album name +- {year}, {month} and {day} will be replaced by the album release date + + + Incolla qui gli URL degli album da scaricare. Puoi scaricare piú URL in una volta mettendo un link per riga. + +Un URL di Bandcamp è della forma http://[artista].bandcamp.com/album/[album] oppure http://[artista].bandcamp.com/track/[traccia] +Incolla l'URL di una pagina artista http://[artista].bandcamp.com e spunta “☑ Scarica discografia” per scaricare tutti i suoi album. + + + Impostazioni + + \ No newline at end of file diff --git a/src/BandcampDownloader/Properties/Resources.resx b/src/BandcampDownloader/Properties/Resources.resx index 1b4c2c5f..9c14d547 100644 --- a/src/BandcampDownloader/Properties/Resources.resx +++ b/src/BandcampDownloader/Properties/Resources.resx @@ -193,6 +193,12 @@ If checked, the cover art will be resized with the specified max width/height. + + Create _playlist for each album + + + If checked, a file containing the album tracks will be created for each downloaded album. + Download _artist discography @@ -205,6 +211,12 @@ If checked, a notification sound will be played when downloads are finished. + + Use _extended format (for M3U only) + + + If checked, the extended format (directives prefaced by the # character) will be used when creating M3U playlists. + _Modify tracks tags (ID3) @@ -222,7 +234,7 @@ This is equivalent to setting "Do not modify" on each tag. If unchecked, all albums will be downloaded at the same time (preferred if you have a high bandwidth). - Retrieve files _size + Retrieve files _size before downloading tracks If checked, files size will be retrieved so that precise download progress can be shown. @@ -249,6 +261,9 @@ Uncheck this option to save some time. Select the folder to save albums + + Change these settings at your own risk. + Album art_ist @@ -297,15 +312,18 @@ Uncheck this option to save some time. _Port - - Change these settings at your own risk. - _Language _Lyrics + + File _name format + + + Playlist _format + Some settings cannot be changed while tracks are downloading. @@ -345,6 +363,9 @@ Uncheck this option to save some time. Network + + Playlist + Naming and tags @@ -391,12 +412,28 @@ Would you like to go to the project website in order to download the latest vers _System proxy + + Do not modify + + + Empty tag + + + Do not modify + + + Empty tag + + + Save in tag + Help translate When downloading a track, if the same file (name) already exists, it will be checked against the track to download. If the size of both files differ from less than this value (in percent), the track download will be skipped. +Set this value to 0 in order to always download tracks, even if already existing on disk. Recommended value = 5 @@ -442,6 +479,12 @@ Recommended value = 4 - {title} will be replaced by the track name - {tracknum} will be replaced by the track number - {album} will be replaced by the album name +- {year}, {month} and {day} will be replaced by the album release date + + + You can use placeholders to customize the file name: +- {artist} will be replaced by the album artist +- {album} will be replaced by the album name - {year}, {month} and {day} will be replaced by the album release date diff --git a/src/BandcampDownloader/Properties/Settings.Designer.cs b/src/BandcampDownloader/Properties/Settings.Designer.cs index e5bab8cf..7c97778c 100644 --- a/src/BandcampDownloader/Properties/Settings.Designer.cs +++ b/src/BandcampDownloader/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace BandcampDownloader.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml new file mode 100644 index 00000000..533f56e1 --- /dev/null +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml.cs new file mode 100644 index 00000000..64827fc5 --- /dev/null +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml.cs @@ -0,0 +1,31 @@ +using System.Windows.Controls; + +namespace BandcampDownloader { + + public partial class UserControlSettingsPlaylist: UserControl { + + public UserControlSettingsPlaylist() { + InitializeComponent(); + // Save data context for bindings + DataContext = App.UserSettings; + } + + /// + /// Loads settings from App.UserSettings. + /// + public void LoadSettings() { + // Reload DataContext in case settings have changed + DataContext = App.UserSettings; + // No need to call UpdateTarget, it is done automatically + } + + /// + /// Saves settings to App.UserSettings. + /// + public void SaveSettings() { + checkBoxCreatePlaylist.GetBindingExpression(CheckBox.IsCheckedProperty).UpdateSource(); + checkBoxM3uExtended.GetBindingExpression(CheckBox.IsCheckedProperty).UpdateSource(); + comboBoxPlaylistFormat.GetBindingExpression(ComboBox.SelectedValueProperty).UpdateSource(); + } + } +} \ No newline at end of file diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsTags.xaml b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsTags.xaml index 8ce07e9d..110d89b8 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsTags.xaml +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsTags.xaml @@ -81,152 +81,144 @@ Grid.Column="0" Content="{lex:Loc}" Target="{Binding ElementName=comboBoxArtist}" /> - + PrependType="True" + SelectedItem="{Binding TagArtist, UpdateSourceTrigger=Explicit}" + TabIndex="2" + Type="{x:Type local:TagEditAction}" />