diff --git a/Installer-x64/Installer-x64.vdproj b/Installer-x64/Installer-x64.vdproj index fab103f58..4e18d0690 100644 --- a/Installer-x64/Installer-x64.vdproj +++ b/Installer-x64/Installer-x64.vdproj @@ -411,6 +411,12 @@ } "Entry" { + "MsmKey" = "8:_408D6290B8184A11BB72F60074DDA976" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_41029E4CBB9CAB6AAE024C0C94610F1F" "OwnerKey" = "8:_3AB76FEAD3A849FBB271E712B0EA59C3" "MsmSig" = "8:_UNDEFINED" @@ -3906,6 +3912,26 @@ "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_408D6290B8184A11BB72F60074DDA976" + { + "SourcePath" = "8:..\\YTMusicUploader\\Resources\\installer-splash.jpg" + "TargetName" = "8:installer-splash.jpg" + "Tag" = "8:" + "Folder" = "8:_B3B65ED76DD54A94A22A406398263B40" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_41029E4CBB9CAB6AAE024C0C94610F1F" { "AssemblyRegister" = "3:1" @@ -7895,15 +7921,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:YT Music Uploader" - "ProductCode" = "8:{F2666E44-1246-4246-B363-E596F8A5946C}" - "PackageCode" = "8:{F5CF1585-7BA1-48B7-9D67-1CAA69E6A746}" + "ProductCode" = "8:{8FCFCC21-DB67-4C54-A585-4F2943DBFAEB}" + "PackageCode" = "8:{E6595A11-4F9A-40EE-8C62-06F8758A3B4D}" "UpgradeCode" = "8:{AB84D0C0-CDF7-4BDF-90B0-C4808DB11DAB}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:1.7.1" + "ProductVersion" = "8:1.7.2" "Manufacturer" = "8:JB-Net Software Solutions" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:https://github.com/jamesbrindle/YTMusicUploader/issues" @@ -8071,7 +8097,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_408D6290B8184A11BB72F60074DDA976" "UsePlugInResources" = "11:TRUE" } } @@ -8085,28 +8112,6 @@ "Attributes" = "3:1" "Dialogs" { - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_557428259AE948A7853ED9F1CE1FFE72" - { - "Sequence" = "3:300" - "DisplayName" = "8:Confirm Installation" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdConfirmDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_6D1170396D514F2BA140AA420A8EBF2F" { "Sequence" = "3:100" @@ -8124,7 +8129,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_408D6290B8184A11BB72F60074DDA976" "UsePlugInResources" = "11:TRUE" } "CopyrightWarning" @@ -8135,8 +8141,8 @@ "Type" = "3:3" "ContextData" = "8:" "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1202" + "Setting" = "3:2" + "Value" = "8:WARNING: This computer program is not protected by copyright law and international treaties. Unauthorized duplication or distribution of this program, or any portion of it, will not result in severe civil or criminal penalties, and will not be prosecuted. I will however, not accept any responsbility for your YTM music file and playlists uploads." "DefaultValue" = "8:#1202" "UsePlugInResources" = "11:TRUE" } @@ -8172,7 +8178,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_408D6290B8184A11BB72F60074DDA976" "UsePlugInResources" = "11:TRUE" } "InstallAllUsersVisible" @@ -8216,7 +8223,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_408D6290B8184A11BB72F60074DDA976" "UsePlugInResources" = "11:TRUE" } "ShowProgress" @@ -8260,7 +8268,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_408D6290B8184A11BB72F60074DDA976" "UsePlugInResources" = "11:TRUE" } "UpdateText" @@ -8316,29 +8325,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_95198896E06744E9B9B823F8EAEA4512" - { - "Sequence" = "3:300" - "DisplayName" = "8:Confirm Installation" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_408D6290B8184A11BB72F60074DDA976" "UsePlugInResources" = "11:TRUE" } } @@ -8360,7 +8348,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_408D6290B8184A11BB72F60074DDA976" "UsePlugInResources" = "11:TRUE" } "CopyrightWarning" @@ -8371,8 +8360,8 @@ "Type" = "3:3" "ContextData" = "8:" "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1202" + "Setting" = "3:2" + "Value" = "8:WARNING: This computer program is not protected by copyright law and international treaties. Unauthorized duplication or distribution of this program, or any portion of it, will not result in severe civil or criminal penalties, and will not be prosecuted. I will however, not accept any responsbility for your YTM music file and playlists uploads." "DefaultValue" = "8:#1202" "UsePlugInResources" = "11:TRUE" } @@ -8417,7 +8406,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_408D6290B8184A11BB72F60074DDA976" "UsePlugInResources" = "11:TRUE" } "ShowProgress" diff --git a/Installer-x86/Installer.vdproj b/Installer-x86/Installer.vdproj index fc3242975..44b39cdfe 100644 --- a/Installer-x86/Installer.vdproj +++ b/Installer-x86/Installer.vdproj @@ -435,6 +435,12 @@ } "Entry" { + "MsmKey" = "8:_58ACD6EF558448AEB0A9282869CF5F68" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_59C18B8353B2BB80C02AF7FAA0081638" "OwnerKey" = "8:_858C89B90B894F97A8CDE5C10D88F13E" "MsmSig" = "8:_UNDEFINED" @@ -4183,6 +4189,26 @@ "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_58ACD6EF558448AEB0A9282869CF5F68" + { + "SourcePath" = "8:..\\YTMusicUploader\\Resources\\installer-splash.jpg" + "TargetName" = "8:installer-splash.jpg" + "Tag" = "8:" + "Folder" = "8:_1059907B4555471C9BCCD73D3FBBCC93" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_59C18B8353B2BB80C02AF7FAA0081638" { "AssemblyRegister" = "3:1" @@ -7895,15 +7921,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:YT Music Uploader" - "ProductCode" = "8:{37E6369F-5E0E-4F4D-87F4-81236B6FA0E3}" - "PackageCode" = "8:{8A50158B-ECFE-4205-8AA3-EE9DFE732890}" + "ProductCode" = "8:{6EA18946-FB6F-4BBA-9942-94FAC2A61E9E}" + "PackageCode" = "8:{B09A6455-6722-44E4-B4B1-40CD20F46001}" "UpgradeCode" = "8:{1E18ED3F-C210-4589-BEB4-58E2680D3C71}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:1.7.1" + "ProductVersion" = "8:1.7.2" "Manufacturer" = "8:JB-Net Software Solutions" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:https://github.com/jamesbrindle/YTMusicUploader/issues" @@ -8071,7 +8097,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_58ACD6EF558448AEB0A9282869CF5F68" "UsePlugInResources" = "11:TRUE" } "CopyrightWarning" @@ -8082,8 +8109,8 @@ "Type" = "3:3" "ContextData" = "8:" "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1202" + "Setting" = "3:2" + "Value" = "8:WARNING: This computer program is not protected by copyright law and international treaties. Unauthorized duplication or distribution of this program, or any portion of it, will not result in severe civil or criminal penalties, and will not be prosecuted. I will however, not accept any responsbility for your YTM music file and playlists uploads." "DefaultValue" = "8:#1202" "UsePlugInResources" = "11:TRUE" } @@ -8119,29 +8146,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FB7257CD732847F19D6049B42FE131F5" - { - "Sequence" = "3:300" - "DisplayName" = "8:Confirm Installation" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_58ACD6EF558448AEB0A9282869CF5F68" "UsePlugInResources" = "11:TRUE" } } @@ -8172,7 +8178,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_58ACD6EF558448AEB0A9282869CF5F68" "UsePlugInResources" = "11:TRUE" } "ShowProgress" @@ -8216,7 +8223,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_58ACD6EF558448AEB0A9282869CF5F68" "UsePlugInResources" = "11:TRUE" } "CopyrightWarning" @@ -8227,8 +8235,8 @@ "Type" = "3:3" "ContextData" = "8:" "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1202" + "Setting" = "3:2" + "Value" = "8:WARNING: This computer program is not protected by copyright law and international treaties. Unauthorized duplication or distribution of this program, or any portion of it, will not result in severe civil or criminal penalties, and will not be prosecuted. I will however, not accept any responsbility for your YTM music file and playlists uploads." "DefaultValue" = "8:#1202" "UsePlugInResources" = "11:TRUE" } @@ -8264,7 +8272,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_58ACD6EF558448AEB0A9282869CF5F68" "UsePlugInResources" = "11:TRUE" } "InstallAllUsersVisible" @@ -8282,28 +8291,6 @@ } } } - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_EA86CB3542044F3886568C0862A1E521" - { - "Sequence" = "3:300" - "DisplayName" = "8:Confirm Installation" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdConfirmDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } } } "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_47B498F3E4FB49659C9049858CC94CAD" @@ -8336,7 +8323,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_58ACD6EF558448AEB0A9282869CF5F68" "UsePlugInResources" = "11:TRUE" } "ShowProgress" @@ -8386,7 +8374,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_58ACD6EF558448AEB0A9282869CF5F68" "UsePlugInResources" = "11:TRUE" } } @@ -8417,7 +8406,8 @@ "Type" = "3:8" "ContextData" = "8:Bitmap" "Attributes" = "3:4" - "Setting" = "3:1" + "Setting" = "3:2" + "Value" = "8:_58ACD6EF558448AEB0A9282869CF5F68" "UsePlugInResources" = "11:TRUE" } "UpdateText" @@ -8445,7 +8435,7 @@ { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_858C89B90B894F97A8CDE5C10D88F13E" { - "SourcePath" = "8:..\\YTMusicUploader\\obj\\x86\\Release\\YTMusicUploader.exe" + "SourcePath" = "8:..\\YTMusicUploader\\obj\\x64\\Release\\YTMusicUploader.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_1059907B4555471C9BCCD73D3FBBCC93" diff --git a/README.md b/README.md index 6c576b2e8..ffc66cce3 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Automatically upload your local personal music library to YouTube Music and bulk     -**[Download Version 1.7.1 Installer](https://github.com/jamesbrindle/YTMusicUploader/releases/tag/v1.7.1)** +**[Download Version 1.7.2 Installer](https://github.com/jamesbrindle/YTMusicUploader/releases/tag/v1.7.2)**     diff --git a/YTMusicUploader/App.config b/YTMusicUploader/App.config index a5407cc13..efbb39077 100644 --- a/YTMusicUploader/App.config +++ b/YTMusicUploader/App.config @@ -38,8 +38,8 @@ - - + + diff --git a/YTMusicUploader/Business/PlaylistProcessor.cs b/YTMusicUploader/Business/PlaylistProcessor.cs index 5b53ec571..2f6725662 100644 --- a/YTMusicUploader/Business/PlaylistProcessor.cs +++ b/YTMusicUploader/Business/PlaylistProcessor.cs @@ -213,12 +213,19 @@ public void Process(bool forceRefreshPlaylists = false) { if (e.Message.Contains("Empty Playlist")) { + // Ignore - don't create playlist + + Logger.LogWarning( + "Playlist Processor", + "Empty playlist detected. It will be ignored: " + playlistFile.Path, + true); + playlistFile.LastModifiedDate = new FileInfo(playlistFile.Path).LastWriteTime; playlistFile.LastUpload = playlistFile.LastModifiedDate; playlistFile.Save().Wait(); } - - Logger.Log(e, $"PlaylistProcessor - Error processing playlist: {playlistFile.Title}"); + else + Logger.Log(e, $"PlaylistProcessor - Error processing playlist: {playlistFile.Title}"); } } @@ -231,10 +238,9 @@ public void Process(bool forceRefreshPlaylists = false) MainForm.Settings.LastPlaylistUpload = DateTime.Now; MainForm.Settings.Save().Wait(); - Logger.LogWarning( + Logger.LogInfo( "PlaylistProcessor.Process", - "YTM playlist creation limited reached - Stopping playlist processing for this session.", - true); + "YTM playlist creation limited reached - Stopping playlist processing for this session."); ThreadHelper.SafeSleep(15000); break; diff --git a/YTMusicUploader/Properties/AssemblyInfo.cs b/YTMusicUploader/Properties/AssemblyInfo.cs index 3d37a68f0..32c77a81e 100644 --- a/YTMusicUploader/Properties/AssemblyInfo.cs +++ b/YTMusicUploader/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.7.1")] -[assembly: AssemblyFileVersion("1.7.1")] +[assembly: AssemblyVersion("1.7.2")] +[assembly: AssemblyFileVersion("1.7.2")] diff --git a/YTMusicUploader/Providers/Playlist/PlaylistReader.cs b/YTMusicUploader/Providers/Playlist/PlaylistReader.cs index fc093d9f3..1aeafe500 100644 --- a/YTMusicUploader/Providers/Playlist/PlaylistReader.cs +++ b/YTMusicUploader/Providers/Playlist/PlaylistReader.cs @@ -68,20 +68,32 @@ public static PlaylistFile ReadPlaylistFile(string path) foreach (string musicFilePath in paths) { - string absolutePath = Utils.IsAbsolutePath(musicFilePath) - ? musicFilePath - : Utils.MakeAbsolutePath(Path.GetDirectoryName(path), musicFilePath); + try + { + string absolutePath = Utils.IsAbsolutePath(musicFilePath) + ? musicFilePath + : Utils.MakeAbsolutePath(Path.GetDirectoryName(path), musicFilePath); - if (absolutePath.StartsWith("file://")) - absolutePath = new Uri(absolutePath).LocalPath; + if (absolutePath.StartsWith("file://")) + absolutePath = new Uri(absolutePath).LocalPath; - if (Path.GetExtension(absolutePath).ToLower().In(Global.SupportedMusicFiles) && - File.Exists(absolutePath)) - { - playlistFile.PlaylistItems.Add(new PlaylistFile.PlaylistFileItem + if (Path.GetExtension(absolutePath).ToLower().In(Global.SupportedMusicFiles) && + File.Exists(absolutePath)) { - Path = absolutePath - }); + playlistFile.PlaylistItems.Add(new PlaylistFile.PlaylistFileItem + { + Path = absolutePath + }); + } + } + catch(Exception e) + { + // Invalid path - Ignore - Don't add + var _ = e; + Logger.LogWarning( + "ReadPlaylistFile", + "Invalid path detected in playlist file and will be ignored: " + path, + true); } } } diff --git a/YTMusicUploader/Resources/installer-splash.jpg b/YTMusicUploader/Resources/installer-splash.jpg new file mode 100644 index 000000000..9f02c00c2 Binary files /dev/null and b/YTMusicUploader/Resources/installer-splash.jpg differ diff --git a/YTMusicUploader/YTMusicUploader.csproj b/YTMusicUploader/YTMusicUploader.csproj index 1cc6e7d95..f3c2363d3 100644 --- a/YTMusicUploader/YTMusicUploader.csproj +++ b/YTMusicUploader/YTMusicUploader.csproj @@ -606,6 +606,7 @@ +