mirror of
https://github.com/AAndyProgram/SCrawler.git
synced 2026-03-15 08:12:17 +00:00
YT
VideoListForm: add a check of adding a URL if it has already been downloaded ('ValidateContainerURL')
YouTubeMediaContainerBase: add 'GetUrls' and 'GetFiles' functions; make 'Files' protected friend; update 'CreateUrlFile' function
SCrawler
Add downloaded saved posts to the feed
API.ProfileSaved: add token verification for multi-acc
API.SiteSettingsBase: update 'UpdateResponserFile' and 'CLONE_PROPERTIES.filterUC' functions
API.UserDataBase: add a null host check before request a new key; update 'OpenFolder' function (for saved posts)
API.YouTube: add the ability to download YouTube user community feeds
DownloadProgress: add 'KeyClickEventArgs' to download saved posts excluding from feed; add 'FeedFilesChanged' event; update 'Start' function
DownloadSavedPostsForm: add 'FeedFilesChanged' event and handler; update 'Start' function
Feed.FeedMedia: make the class compatible to work with saved posts
StandaloneDownloader.VideoDownloaderForm: add a check of adding a URL if it has already been downloaded ('ValidateContainerURL')
TDownloader: add the 'IsSavedPosts' field to the 'UserMediaD' structure; update 'UserMediaD.New(EContainer)' function (for saved posts); update 'UserMediaD.ToEContainer' function; add 'SessionSavedPosts' property
MainFrame: add 'Alt+A' hotkey to show scheduler; add 'Alt+P' hotkey to show progress form
Hosts.DownloadableMediaHost: add URL file to files list
86 lines
3.6 KiB
VB.net
86 lines
3.6 KiB
VB.net
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
|
' This program is free software: you can redistribute it and/or modify
|
|
' it under the terms of the GNU General Public License as published by
|
|
' the Free Software Foundation, either version 3 of the License, or
|
|
' (at your option) any later version.
|
|
'
|
|
' This program is distributed in the hope that it will be useful,
|
|
' but WITHOUT ANY WARRANTY
|
|
Imports System.ComponentModel
|
|
Imports SCrawler.DownloadObjects
|
|
Imports SCrawler.Plugin.Hosts
|
|
Imports PersonalUtilities.Forms
|
|
Imports PersonalUtilities.Forms.Controls.KeyClick
|
|
Friend Class DownloadSavedPostsForm
|
|
Friend Event DownloadDone As NotificationEventHandler
|
|
Friend Event FeedFilesChanged As TDownloader.FeedFilesChangedEventHandler
|
|
Private MyView As FormView
|
|
Private ReadOnly JobsList As List(Of DownloadProgress)
|
|
Friend ReadOnly Property Working As Boolean
|
|
Get
|
|
Return JobsList.Count > 0 AndAlso JobsList.Exists(Function(j) j.Job.Working)
|
|
End Get
|
|
End Property
|
|
Friend Sub New()
|
|
InitializeComponent()
|
|
JobsList = New List(Of DownloadProgress)
|
|
If Settings.Plugins.Count > 0 Then
|
|
Dim j As TDownloader.Job
|
|
For Each p As PluginHost In Settings.Plugins
|
|
If p.Settings.Default.IsSavedPostsCompatible Then
|
|
j = New TDownloader.Job(Plugin.ISiteSettings.Download.SavedPosts)
|
|
j.AddHost(p.Settings)
|
|
JobsList.Add(New DownloadProgress(j))
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
Private Sub DownloadSavedPostsForm_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
MyView = New FormView(Me) With {.LocationOnly = True}
|
|
MyView.Import(Settings.Design)
|
|
MyView.SetFormSize()
|
|
If JobsList.Count > 0 Then
|
|
For Each j As DownloadProgress In JobsList
|
|
AddHandler j.DownloadDone, AddressOf Jobs_DownloadDone
|
|
AddHandler j.FeedFilesChanged, AddressOf Jobs_FeedFilesChanged
|
|
TP_MAIN.RowStyles.Add(New RowStyle(SizeType.Absolute, 60))
|
|
TP_MAIN.RowCount += 1
|
|
TP_MAIN.Controls.Add(j.Get, 0, TP_MAIN.RowStyles.Count - 1)
|
|
Next
|
|
Dim s As Size = Size
|
|
s.Height += (60 * JobsList.Count + JobsList.Count)
|
|
MinimumSize = s
|
|
Size = s
|
|
MaximumSize = s
|
|
End If
|
|
End Sub
|
|
Private Sub DownloadSavedPostsForm_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
|
e.Cancel = True
|
|
Hide()
|
|
End Sub
|
|
Private Sub DownloadSavedPostsForm_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
|
|
[Stop]()
|
|
MyView.Dispose(Settings.Design)
|
|
End Sub
|
|
Private Sub [Start]() Handles BTT_DOWN_ALL.Click
|
|
If JobsList.Count > 0 Then
|
|
Dim ses% = Downloader.SessionSavedPosts
|
|
Dim args As New KeyClickEventArgs
|
|
args.Reset()
|
|
JobsList.ForEach(Sub(ByVal j As DownloadProgress)
|
|
ses += 1
|
|
j.Start(True, ses, Not args.Control)
|
|
End Sub)
|
|
Downloader.SessionSavedPosts = ses
|
|
End If
|
|
End Sub
|
|
Friend Sub [Stop]() Handles BTT_STOP_ALL.Click
|
|
If JobsList.Count > 0 Then JobsList.ForEach(Sub(j) j.Stop())
|
|
End Sub
|
|
Private Sub Jobs_DownloadDone(ByVal Obj As SettingsCLS.NotificationObjects, ByVal Message As String)
|
|
RaiseEvent DownloadDone(SettingsCLS.NotificationObjects.SavedPosts, Message)
|
|
End Sub
|
|
Private Sub Jobs_FeedFilesChanged(ByVal Added As Boolean)
|
|
RaiseEvent FeedFilesChanged(Added)
|
|
End Sub
|
|
End Class |