mirror of
https://github.com/AAndyProgram/SCrawler.git
synced 2026-03-15 08:12:17 +00:00
PluginProvider IPluginContentProvider: add 'NameTrue' property YT YouTubeSettings: remove the 'CreateDescriptionFiles_AddUploadDate' property PlayListParserForm: add 'RDAMP' as default value when initializing form YouTubeMediaContainerBase: fix line breaks SCrawler API.Base: add 'EditorExchangeOptionsBase' class API.Base.GDL: move functions to Pinterest.UserData API.Base.IUserData: add 'NameTrue' property API.Base.SiteSettingsBase: update the 'GetUserUrl' function to use the 'NameTrue' property; update 'UserOptions' function API.Base.UserDataBase: add 'NameTrue' property; add 'SimpleDownloadAvatar' function to get rid of the same functions of other classes; Update 'UserDescriptionUpdate' function API.Base.InternalSettingsForm: calculate max offset ADD API.Bluesky API.Facebook: add 'Reels' downloads; fix video downloading API.Instagram: add inheritance 'EditorExchangeOptionsBase'; remove 'GetUserUrl' function from 'SiteSettings'; update 'UserData' class to new environment; add saving 'heic' file along with 'jpg' API.LPSG.UserData: simplify 403 error API.Mastodon: update classes to new environment API.OnlyFans: add 'AppTokenDefault'; disable cookies update; update 'UserData' class to new environment API.Pinterest: add sub-boards downloading; update download functions API.PornHub: fix photo & video downloading; remove 'ModelHub' support API.Reddit: fix token update; update 'UserData' class to new environment API.ThisVid: update 'UserData' class to new environment API.ThreadsNet: fix data download; update classes to new environment; fix 'UserID' extraction; add the ability to manually change the UserName API.TikTok: update classes to new environment API.Twitter: update classes to new environment; add sleep timers to fully download large profiles; add 'CookiesUpdate' hidden property API.Xhamster: update classes to new environment API.XVIDEOS: update classes to new environment Feed: add the ability to invert selection; open post URL when double-clicking on subscription image FeedSpecialCollection: update 'FeedsComparer' GlobalSettingsForm: remove 'UserAgent' from the 'Basis' tab UserDataHost: update class to new environment SettingsCLS: set the 'UserSiteNameAsFriendly' property to 'True' by default; disable 'DownDetector'; add 'UsersListProtected' property
121 lines
5.9 KiB
VB.net
121 lines
5.9 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.Threading
|
|
Imports SCrawler.API.Base
|
|
Imports PersonalUtilities.Functions.XML
|
|
Imports PersonalUtilities.Functions.RegularExpressions
|
|
Imports PersonalUtilities.Tools.Web.Clients
|
|
Imports UTypes = SCrawler.API.Base.UserMedia.Types
|
|
Imports Converters = PersonalUtilities.Functions.SymbolsConverter.Converters
|
|
Namespace API.LPSG
|
|
Friend Class UserData : Inherits UserDataBase
|
|
Private Const Name_LatestPage As String = "LatestPage"
|
|
Protected Overrides Sub LoadUserInformation_OptionalFields(ByRef Container As XmlFile, ByVal Loading As Boolean)
|
|
If Loading Then
|
|
LatestPage = Container.Value(Name_LatestPage)
|
|
Else
|
|
Container.Add(Name_LatestPage, LatestPage)
|
|
End If
|
|
End Sub
|
|
Private Property LatestPage As String = String.Empty
|
|
Private Enum Mode : Internal : External : End Enum
|
|
Protected Overrides Sub DownloadDataF(ByVal Token As CancellationToken)
|
|
Dim URL$ = String.Empty
|
|
Try
|
|
Responser.DeclaredError = EDP.ThrowException
|
|
|
|
Dim NextPage$
|
|
Dim r$
|
|
Dim titleChecked As Boolean = False
|
|
Dim _LPage As Func(Of String) = Function() If(LatestPage.IsEmptyString, String.Empty, $"page-{LatestPage}")
|
|
|
|
Do
|
|
URL = $"https://www.lpsg.com/threads/{Name}/{_LPage.Invoke}"
|
|
r = Responser.GetResponse(URL)
|
|
UserExists = True
|
|
UserSuspended = False
|
|
ThrowAny(Token)
|
|
If Not r.IsEmptyString Then
|
|
If UserSiteName.IsEmptyString And Not titleChecked Then
|
|
UserSiteName = RegexReplace(r, ContentTitleRegEx)
|
|
If Not UserSiteName.IsEmptyString Then
|
|
_ForceSaveUserInfo = True
|
|
If FriendlyName.IsEmptyString Then FriendlyName = UserSiteName
|
|
End If
|
|
End If
|
|
titleChecked = True
|
|
NextPage = RegexReplace(r, NextPageRegex)
|
|
UpdateMediaList(RegexReplace(r, PhotoRegEx), Mode.Internal)
|
|
UpdateMediaList(RegexReplace(r, PhotoRegExExt), Mode.External)
|
|
If NextPage = LatestPage Or NextPage.IsEmptyString Then Exit Do Else LatestPage = NextPage
|
|
Else
|
|
Exit Do
|
|
End If
|
|
Loop
|
|
|
|
If _TempMediaList.ListExists And _ContentList.ListExists Then _
|
|
_TempMediaList.RemoveAll(Function(m) _ContentList.Exists(Function(mm) mm.URL = m.URL))
|
|
Catch ex As Exception
|
|
ProcessException(ex, Token, $"data downloading error [{URL}]")
|
|
End Try
|
|
End Sub
|
|
Private Sub UpdateMediaList(ByVal l As List(Of String), ByVal m As Mode)
|
|
If l.ListExists Then
|
|
Dim f As SFile
|
|
Dim u$
|
|
Dim exists As Boolean
|
|
Dim r As Func(Of String, Integer, String)
|
|
Dim indx% = 0
|
|
Dim ude As New ErrorsDescriber(EDP.ReturnValue)
|
|
ProgressPre.ChangeMax(l.Count)
|
|
For Each url$ In l
|
|
ProgressPre.Perform()
|
|
If Not url.IsEmptyString Then u = SymbolsConverter.Decode(url, {Converters.HTML, Converters.ASCII}, ude) Else u = String.Empty
|
|
If Not u.IsEmptyString Then
|
|
exists = Not IsEmptyString(RegexReplace(u, FileExistsRegEx))
|
|
If m = Mode.Internal Then
|
|
r = AddressOf FileRegExF
|
|
Else
|
|
r = AddressOf FileRegExExtF
|
|
If Not exists Then
|
|
indx = 1
|
|
exists = Not IsEmptyString(FileRegExExtF(u, 1))
|
|
End If
|
|
End If
|
|
If exists Then
|
|
f = r.Invoke(u, indx)
|
|
f.Path = MyFile.CutPath.PathNoSeparator
|
|
f.Separator = "\"
|
|
If f.Extension.IsEmptyString Then f.Extension = "jpg"
|
|
_TempMediaList.ListAddValue(New UserMedia With {.Type = UTypes.Picture, .URL = url, .File = f}, TempListAddParams)
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
Protected Overrides Sub DownloadContent(ByVal Token As CancellationToken)
|
|
With Responser : .Mode = Responser.Modes.WebClient : .ResetStatus() : End With
|
|
UseResponserClient = True
|
|
DownloadContentDefault(Token)
|
|
End Sub
|
|
Protected Overrides Function DownloadingException(ByVal ex As Exception, ByVal Message As String, Optional ByVal FromPE As Boolean = False,
|
|
Optional ByVal EObj As Object = Nothing) As Integer
|
|
If Responser.StatusCode = Net.HttpStatusCode.ServiceUnavailable Or
|
|
Responser.StatusCode = Net.HttpStatusCode.Forbidden Then '503, 403
|
|
MyMainLOG = $"{ToStringForLog()}: LPSG not available"
|
|
Return 1
|
|
ElseIf Responser.StatusCode = Net.HttpStatusCode.NotFound Then '404
|
|
UserExists = False
|
|
Return 1
|
|
Else
|
|
Return 0
|
|
End If
|
|
End Function
|
|
End Class
|
|
End Namespace |