Skip to content

Commit b428327

Browse files
committed
2024.11.21.0
API.Instagram: code refactoring (settings); add setting to skip errors; add 'ForceUpdateUserName' and 'ForceUpdateUserInfo' properties; add 'IgnoreStoriesDownloadingErrors' to the settings; improve username update algorithm API.OnlyFans: add 'UpdateRules401' property; update the code to handle error 401 API.YouTube: 404 error handling (community) UserDataBase: raise event to update user in exceptions; add extra buttons for special download (limited and dated) UserDataBind: extra buttons (UserDataBase) UserCreatorForm: fix network paths GlobalSettingsForm, MainFrame, SettingsCLS: add ability to change the feed opening shortcut MainFrame: update button captions, update 'DownloadSelectedUser' function
1 parent aedcebc commit b428327

18 files changed

Lines changed: 678 additions & 489 deletions

Changelog.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,37 @@
1+
# 2024.11.21.0
2+
3+
*2024-11-21*
4+
5+
- Added
6+
- Sites:
7+
- Instagram:
8+
- setting to skip errors without disabling download *(site settings)*
9+
- settings to force update of username and/or user information *(user settings)*
10+
- setting to continue downloading profile if error 560 occurs while downloading user stories *(site settings)*
11+
- improve username update algorithm
12+
- YouTube: 404 error handling (community)
13+
- Main window: add extra buttons for special download (limited and dated) in collection
14+
- Global settings: ability to change the feed opening shortcut (`Ctrl+F`/`Alt+F` *(Settings - Behavior)*)
15+
- Minor improvements
16+
- Updated
17+
- yt-dlp up to version **2024.11.18**
18+
- gallery-dl up to version **1.27.7**
19+
- Fixed
20+
- Users: network paths aren't working
21+
- Main window: in some cases users are not updated in the list
22+
- Minor bugs
23+
124
# 2024.10.24.0
225

326
*2024-10-24*
427

