From e285de10f67e1a8887bd0f6b303288d4dc109258 Mon Sep 17 00:00:00 2001 From: Andy <88590076+AAndyProgram@users.noreply.github.com> Date: Sat, 10 Aug 2024 13:36:31 +0300 Subject: [PATCH] 2024.8.10.0 YT Fix bug when video is parsed using cookies but not downloaded SCrawler Feed: add a button to open file folder --- Changelog.md | 12 +++++++++ SCrawler.YouTube/Controls/VideoOptionsForm.vb | 4 ++- SCrawler.YouTube/Downloader/MediaItem.vb | 6 ++--- SCrawler.YouTube/Downloader/VideoListForm.vb | 11 ++++---- SCrawler.YouTube/My Project/AssemblyInfo.vb | 4 +-- .../My Project/AssemblyInfo.vb | 4 +-- SCrawler/Download/Feed/FeedMedia.Designer.vb | 25 +++++++++++++------ SCrawler/Download/Feed/FeedMedia.vb | 9 +++++-- SCrawler/My Project/AssemblyInfo.vb | 4 +-- 9 files changed, 54 insertions(+), 25 deletions(-) diff --git a/Changelog.md b/Changelog.md index 7aa0c19..0e7bc93 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,15 @@ +# 2024.8.10.0 + +*2024-08-10* + +- Added + - Feed: button to open file folder +- Updated + - yt-dlp up to version **2024.08.06** + - gallery-dl up to version **1.27.2** +- Fixed + - YouTube (standalone app): **video is being parsed using cookies but is not downloading** *(Issue #205)* + # 2024.8.1.0 *2024-08-01* diff --git a/SCrawler.YouTube/Controls/VideoOptionsForm.vb b/SCrawler.YouTube/Controls/VideoOptionsForm.vb index 605a482..5155791 100644 --- a/SCrawler.YouTube/Controls/VideoOptionsForm.vb +++ b/SCrawler.YouTube/Controls/VideoOptionsForm.vb @@ -32,6 +32,7 @@ Namespace API.YouTube.Controls Private Initialization As Boolean = True Private ReadOnly InheritsFromContainer As Boolean Private ReadOnly M3U8Files As List(Of SFile) + Friend Property UseCookies As Boolean = False Private ReadOnly Property M3U8FilesFull As List(Of SFile) Get Return ListAddList(Nothing, M3U8Files, LAP.NotContainsOnly).ListAddValue(CMB_PLS.Text, LAP.NotContainsOnly) @@ -65,6 +66,7 @@ Namespace API.YouTube.Controls CNT_PROCESSOR = New TableControlsProcessor(TP_CONTROLS) Me.InheritsFromContainer = InheritsFromContainer MyFieldsChecker = New FieldsChecker + UseCookies = MyYouTubeSettings.DefaultUseCookies End Sub #End Region #Region "Form handlers" @@ -227,7 +229,7 @@ Namespace API.YouTube.Controls Dim data As IEnumerable(Of Control) If .HasElements Then - data = .Elements.Select(Function(ee) New MediaItem(ee, True) With {.Dock = DockStyle.Fill, .Checked = ee.Checked}) + data = .Elements.Select(Function(ee) New MediaItem(ee, True) With {.Dock = DockStyle.Fill, .Checked = ee.Checked, .UseCookies = UseCookies}) Else data = (From m As MediaObject In .Self.MediaObjects Where m.Type = __contentType diff --git a/SCrawler.YouTube/Downloader/MediaItem.vb b/SCrawler.YouTube/Downloader/MediaItem.vb index 3616f52..2ec0836 100644 --- a/SCrawler.YouTube/Downloader/MediaItem.vb +++ b/SCrawler.YouTube/Downloader/MediaItem.vb @@ -437,7 +437,7 @@ Namespace DownloadObjects.STDownloader Else RaiseEvent BeforeOpenEditor(Me, MyContainer) End If - Using f As New VideoOptionsForm(MyContainer, initProtected Or isFull) + Using f As New VideoOptionsForm(MyContainer, initProtected Or isFull) With {.UseCookies = UseCookies} f.ShowDialog() .Protected = IIf(f.DialogResult = DialogResult.OK, True, initProtected) End Using @@ -465,12 +465,12 @@ Namespace DownloadObjects.STDownloader If Not MyContainer Is Nothing Then Dim f As Form = Nothing Select Case MyContainer.ObjectType - Case Base.YouTubeMediaType.Single : f = New VideoOptionsForm(MyContainer, True) + Case Base.YouTubeMediaType.Single : f = New VideoOptionsForm(MyContainer, True) With {.UseCookies = UseCookies} Case Base.YouTubeMediaType.Channel, Base.YouTubeMediaType.PlayList If MyContainer.IsMusic Then f = New MusicPlaylistsForm(MyContainer) Else - f = New VideoOptionsForm(MyContainer, True) + f = New VideoOptionsForm(MyContainer, True) With {.UseCookies = UseCookies} End If End Select If Not f Is Nothing Then diff --git a/SCrawler.YouTube/Downloader/VideoListForm.vb b/SCrawler.YouTube/Downloader/VideoListForm.vb index e55ed7b..2547e83 100644 --- a/SCrawler.YouTube/Downloader/VideoListForm.vb +++ b/SCrawler.YouTube/Downloader/VideoListForm.vb @@ -132,7 +132,8 @@ Namespace DownloadObjects.STDownloader #End Region #Region "Controls" Protected Sub ControlCreateAndAdd(ByVal Container As IYouTubeMediaContainer, Optional ByVal DisableDownload As Boolean = False, - Optional ByVal PerformClick As Boolean = True, Optional ByVal IsLoading As Boolean = False) + Optional ByVal PerformClick As Boolean = True, Optional ByVal IsLoading As Boolean = False, + Optional ByVal UseCookies As Boolean = False) ControlInvokeFast(TP_CONTROLS, Sub() With TP_CONTROLS .SuspendLayout() @@ -142,7 +143,7 @@ Namespace DownloadObjects.STDownloader .RowStyles.Insert(0, New RowStyle(SizeType.Absolute, 60)) .RowCount = .RowStyles.Count OffsetControls(0, True) - Dim cnt As New MediaItem(Container) With {.Dock = DockStyle.Fill, .Margin = New Padding(0)} + Dim cnt As New MediaItem(Container) With {.Dock = DockStyle.Fill, .Margin = New Padding(0), .UseCookies = UseCookies} AddHandler cnt.FileDownloaded, AddressOf MediaControl_FileDownloaded AddHandler cnt.Removal, AddressOf MediaControl_Removal AddHandler cnt.DownloadAgain, AddressOf MediaControl_DownloadAgain @@ -333,19 +334,19 @@ Namespace DownloadObjects.STDownloader If Not c Is Nothing Then Dim f As Form Select Case c.ObjectType - Case YouTubeMediaType.Single : f = New VideoOptionsForm(c) + Case YouTubeMediaType.Single : f = New VideoOptionsForm(c) With {.UseCookies = useCookies} Case YouTubeMediaType.Channel, YouTubeMediaType.PlayList If c.IsMusic Then f = New MusicPlaylistsForm(c) Else - f = New VideoOptionsForm(c) + f = New VideoOptionsForm(c) With {.UseCookies = useCookies} End If Case Else : c.Dispose() : Throw New ArgumentException($"Object type {c.ObjectType} not implemented", "IYouTubeMediaContainer.ObjectType") End Select If Not f Is Nothing Then If TypeOf f Is IDesignXMLContainer Then DirectCast(f, IDesignXMLContainer).DesignXML = DesignXML f.ShowDialog() - If f.DialogResult = DialogResult.OK AndAlso ValidateContainerURL(c) Then ControlCreateAndAdd(c, disableDown) + If f.DialogResult = DialogResult.OK AndAlso ValidateContainerURL(c) Then ControlCreateAndAdd(c, disableDown,,, useCookies) f.Dispose() End If End If diff --git a/SCrawler.YouTube/My Project/AssemblyInfo.vb b/SCrawler.YouTube/My Project/AssemblyInfo.vb index ad6a553..366885b 100644 --- a/SCrawler.YouTube/My Project/AssemblyInfo.vb +++ b/SCrawler.YouTube/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + diff --git a/SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb b/SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb index a5f5702..ef74db4 100644 --- a/SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb +++ b/SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + diff --git a/SCrawler/Download/Feed/FeedMedia.Designer.vb b/SCrawler/Download/Feed/FeedMedia.Designer.vb index 7a191c8..b676859 100644 --- a/SCrawler/Download/Feed/FeedMedia.Designer.vb +++ b/SCrawler/Download/Feed/FeedMedia.Designer.vb @@ -27,7 +27,6 @@ Namespace DownloadObjects Dim TP_LBL As System.Windows.Forms.TableLayoutPanel Dim CONTEXT_SEP_3 As System.Windows.Forms.ToolStripSeparator Dim CONTEXT_SEP_4 As System.Windows.Forms.ToolStripSeparator - Me.CONTEXT_SEP_2 = New System.Windows.Forms.ToolStripSeparator() Me.CH_CHECKED = New System.Windows.Forms.CheckBox() Me.LBL_INFO = New System.Windows.Forms.Label() Me.CONTEXT_DATA = New System.Windows.Forms.ContextMenuStrip(Me.components) @@ -37,6 +36,7 @@ Namespace DownloadObjects Me.BTT_CONTEXT_OPEN_USER = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_OPEN_USER_URL = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_OPEN_USER_POST = New System.Windows.Forms.ToolStripMenuItem() + Me.CONTEXT_SEP_2 = New System.Windows.Forms.ToolStripSeparator() Me.BTT_COPY_TO = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_MOVE_TO = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_FEED_ADD_FAV = New System.Windows.Forms.ToolStripMenuItem() @@ -52,6 +52,7 @@ Namespace DownloadObjects Me.ICON_SITE = New System.Windows.Forms.PictureBox() Me.TP_MAIN = New System.Windows.Forms.TableLayoutPanel() Me.LBL_TITLE = New System.Windows.Forms.Label() + Me.BTT_CONTEXT_OPEN_FILE_FOLDER = New System.Windows.Forms.ToolStripMenuItem() CONTEXT_SEP_1 = New System.Windows.Forms.ToolStripSeparator() TP_LBL = New System.Windows.Forms.TableLayoutPanel() CONTEXT_SEP_3 = New System.Windows.Forms.ToolStripSeparator() @@ -67,11 +68,6 @@ Namespace DownloadObjects CONTEXT_SEP_1.Name = "CONTEXT_SEP_1" CONTEXT_SEP_1.Size = New System.Drawing.Size(302, 6) ' - 'CONTEXT_SEP_2 - ' - Me.CONTEXT_SEP_2.Name = "CONTEXT_SEP_2" - Me.CONTEXT_SEP_2.Size = New System.Drawing.Size(302, 6) - ' 'TP_LBL ' TP_LBL.ColumnCount = 3 @@ -114,9 +110,9 @@ Namespace DownloadObjects ' 'CONTEXT_DATA ' - Me.CONTEXT_DATA.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.CONTEXT_SEP_0, Me.BTT_CONTEXT_OPEN_MEDIA, Me.BTT_CONTEXT_OPEN_USER, CONTEXT_SEP_1, Me.BTT_CONTEXT_OPEN_USER_URL, Me.BTT_CONTEXT_OPEN_USER_POST, Me.CONTEXT_SEP_2, Me.BTT_COPY_TO, Me.BTT_MOVE_TO, CONTEXT_SEP_3, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_FAV, Me.BTT_FEED_REMOVE_SPEC, CONTEXT_SEP_4, Me.BTT_CONTEXT_FIND_USER, Me.BTT_CONTEXT_INFO, Me.CONTEXT_SEP_5, Me.BTT_CONTEXT_DELETE}) + Me.CONTEXT_DATA.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.CONTEXT_SEP_0, Me.BTT_CONTEXT_OPEN_MEDIA, Me.BTT_CONTEXT_OPEN_USER, Me.BTT_CONTEXT_OPEN_FILE_FOLDER, CONTEXT_SEP_1, Me.BTT_CONTEXT_OPEN_USER_URL, Me.BTT_CONTEXT_OPEN_USER_POST, Me.CONTEXT_SEP_2, Me.BTT_COPY_TO, Me.BTT_MOVE_TO, CONTEXT_SEP_3, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_FAV, Me.BTT_FEED_REMOVE_SPEC, CONTEXT_SEP_4, Me.BTT_CONTEXT_FIND_USER, Me.BTT_CONTEXT_INFO, Me.CONTEXT_SEP_5, Me.BTT_CONTEXT_DELETE}) Me.CONTEXT_DATA.Name = "CONTEXT_PIC" - Me.CONTEXT_DATA.Size = New System.Drawing.Size(306, 414) + Me.CONTEXT_DATA.Size = New System.Drawing.Size(306, 436) ' 'BTT_CONTEXT_DOWN ' @@ -160,6 +156,11 @@ Namespace DownloadObjects Me.BTT_CONTEXT_OPEN_USER_POST.Size = New System.Drawing.Size(305, 22) Me.BTT_CONTEXT_OPEN_USER_POST.Text = "Open post" ' + 'CONTEXT_SEP_2 + ' + Me.CONTEXT_SEP_2.Name = "CONTEXT_SEP_2" + Me.CONTEXT_SEP_2.Size = New System.Drawing.Size(302, 6) + ' 'BTT_COPY_TO ' Me.BTT_COPY_TO.Image = Global.SCrawler.My.Resources.Resources.PastePic_32 @@ -289,6 +290,13 @@ Namespace DownloadObjects Me.LBL_TITLE.Size = New System.Drawing.Size(140, 25) Me.LBL_TITLE.TabIndex = 1 ' + 'BTT_CONTEXT_OPEN_FILE_FOLDER + ' + Me.BTT_CONTEXT_OPEN_FILE_FOLDER.Image = Global.SCrawler.My.Resources.Resources.FolderPic_32 + Me.BTT_CONTEXT_OPEN_FILE_FOLDER.Name = "BTT_CONTEXT_OPEN_FILE_FOLDER" + Me.BTT_CONTEXT_OPEN_FILE_FOLDER.Size = New System.Drawing.Size(305, 22) + Me.BTT_CONTEXT_OPEN_FILE_FOLDER.Text = "Open file folder" + ' 'FeedMedia ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -335,5 +343,6 @@ Namespace DownloadObjects Private WithEvents BTT_MOVE_TO As ToolStripMenuItem Private WithEvents CONTEXT_SEP_5 As ToolStripSeparator Private WithEvents CONTEXT_SEP_2 As ToolStripSeparator + Private WithEvents BTT_CONTEXT_OPEN_FILE_FOLDER As ToolStripMenuItem End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Download/Feed/FeedMedia.vb b/SCrawler/Download/Feed/FeedMedia.vb index 16b59d1..e8b68ac 100644 --- a/SCrawler/Download/Feed/FeedMedia.vb +++ b/SCrawler/Download/Feed/FeedMedia.vb @@ -178,6 +178,7 @@ Namespace DownloadObjects BTT_CONTEXT_DOWN.Visible = True CONTEXT_SEP_0.Visible = True BTT_CONTEXT_OPEN_USER.Visible = False + BTT_CONTEXT_OPEN_FILE_FOLDER.Visible = False CONTEXT_SEP_5.Visible = False BTT_CONTEXT_DELETE.Visible = False @@ -416,8 +417,12 @@ Namespace DownloadObjects End Sub #End Region #Region "Open media, folder" - Private Sub BTT_CONTEXT_OPEN_MEDIA_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_OPEN_MEDIA.Click - File.Open() + Private Sub BTT_CONTEXT_OPEN_MEDIA_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_OPEN_MEDIA.Click, BTT_CONTEXT_OPEN_FILE_FOLDER.Click + If Not sender Is Nothing AndAlso sender Is BTT_CONTEXT_OPEN_FILE_FOLDER Then + GlobalOpenPath(File) + Else + File.Open() + End If End Sub Private Sub BTT_CONTEXT_OPEN_USER_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_OPEN_USER.Click If Not UserKey.IsEmptyString Then diff --git a/SCrawler/My Project/AssemblyInfo.vb b/SCrawler/My Project/AssemblyInfo.vb index 55b0b5d..5016e2e 100644 --- a/SCrawler/My Project/AssemblyInfo.vb +++ b/SCrawler/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + +