Skip to content

Commit e09752a

Browse files
committed
2025.8.1.0
YT Update 'ReplaceModificationDate' SCrawler API.Instagram: fix 'LastCursor' issue API.Reddit: add OAuth validation; add default credentials; hide unused controls; add 'SeparatedTasks'; bypass 429 error; fix crossposts downloading API.Redgifs: force delete cookies if user added them API.TikTok: yt-dlp modification (date change) API.Twitter: simplify large profiles download SettingsCLS: change default max value for channel downloads
1 parent 05772a9 commit e09752a

File tree

16 files changed

+239
-70
lines changed

16 files changed

+239
-70
lines changed

Changelog.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,34 @@
1+
# 2025.8.1.0
2+
3+
*2025-08-01*
4+
5+
- Added
6+
- Sites:
7+
- Reddit: **bypass error `429`**
8+
- Twitter: **[large profile option](https://github.com/AAndyProgram/SCrawler/wiki/Settings#twitter-user-settings) in user settings**
9+
- Minor improvements
10+
- Updated
11+
- yt-dlp up to version **2025.27.21**
12+
- gallery-dl up to version **1.30.2**
13+
- Fixed
14+
- Reddit: in some cases crossposts don't download
15+
- Minor bugs
16+
117
# 2025.7.18.0
218

319
*2025-07-18*
420

521
- Added
622
- Sites:
7-
- OnlyFans:
8-
- **bypass unpurchased videos**
9-
- support for GIF files
23+
- OnlyFans: support for GIF files
1024
- Reddit: extended `429` error handling
1125
- Xhamster: support for downloading 'moments'
1226
- Minor improvements
1327
- Updated
1428
- yt-dlp up to version **2025.06.30**
1529
- gallery-dl up to version **1.30.0**
1630
- Fixed
31+
- OnlyFans: **hanging on purchased content**
1732
- Minor bugs
1833

1934
# 2025.6.12.0

SCrawler.YouTube/My Project/AssemblyInfo.vb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
3232
' by using the '*' as shown below:
3333
' <Assembly: AssemblyVersion("1.0.*")>
3434

35-
<Assembly: AssemblyVersion("2025.6.12.0")>
36-
<Assembly: AssemblyFileVersion("2025.6.12.0")>
35+
<Assembly: AssemblyVersion("2025.8.1.0")>
36+
<Assembly: AssemblyFileVersion("2025.8.1.0")>
3737
<Assembly: NeutralResourcesLanguage("en")>

SCrawler.YouTube/Objects/YouTubeMediaContainerBase.vb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,9 @@ Namespace API.YouTube.Objects
823823
'cmd = $"yt-dlp -f ""{cmd}"""
824824
'cmd = $"yt-dlp -f {cmd}"
825825
cmd = $"{YTDLP_NAME} -f {cmd}"
826-
If Not MyYouTubeSettings.ReplaceModificationDate Then cmd &= " --no-mtime"
826+
'yt-dlp 2025.07.21
827+
'If Not MyYouTubeSettings.ReplaceModificationDate Then cmd &= " --no-mtime"
828+
cmd &= $" --{IIf(MyYouTubeSettings.ReplaceModificationDate.Value, String.Empty, "no-")}mtime"
827829
cmd.StringAppend(formats, " ")
828830
cmd.StringAppend(subs, " ")
829831
cmd.StringAppend(YouTubeFunctions.GetCookiesCommand(WithCookies, YouTubeCookieNetscapeFile), " ")

SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
3232
' by using the '*' as shown below:
3333
' <Assembly: AssemblyVersion("1.0.*")>
3434

35-
<Assembly: AssemblyVersion("2025.6.12.0")>
36-
<Assembly: AssemblyFileVersion("2025.6.12.0")>
35+
<Assembly: AssemblyVersion("2025.8.1.0")>
36+
<Assembly: AssemblyFileVersion("2025.8.1.0")>
3737
<Assembly: NeutralResourcesLanguage("en")>

SCrawler/API/Instagram/UserData.vb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,7 @@ Namespace API.Instagram
412412
ThrowAny(Token)
413413
HasError = False
414414
Dim dt As Func(Of Boolean) = Function() (CBool(MySiteSettings.DownloadTimeline.Value) And GetTimeline) Or IsSavedPosts
415+
If FirstLoadingDone Then LastCursor = String.Empty
415416
If dt.Invoke And Not LastCursor.IsEmptyString Then
416417
s = IIf(IsSavedPosts, Sections.SavedPosts, Sections.Timeline)
417418
upClaimRequest.Invoke

SCrawler/API/Reddit/SiteSettings.vb

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,32 @@ Imports PersonalUtilities.Tools.Web.Clients.Base
1515
Imports PersonalUtilities.Tools.Web.Documents.JSON
1616
Imports PersonalUtilities.Functions.XML
1717
Imports PersonalUtilities.Functions.RegularExpressions
18+
Imports DN = SCrawler.API.Base.DeclaredNames
1819
Imports DownDetector = SCrawler.API.Base.DownDetector
1920
Imports Download = SCrawler.Plugin.ISiteSettings.Download
2021
Namespace API.Reddit
21-
<Manifest(RedditSiteKey), SavedPosts, SpecialForm(False), UseDownDetector>
22+
<Manifest(RedditSiteKey), SavedPosts, SeparatedTasks, SpecialForm(False), UseDownDetector>
2223
Friend Class SiteSettings : Inherits SiteSettingsBase : Implements DownDetector.IDownDetector
2324
#Region "Declarations"
2425
#Region "Authorization"
26+
Private Const ApiClientID_Default As String = "dYctRA-SIJxyykHe27lGZg"
27+
Private Const ApiClientSecret_Default As String = "_5D6KzplRPDga-es1YlpzDIe9hiFlg"
2528
<PropertyOption(ControlText:="Login", ControlToolTip:="Your authorization username", IsAuth:=True), PXML, PClonable(Clone:=False)>
2629
Friend ReadOnly Property AuthUserName As PropertyValue
2730
<PropertyOption(ControlText:="Password", ControlToolTip:="Your authorization password", IsAuth:=True), PXML, PClonable(Clone:=False)>
2831
Friend ReadOnly Property AuthPassword As PropertyValue
2932
<PropertyOption(ControlText:="Client ID", ControlToolTip:="Your registered app client ID", IsAuth:=True), PXML, PClonable(Clone:=False)>
3033
Friend ReadOnly Property ApiClientID As PropertyValue
34+
<PropertyUpdater(NameOf(ApiClientID))> Private Function ApiClientID_SetDefault() As Boolean
35+
ApiClientID.Value = ApiClientID_Default
36+
Return True
37+
End Function
3138
<PropertyOption(ControlText:="Client Secret", ControlToolTip:="Your registered app client secret", IsAuth:=True), PXML, PClonable(Clone:=False)>
3239
Friend ReadOnly Property ApiClientSecret As PropertyValue
40+
<PropertyUpdater(NameOf(ApiClientSecret))> Private Function ApiClientSecret_SetDefault() As Boolean
41+
ApiClientSecret.Value = ApiClientSecret_Default
42+
Return True
43+
End Function
3344
<PropertyOption(ControlText:="Bearer token",
3445
ControlToolTip:="Bearer token (can be null)." & vbCr &
3546
"If you are using cookies to download the timeline, it is highly recommended that you add a token." & vbCr &
@@ -103,12 +114,15 @@ Namespace API.Reddit
103114
End Function
104115
#End Region
105116
#Region "Other"
106-
<PropertyOption(ControlText:="Use M3U8", ControlToolTip:="Use M3U8 or mp4 for Reddit videos", IsAuth:=False), PXML, PClonable>
117+
<PropertyOption(ControlText:="Use M3U8", ControlToolTip:="Use M3U8 or mp4 for Reddit videos"), PXML, PClonable, HiddenControl>
107118
Friend ReadOnly Property UseM3U8 As PropertyValue
108-
<PropertyOption(ControlText:="Check image", ControlToolTip:="Check the image if it exists before downloading (it makes downloading very slow)", IsAuth:=False), PXML, PClonable>
119+
<PropertyOption(ControlText:="Check image", ControlToolTip:="Check the image if it exists before downloading (it makes downloading very slow)"), PXML, PClonable, HiddenControl>
109120
Friend ReadOnly Property CheckImage As PropertyValue
110-
<PropertyOption(ControlText:="Check image: get original", ControlToolTip:="Get the original image if it exists", IsAuth:=False), PXML, PClonable>
121+
<PropertyOption(ControlText:="Check image: get original", ControlToolTip:="Get the original image if it exists"), PXML, PClonable, HiddenControl>
111122
Friend ReadOnly Property CheckImageReturnOrig As PropertyValue
123+
<PropertyOption(ControlText:=DN.ConcurrentDownloadsCaption,
124+
ControlToolTip:=DN.ConcurrentDownloadsToolTip, AllowNull:=False), PXML, TaskCounter, PClonable>
125+
Friend ReadOnly Property ConcurrentDownloads As PropertyValue
112126
#End Region
113127
#Region "IDownDetector Support"
114128
Private ReadOnly Property IDownDetector_Value As Integer Implements DownDetector.IDownDetector.Value
@@ -160,17 +174,21 @@ Namespace API.Reddit
160174
UseM3U8 = New PropertyValue(True)
161175
CheckImage = New PropertyValue(False)
162176
CheckImageReturnOrig = New PropertyValue(True)
177+
ConcurrentDownloads = New PropertyValue(1)
163178

164179
MDD = New MyDownDetector(Me)
165180

166181
UrlPatternUser = "https://www.reddit.com/{0}/{1}/"
167182
ImageVideoContains = "reddit.com"
168183
UserRegex = RParams.DM("[htps:/]{7,8}.*?reddit.com/([user]{1,4})/([^/\?&]+)", 0, RegexReturn.ListByMatch, EDP.ReturnValue)
169184
End Sub
170-
Private Const SettingsVersionCurrent As Integer = 2
185+
Private Const SettingsVersionCurrent As Integer = 3
171186
Friend Overrides Sub EndInit()
172187
If CInt(SettingsVersion.Value) < SettingsVersionCurrent Then
173188
SettingsVersion.Value = SettingsVersionCurrent
189+
UseM3U8.Value = True
190+
CheckImage.Value = False
191+
CheckImageReturnOrig.Value = True
174192
BearerTokenUseCurl.Value = False
175193
End If
176194
MyBase.EndInit()
@@ -208,6 +226,7 @@ Namespace API.Reddit
208226
End Sub
209227
End Class
210228
Friend Property SessionInterrupted As Boolean = False
229+
Friend Property RequestCount As Integer = 0
211230
Friend Overrides Function ReadyToDownload(ByVal What As Download) As Boolean
212231
If What = Download.Main Then
213232
Return Not SessionInterrupted
@@ -223,6 +242,7 @@ Namespace API.Reddit
223242
End Function
224243
Friend Overrides Sub DownloadDone(ByVal What As Download)
225244
SessionInterrupted = False
245+
RequestCount = 0
226246
MDD.Reset()
227247
MyBase.DownloadDone(What)
228248
End Sub

0 commit comments

Comments
 (0)