mirror of
https://github.com/AAndyProgram/SCrawler.git
synced 2026-03-14 15:52:18 +00:00
2023.6.19.0
YT.Progress: make the playlists parsing progress more informative; change form display method YT.YouTubeMediaContainerBase: fix sort algo YT.Tray: add 'Add' button; add 'Ctrl+Click' on tray icon to add download YT.Settings: add setting 'Download on click in tray: show form' LPSG: some files didn't download (encoding) Twitter: hide cache deletion errors Mastogon: fixed bug in 'ReparseMissing' function Reddit: downloaded gifs are static XHamster: videos are not downloading or downloading incorrectly Progress: fix bugs; minor improvements
This commit is contained in:
@@ -152,6 +152,9 @@ Namespace API.YouTube.Base
|
||||
<Browsable(True), GridVisible(False), XMLVN({"Defaults"}, False), Category("Defaults"), DisplayName("Confirm exit"),
|
||||
Description("Exit confirmation when closing the program.")>
|
||||
Public ReadOnly Property ExitConfirm As XMLValue(Of Boolean)
|
||||
<Browsable(True), GridVisible(False), XMLVN({"Defaults"}), Category("Defaults"), DisplayName("Download on click in tray: show form"),
|
||||
Description("Show main window when download by clicking (Ctrl+Click) the tray icon. Default: false")>
|
||||
Public ReadOnly Property ShowFormDownTrayClick As XMLValue(Of Boolean)
|
||||
#End Region
|
||||
#Region "Defaults Video"
|
||||
<Browsable(True), GridVisible, XMLVN({"DefaultsVideo"}, "MKV"), Category("Defaults Video"), DisplayName("Default format"),
|
||||
|
||||
@@ -82,7 +82,6 @@ Namespace API.YouTube.Controls
|
||||
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
|
||||
Me.Text = "Parsing progress"
|
||||
Me.TopMost = True
|
||||
TP_MAIN.ResumeLayout(False)
|
||||
TP_MAIN.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
@@ -17,9 +17,27 @@ Namespace API.YouTube.Controls
|
||||
Return TokenSource.Token
|
||||
End Get
|
||||
End Property
|
||||
Public Sub New()
|
||||
Private ReadOnly CountMax As Integer
|
||||
Private CountCurrent As Integer = 1
|
||||
Friend Sub NextPlaylist()
|
||||
CountCurrent += 1
|
||||
MyProgress.InformationTemporary(True) = InfoStr
|
||||
MyProgress.Information = InfoStr
|
||||
End Sub
|
||||
Private ReadOnly Property InfoStr As String
|
||||
Get
|
||||
Const MainMsg$ = "Data parsing in progress"
|
||||
If CountMax > 1 Then
|
||||
Return $"{MainMsg} [{CountCurrent - 1}/{CountMax}]"
|
||||
Else
|
||||
Return MainMsg
|
||||
End If
|
||||
End Get
|
||||
End Property
|
||||
Public Sub New(Optional ByVal _Count As Integer = 1)
|
||||
InitializeComponent()
|
||||
MyProgress = New MyProgress(PR_MAIN, LBL_MAIN, "Data parsing in progress") With {.ResetProgressOnMaximumChanges = False}
|
||||
CountMax = _Count
|
||||
MyProgress = New MyProgress(PR_MAIN, LBL_MAIN, InfoStr) With {.ResetProgressOnMaximumChanges = False}
|
||||
TokenSource = New CancellationTokenSource
|
||||
End Sub
|
||||
Public Sub SetInitialValues(ByVal Count As Integer, ByVal Info As String)
|
||||
|
||||
@@ -237,6 +237,7 @@ Namespace DownloadObjects.STDownloader
|
||||
Dim pForm As ParsingProgressForm = Nothing
|
||||
Try
|
||||
Dim useCookies As Boolean = MyYouTubeSettings.DefaultUseCookies
|
||||
Dim sTag$ = If(Sender?.Tag, String.Empty)
|
||||
Dim disableDown As Boolean = e.Shift
|
||||
If e.Control Then useCookies = True
|
||||
Dim useCookiesParse As Boolean? = Nothing
|
||||
@@ -247,21 +248,28 @@ Namespace DownloadObjects.STDownloader
|
||||
Dim GetDefault As Boolean = True
|
||||
Dim GetShorts As Boolean = True
|
||||
|
||||
If Sender.Tag = "pls" Then
|
||||
If sTag = "pls" Then
|
||||
Using pf As New PlaylistArrayForm With {.DesignXML = DesignXML}
|
||||
pf.ShowDialog()
|
||||
If pf.DialogResult = DialogResult.OK Then
|
||||
With pf.URLs
|
||||
If .Count > 0 Then
|
||||
pForm = New ParsingProgressForm
|
||||
pForm.Show()
|
||||
pForm = New ParsingProgressForm(.Count)
|
||||
pForm.Show(Me)
|
||||
pForm.SetInitialValues(.Count, "Parsing playlists...")
|
||||
Dim containers As New List(Of IYouTubeMediaContainer)
|
||||
For Each u$ In .Self : containers.Add(YouTubeFunctions.Parse(u, useCookiesParse, pForm.Token, pForm.MyProgress, True, False)) : pForm.MyProgress.Perform() : Next
|
||||
For Each u$ In .Self
|
||||
containers.Add(YouTubeFunctions.Parse(u, useCookiesParse, pForm.Token, pForm.MyProgress, True, False))
|
||||
pForm.NextPlaylist()
|
||||
pForm.MyProgress.Perform()
|
||||
Next
|
||||
pForm.Dispose()
|
||||
If containers.Count > 0 Then containers.ListDisposeRemoveAll(Function(cc) cc.HasError Or Not cc.Exists)
|
||||
If containers.Count > 0 Then
|
||||
c = New Channel With {.UserTitle = IIf(pf.IsOneArtist, containers(0).UserTitle, "Playlists")}
|
||||
c = New Channel With {
|
||||
.UserTitle = IIf(pf.IsOneArtist, containers(0).UserTitle, "Playlists"),
|
||||
.IsMusic = containers.Any(Function(cc) cc.IsMusic)
|
||||
}
|
||||
c.Elements.AddRange(containers)
|
||||
End If
|
||||
End If
|
||||
@@ -269,7 +277,7 @@ Namespace DownloadObjects.STDownloader
|
||||
End If
|
||||
End Using
|
||||
Else
|
||||
Select Case CStr(Sender.Tag)
|
||||
Select Case sTag
|
||||
Case "ans" : GetShorts = False
|
||||
Case "as" : GetDefault = False : GetShorts = True
|
||||
End Select
|
||||
@@ -280,7 +288,7 @@ Namespace DownloadObjects.STDownloader
|
||||
If Not c Is Nothing OrElse YouTubeFunctions.IsMyUrl(url) Then
|
||||
If c Is Nothing Then
|
||||
pForm = New ParsingProgressForm
|
||||
pForm.Show()
|
||||
pForm.Show(Me)
|
||||
pForm.SetInitialValues(1, "Parsing data...")
|
||||
c = YouTubeFunctions.Parse(url, useCookiesParse, pForm.Token, pForm.MyProgress, GetDefault, GetShorts)
|
||||
pForm.Dispose()
|
||||
|
||||
@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2023.6.9.0")>
|
||||
<Assembly: AssemblyFileVersion("2023.6.9.0")>
|
||||
<Assembly: AssemblyVersion("2023.6.19.0")>
|
||||
<Assembly: AssemblyFileVersion("2023.6.19.0")>
|
||||
<Assembly: NeutralResourcesLanguage("en")>
|
||||
|
||||
@@ -22,17 +22,8 @@ Imports UMStates = SCrawler.Plugin.UserMediaStates
|
||||
Imports CollectionModes = PersonalUtilities.Functions.XML.Objects.IXMLValuesCollection.Modes
|
||||
Namespace API.YouTube.Objects
|
||||
Public Class ContainerDateComparer : Implements IComparer(Of IYouTubeMediaContainer)
|
||||
Private ReadOnly NullDateValue As New Date
|
||||
Public Function Compare(ByVal x As IYouTubeMediaContainer, ByVal y As IYouTubeMediaContainer) As Integer Implements IComparer(Of IYouTubeMediaContainer).Compare
|
||||
If x.DateDownloaded = NullDateValue And y.DateDownloaded = NullDateValue Then
|
||||
Return x.DateCreated.CompareTo(y.DateCreated) * -1
|
||||
ElseIf x.DateDownloaded = NullDateValue Then
|
||||
Return -1
|
||||
ElseIf y.DateDownloaded = NullDateValue Then
|
||||
Return 1
|
||||
Else
|
||||
Return x.DateDownloaded.CompareTo(y.DateDownloaded) * -1
|
||||
End If
|
||||
Return x.DateCreated.CompareTo(y.DateCreated) * -1
|
||||
End Function
|
||||
End Class
|
||||
Public MustInherit Class YouTubeMediaContainerBase : Implements IYouTubeMediaContainer
|
||||
|
||||
Reference in New Issue
Block a user