528
- Added
6-
- YouTube (standalone app)
29+
- YouTube (standalone app):
730
- settings `Embed thumbnail (cover)` and `Allow webm formats`
831
- changed cover selection for music downloads
9-
- allow `webm` formats is there are no `mp4` formats via http protocol (issue #211)
32+
- allow `webm` formats if there are no `mp4` formats via http protocol (issue #211)
1033
- Sites:
11-
- Instagram
34+
- Instagram:
1235
- **ability to manually change username**
1336
- **mark user as non-existent if user `ID` cannot be obtained**
1437
- Twitter: **ability to manually change username**

FAQ.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ I strongly recommend you to **regularly** create backup copies of the settings f
3333
## General questions
3434
- **PROFILES**
3535
- I added a profile but **nothing downloaded** :arrow_forward: check your cookies and [site requirements](https://github.com/AAndyProgram/SCrawler/wiki/Settings#sites-requirements). If there are any optional fields that you don't fill in, do so. Still nothing works - [report it](#how-to-report-a-problem)!
36-
- User downloading failed :arrow_forward: check your credentials and **[SITES REQUIREMENTS](https://github.com/AAndyProgram/SCrawler/wiki/Settings#sites-requirements)**. If all settings are set and nothing works, [report it](#how-to-report-a-problem). <u>Don't forget to attach the LOG.</u>
36+
- User downloading failed :arrow_forward: check your credentials and **[SITES REQUIREMENTS](https://github.com/AAndyProgram/SCrawler/wiki/Settings#sites-requirements)**. If all settings are set and nothing works, [report it](#how-to-report-a-problem). **Don't forget to attach the LOG.**
3737
- [How to redownload user](https://github.com/AAndyProgram/SCrawler/wiki#redownload-user)
3838
- How to **add profile** to download :arrow_forward: copy the **[profile URL](https://github.com/AAndyProgram/SCrawler/wiki#add-user)** and press `Insert` or `Ctrl+Insert`. **ALWAYS PASTE THE USER PROFILE URL**. After that select this user and press `F5` or click the `Download selected` button.
3939
- How to download **[saved posts](https://github.com/AAndyProgram/SCrawler/wiki#saved-posts)**
4040
- **[HOW TO ADD COOKIES](https://github.com/AAndyProgram/SCrawler/wiki/Settings#how-to-set-up-cookies)**
4141
- [How to report a problem](#how-to-report-a-problem)
4242
- I want you to **add the site** to SCrawler :arrow_forward: **I'm not currently accepting requests to add new sites**, but you can [create a plugin](https://github.com/AAndyProgram/SCrawler/wiki/Plugins) (for your site) for SCrawler.
43-
- What language is SCrawler written in :arrow_forward: vb.net
44-
- I don't know vb.net and I can't write a plugin :arrow_forward: you can write a plugin in `C#`
43+
- What language is SCrawler written in :arrow_forward: `vb.net`
44+
- I don't know `vb.net` and I can't write a plugin :arrow_forward: you can write a plugin in `C#`
4545
- I have a suggestion, will it be added :arrow_forward: maybe if it interested me.
4646
- How to name files using a pattern (e.g. `Site_PostID_Name.jpg`) :arrow_forward: **there is no such functionality and there are no such plans**.
4747
- **DON'T CHANGE THE DEFAULT SITE SETTINGS UNLESS YOU KNOW EXACTLY WHAT YOU'RE DOING!** SCrawler already has all the default settings to work. You only need to add credentials (where [required](https://github.com/AAndyProgram/SCrawler/wiki/Settings#sites-requirements)).
@@ -61,7 +61,7 @@ I strongly recommend you to **regularly** create backup copies of the settings f
6161

6262
*How to use: find the site you need in the list and read the answer.*
6363

64-
- Reddit: don't use credentials at all or configure [OAuth](https://github.com/AAndyProgram/SCrawler/wiki/Settings#how-to-get-reddit-credentials). **Reddit profiles can be downloaded without any credentials at all. Subreddits require OAuth! If nothing downloads, use OAuth!**
64+
- Reddit: don't use credentials at all or configure [OAuth](https://github.com/AAndyProgram/SCrawler/wiki/Settings#how-to-get-reddit-credentials). **Reddit profiles can be downloaded without any credentials at all. Subreddits require OAuth! If nothing downloads, use OAuth!** Don't use OAuth token to download saved posts (use cookies only).
6565
- **META** (**Instagram**, Threads, Facebook): you need **cookies** and fill in **all fields**
6666
- **Instagram saved posts**: I don't consider questions like "I have 10k saved posts and only 1000 were downloaded". Download posts, remove them from saved posts, delete the `Saved posts` **settings folder**, repeat.
6767
- TikTok: works via yt-dlp. If something doesn't download, we need to wait until yt-dlp fixes it. TikTok doesn't require cookies to download.

SCrawler/API/Base/UserDataBase.vb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ Namespace API.Base
8080
Private _CollectionButtonsExists As Boolean = False
8181
Private _CollectionButtonsColorsSet As Boolean = False
8282
Friend WithEvents BTT_CONTEXT_DOWN As ToolStripKeyMenuItem
83+
Friend WithEvents BTT_CONTEXT_DOWN_LIMIT As ToolStripKeyMenuItem
84+
Friend WithEvents BTT_CONTEXT_DOWN_DATE As ToolStripKeyMenuItem
8385
Friend WithEvents BTT_CONTEXT_EDIT As ToolStripMenuItem
8486
Friend WithEvents BTT_CONTEXT_DELETE As ToolStripMenuItem
8587
Friend WithEvents BTT_CONTEXT_ERASE As ToolStripMenuItem
@@ -98,6 +100,8 @@ Namespace API.Base
98100
End If
99101
End With
100102
BTT_CONTEXT_DOWN = New ToolStripKeyMenuItem(tn, i) With {.Name = tnn("DOWN"), .Tag = Me}
103+
BTT_CONTEXT_DOWN_LIMIT = New ToolStripKeyMenuItem(tn, i) With {.Name = tnn("DOWN_LIMIT"), .Tag = Me}
104+
BTT_CONTEXT_DOWN_DATE = New ToolStripKeyMenuItem(tn, i) With {.Name = tnn("DOWN_DATE"), .Tag = Me}
101105
BTT_CONTEXT_EDIT = New ToolStripMenuItem(tn, i) With {.Name = tnn("EDIT"), .Tag = Me}
102106
BTT_CONTEXT_DELETE = New ToolStripMenuItem(tn, i) With {.Name = tnn("DELETE"), .Tag = Me}
103107
BTT_CONTEXT_ERASE = New ToolStripMenuItem(tn, i) With {.Name = tnn("ERASE"), .Tag = Me}
@@ -117,7 +121,8 @@ Namespace API.Base
117121
cb = MyColor.EditBack
118122
cf = MyColor.EditFore
119123
End If
120-
For Each b As ToolStripMenuItem In {BTT_CONTEXT_DOWN, BTT_CONTEXT_EDIT, BTT_CONTEXT_DELETE, BTT_CONTEXT_ERASE,
124+
For Each b As ToolStripMenuItem In {BTT_CONTEXT_DOWN, BTT_CONTEXT_DOWN_LIMIT, BTT_CONTEXT_DOWN_DATE,
125+
BTT_CONTEXT_EDIT, BTT_CONTEXT_DELETE, BTT_CONTEXT_ERASE,
121126
BTT_CONTEXT_OPEN_PATH, BTT_CONTEXT_OPEN_SITE}
122127
If Not b Is Nothing Then b.BackColor = cb : b.ForeColor = cf
123128
Next
@@ -1282,12 +1287,14 @@ BlockNullPicture:
12821287
ErrorsDescriber.Execute(EDP.SendToLog, exit_ex, $"{ToStringForLog()}: downloading interrupted (exit)")
12831288
End If
12841289
End If
1290+
If _EnvirInvokeUserUpdated Then OnUserUpdated()
12851291
Canceled = True
12861292
Catch dex As ObjectDisposedException When Disposed
12871293
Canceled = True
12881294
Catch ex As Exception
12891295
UpdateUserInformation_Ex()
12901296
LogError(ex, "downloading data error")
1297+
If _EnvirInvokeUserUpdated Then OnUserUpdated()
12911298
HasError = True
12921299
Finally
12931300
If Not UserExists Then AddNonExistingUserToLog($"User '{ToStringForLog()}' not found on the site")
@@ -2191,6 +2198,12 @@ BlockNullPicture:
21912198
Private Sub BTT_CONTEXT_DOWN_KeyClick(sender As Object, e As MyKeyEventArgs) Handles BTT_CONTEXT_DOWN.KeyClick
21922199
Downloader.Add(Me, e.IncludeInTheFeed)
21932200
End Sub
2201+
Private Sub BTT_CONTEXT_DOWN_LIMIT_KeyClick(sender As Object, e As MyKeyEventArgs) Handles BTT_CONTEXT_DOWN_LIMIT.KeyClick
2202+
ControlInvokeFast(MainFrameObj.MF, Sub() MainFrameObj.MF.DownloadSelectedUser(MainFrame.DownUserLimits.Number, e.IncludeInTheFeed, Me), EDP.SendToLog)
2203+
End Sub
2204+
Private Sub BTT_CONTEXT_DOWN_DATE_KeyClick(sender As Object, e As MyKeyEventArgs) Handles BTT_CONTEXT_DOWN_DATE.KeyClick
2205+
ControlInvokeFast(MainFrameObj.MF, Sub() MainFrameObj.MF.DownloadSelectedUser(MainFrame.DownUserLimits.Date, e.IncludeInTheFeed, Me), EDP.SendToLog)
2206+
End Sub
21942207
Private Sub BTT_CONTEXT_EDIT_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_EDIT.Click
21952208
Using f As New Editors.UserCreatorForm(Me)
21962209
f.ShowDialog()
@@ -2271,6 +2284,8 @@ BlockNullPicture:
22712284
If Not ProgressPre Is Nothing Then ProgressPre.Reset() : ProgressPre.Dispose()
22722285
If Not Responser Is Nothing Then Responser.Dispose()
22732286
If Not BTT_CONTEXT_DOWN Is Nothing Then BTT_CONTEXT_DOWN.Dispose()
2287+
If Not BTT_CONTEXT_DOWN_LIMIT Is Nothing Then BTT_CONTEXT_DOWN_LIMIT.Dispose()
2288+
If Not BTT_CONTEXT_DOWN_DATE Is Nothing Then BTT_CONTEXT_DOWN_DATE.Dispose()
22742289
If Not BTT_CONTEXT_EDIT Is Nothing Then BTT_CONTEXT_EDIT.Dispose()
22752290
If Not BTT_CONTEXT_DELETE Is Nothing Then BTT_CONTEXT_DELETE.Dispose()
22762291
If Not BTT_CONTEXT_ERASE Is Nothing Then BTT_CONTEXT_ERASE.Dispose()

SCrawler/API/Instagram/EditorExchangeOptions.vb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
Imports SCrawler.Plugin.Attributes
1010
Imports DN = SCrawler.API.Base.DeclaredNames
1111
Namespace API.Instagram
12-
Friend Class EditorExchangeOptions
12+
Friend NotInheritable Class EditorExchangeOptions
1313
#Region "Download"
1414
<PSetting(Caption:="Get timeline", ToolTip:="Download user timeline")>
1515
Friend Property GetTimeline As Boolean
@@ -37,7 +37,11 @@ Namespace API.Instagram
3737
<PSetting(Caption:="Place the extracted image into the video folder")>
3838
Friend Property PutImageVideoFolder As Boolean
3939
<PSetting(Address:=SettingAddress.User, Caption:=DN.UserNameChangeCaption, ToolTip:=DN.UserNameChangeToolTip)>
40-
Friend Overridable Property UserName As String = String.Empty
40+
Friend Property UserName As String = String.Empty
41+
<PSetting(Address:=SettingAddress.User, Caption:="Force update UserName", ToolTip:="Try to force update UserName if it is not found on the site")>
42+
Friend Property ForceUpdateUserName As Boolean = False
43+
<PSetting(Address:=SettingAddress.User, Caption:="Force update user information")>
44+
Friend Property ForceUpdateUserInfo As Boolean = False
4145
Friend Sub New(ByVal u As UserData)
4246
With u
4347
GetTimeline = .GetTimeline
@@ -55,6 +59,8 @@ Namespace API.Instagram
5559
PutImageVideoFolder = .PutImageVideoFolder
5660

5761
UserName = .NameTrue(True)
62+
ForceUpdateUserName = .ForceUpdateUserName
63+
ForceUpdateUserInfo = .ForceUpdateUserInfo
5864
End With
5965
End Sub
6066
Friend Sub New(ByVal s As SiteSettings)

0 commit comments

Comments
 (0)