diff --git a/Changelog.md b/Changelog.md index 17f8973..3543ed6 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,12 @@ +# 2023.2.5.0 + +*2023-02-05* + +- Added + - The ability to configure UserAgent +- Fixed + - (Issue #101) Failed download Gfycat video in some cases + # 2023.1.27.0 *2023-01-27* diff --git a/ProgramScreenshots/SettingsGlobalBasis.png b/ProgramScreenshots/SettingsGlobalBasis.png index 348c031..d8b6f12 100644 Binary files a/ProgramScreenshots/SettingsGlobalBasis.png and b/ProgramScreenshots/SettingsGlobalBasis.png differ diff --git a/SCrawler.PluginProvider/My Project/AssemblyInfo.vb b/SCrawler.PluginProvider/My Project/AssemblyInfo.vb index 5ad7254..765443a 100644 --- a/SCrawler.PluginProvider/My Project/AssemblyInfo.vb +++ b/SCrawler.PluginProvider/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + diff --git a/SCrawler.PluginProvider/Interfaces/IPropertyProvider.vb b/SCrawler.PluginProvider/ObjectInterfaces/IPropertyProvider.vb similarity index 100% rename from SCrawler.PluginProvider/Interfaces/IPropertyProvider.vb rename to SCrawler.PluginProvider/ObjectInterfaces/IPropertyProvider.vb diff --git a/SCrawler.PluginProvider/SCrawler.PluginProvider.vbproj b/SCrawler.PluginProvider/SCrawler.PluginProvider.vbproj index c5a6ecd..6b5a7f6 100644 --- a/SCrawler.PluginProvider/SCrawler.PluginProvider.vbproj +++ b/SCrawler.PluginProvider/SCrawler.PluginProvider.vbproj @@ -102,7 +102,7 @@ - + diff --git a/SCrawler/API/Base/SiteSettingsBase.vb b/SCrawler/API/Base/SiteSettingsBase.vb index c03b703..6504616 100644 --- a/SCrawler/API/Base/SiteSettingsBase.vb +++ b/SCrawler/API/Base/SiteSettingsBase.vb @@ -37,7 +37,6 @@ Namespace API.Base .LoadSettings() Else .CookiesDomain = CookiesDomain - .Cookies = New CookieKeeper(.CookiesDomain) With {.EncryptKey = SettingsCLS.CookieEncryptKey} .CookiesEncryptKey = SettingsCLS.CookieEncryptKey .SaveSettings() End If @@ -53,6 +52,7 @@ Namespace API.Base End Sub Friend Overridable Sub EndInit() Implements ISiteSettings.EndInit EncryptCookies.ValidateCookiesEncrypt(Responser) + If Not DefaultUserAgent.IsEmptyString And Not Responser Is Nothing Then Responser.UserAgent = DefaultUserAgent End Sub Friend Overridable Sub BeginUpdate() Implements ISiteSettings.BeginUpdate End Sub diff --git a/SCrawler/API/Gfycat/Envir.vb b/SCrawler/API/Gfycat/Envir.vb index 11bcbd9..482a883 100644 --- a/SCrawler/API/Gfycat/Envir.vb +++ b/SCrawler/API/Gfycat/Envir.vb @@ -17,7 +17,18 @@ Namespace API.Gfycat Try Dim r$ Using w As New WebClient : r = w.DownloadString(URL) : End Using - If Not r.IsEmptyString Then Return RegexReplace(r, RParams.DMS("contentUrl.:.(http.?://[^""]+?\.mp4)", 1)) Else Return String.Empty + If Not r.IsEmptyString Then + Dim _url$ = RegexReplace(r, RParams.DMS("contentUrl.:.(http.?://[^""]+?\.mp4)", 1, EDP.ReturnValue)) + If Not _url.IsEmptyString Then + If _url.Contains("redgifs.com") Then + _url = RegexReplace(_url, RParams.DMS("([^/-]+)[-\w]*\.mp4", 1, EDP.ReturnValue)) + If Not _url.IsEmptyString Then Return $"https://www.redgifs.com/watch/{_url}" + Else + Return _url + End If + End If + End If + Return String.Empty Catch ex As Exception Dim e As EDP = EDP.ReturnValue If TypeOf ex Is WebException Then diff --git a/SCrawler/API/LPSG/SiteSettings.vb b/SCrawler/API/LPSG/SiteSettings.vb index f8ebf31..47d5449 100644 --- a/SCrawler/API/LPSG/SiteSettings.vb +++ b/SCrawler/API/LPSG/SiteSettings.vb @@ -31,7 +31,7 @@ Namespace API.LPSG Return New UserData End Function Friend Overrides Function Available(ByVal What As ISiteSettings.Download, ByVal Silent As Boolean) As Boolean - Return If(Responser.Cookies?.Count, 0) > 0 + Return Responser.CookiesExists End Function End Class End Namespace \ No newline at end of file diff --git a/SCrawler/API/Reddit/UserData.vb b/SCrawler/API/Reddit/UserData.vb index 1043d5b..f83ed61 100644 --- a/SCrawler/API/Reddit/UserData.vb +++ b/SCrawler/API/Reddit/UserData.vb @@ -533,31 +533,36 @@ Namespace API.Reddit Dim e As New ErrorsDescriber(EDP.ReturnValue) Dim m As UserMedia, m2 As UserMedia Dim RedGifsHost As SettingsHost = Settings(RedGifs.RedGifsSiteKey) + Dim _repeatForRedgifs As Boolean RedGifsResponser = RedGifsHost.Responser.Copy For i% = _TempMediaList.Count - 1 To 0 Step -1 ThrowAny(Token) If _TempMediaList(i).Type = UTypes.VideoPre Or _TempMediaList(i).Type = v2 Then m = _TempMediaList(i) If _TempMediaList(i).Type = UTypes.VideoPre Then - If m.URL.Contains($"{SiteGfycatKey}.com") Then - r = Gfycat.Envir.GetVideo(m.URL) - ElseIf m.URL.Contains(SiteRedGifsKey) Then - m2 = RedGifs.UserData.GetDataFromUrlId(m.URL, False, RedGifsResponser, RedGifsHost) - If m2.State = UStates.Missing Then - m.State = UStates.Missing - _ContentList.Add(m) - _TempMediaList.RemoveAt(i) - ElseIf m2.State = RedGifs.UserData.DataGone Then - _TempMediaList.RemoveAt(i) + Do + _repeatForRedgifs = False + If m.URL.Contains($"{SiteGfycatKey}.com") Then + r = Gfycat.Envir.GetVideo(m.URL) + If Not r.IsEmptyString AndAlso r.Contains("redgifs.com") Then m.URL = r : _repeatForRedgifs = True + ElseIf m.URL.Contains(SiteRedGifsKey) Then + m2 = RedGifs.UserData.GetDataFromUrlId(m.URL, False, RedGifsResponser, RedGifsHost) + If m2.State = UStates.Missing Then + m.State = UStates.Missing + _ContentList.Add(m) + _TempMediaList.RemoveAt(i) + ElseIf m2.State = RedGifs.UserData.DataGone Then + _TempMediaList.RemoveAt(i) + Else + m2.URL_BASE = m.URL + m2.Post = m.Post + _TempMediaList(i) = m2 + End If + Continue For Else - m2.URL_BASE = m.URL - m2.Post = m.Post - _TempMediaList(i) = m2 + r = Responser.GetResponse(m.URL,, e) End If - Continue For - Else - r = Responser.GetResponse(m.URL,, e) - End If + Loop While _repeatForRedgifs Else r = m.URL End If diff --git a/SCrawler/API/TikTok/SiteSettings.vb b/SCrawler/API/TikTok/SiteSettings.vb index dfc958e..fd3574e 100644 --- a/SCrawler/API/TikTok/SiteSettings.vb +++ b/SCrawler/API/TikTok/SiteSettings.vb @@ -36,7 +36,7 @@ Namespace API.TikTok Return UserData.GetVideoInfo(URL, Responser) End Function Friend Overrides Function BaseAuthExists() As Boolean - Return If(Responser.Cookies?.Count, 0) > 0 + Return Responser.CookiesExists End Function End Class End Namespace \ No newline at end of file diff --git a/SCrawler/API/Twitter/OptionsForm.vb b/SCrawler/API/Twitter/OptionsForm.vb index e7f74be..970e6d5 100644 --- a/SCrawler/API/Twitter/OptionsForm.vb +++ b/SCrawler/API/Twitter/OptionsForm.vb @@ -6,7 +6,6 @@ ' ' This program is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY -Imports System.Reflection Imports SCrawler.Plugin.Attributes Imports PersonalUtilities.Forms Imports PersonalUtilities.Forms.Controls diff --git a/SCrawler/API/Twitter/SiteSettings.vb b/SCrawler/API/Twitter/SiteSettings.vb index e34ca4b..004574a 100644 --- a/SCrawler/API/Twitter/SiteSettings.vb +++ b/SCrawler/API/Twitter/SiteSettings.vb @@ -81,15 +81,17 @@ Namespace API.Twitter With Responser If .File.Exists Then + Dim b As Boolean = .CookiesDomain.IsEmptyString If EncryptCookies.CookiesEncrypted Then .CookiesEncryptKey = SettingsCLS.CookieEncryptKey .LoadSettings() a = .Headers.Value(Header_Authorization) t = .Headers.Value(Header_Token) + .CookiesDomain = "twitter.com" + If b Then .SaveSettings() Else .ContentType = "application/json" .Accept = "*/*" .CookiesDomain = "twitter.com" - .Cookies = New CookieKeeper(.CookiesDomain) With {.EncryptKey = SettingsCLS.CookieEncryptKey} .CookiesEncryptKey = SettingsCLS.CookieEncryptKey .Decoders.Add(SymbolsConverter.Converters.Unicode) .Headers.Add("sec-ch-ua", " Not;A Brand"";v=""99"", ""Google Chrome"";v=""91"", ""Chromium"";v=""91""") @@ -146,7 +148,7 @@ Namespace API.Twitter Return $"https://twitter.com/{User.Name}/status/{Media.Post.ID}" End Function Friend Overrides Function BaseAuthExists() As Boolean - Return If(Responser.Cookies?.Count, 0) > 0 And ACheck(Token.Value) And ACheck(Auth.Value) + Return Responser.CookiesExists And ACheck(Token.Value) And ACheck(Auth.Value) End Function Friend Overrides Sub UserOptions(ByRef Options As Object, ByVal OpenForm As Boolean) If Options Is Nothing OrElse Not TypeOf Options Is EditorExchangeOptions Then Options = New EditorExchangeOptions(Me) diff --git a/SCrawler/API/XVIDEOS/SiteSettings.vb b/SCrawler/API/XVIDEOS/SiteSettings.vb index 13c9c7c..63c6b37 100644 --- a/SCrawler/API/XVIDEOS/SiteSettings.vb +++ b/SCrawler/API/XVIDEOS/SiteSettings.vb @@ -63,6 +63,7 @@ Namespace API.XVIDEOS Initialized = True DomainContainer.EndInit(Me) DomainsTemp.ListAddList(Domains) + MyBase.EndInit() End Sub #End Region #Region "Edit" @@ -94,7 +95,7 @@ Namespace API.XVIDEOS Friend Overrides Function Available(ByVal What As ISiteSettings.Download, ByVal Silent As Boolean) As Boolean If Settings.UseM3U8 Then If What = ISiteSettings.Download.SavedPosts Then - Return ACheck(SavedVideosPlaylist.Value) And If(Responser.Cookies?.Count, 0) > 0 + Return ACheck(SavedVideosPlaylist.Value) And Responser.CookiesExists Else Return True End If diff --git a/SCrawler/Editors/GlobalSettingsForm.Designer.vb b/SCrawler/Editors/GlobalSettingsForm.Designer.vb index 773b016..84cf9e9 100644 --- a/SCrawler/Editors/GlobalSettingsForm.Designer.vb +++ b/SCrawler/Editors/GlobalSettingsForm.Designer.vb @@ -24,14 +24,16 @@ Namespace Editors Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim TP_BASIS As System.Windows.Forms.TableLayoutPanel - Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton13 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(GlobalSettingsForm)) - Dim ActionButton2 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton14 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim TP_IMAGES As System.Windows.Forms.TableLayoutPanel - Dim ActionButton3 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim ActionButton4 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim ActionButton5 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim ActionButton6 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton15 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton16 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton17 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton18 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton19 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton20 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim TP_FILE_NAME As System.Windows.Forms.TableLayoutPanel Dim TP_FILE_PATTERNS As System.Windows.Forms.TableLayoutPanel Dim LBL_DATE_POS As System.Windows.Forms.Label @@ -44,14 +46,14 @@ Namespace Editors Dim TP_CHANNELS As System.Windows.Forms.TableLayoutPanel Dim TAB_BEHAVIOR As System.Windows.Forms.TabPage Dim TP_BEHAVIOR As System.Windows.Forms.TableLayoutPanel - Dim ActionButton7 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim ActionButton8 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton21 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton22 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim TP_OPEN_INFO As System.Windows.Forms.TableLayoutPanel Dim TP_OPEN_PROGRESS As System.Windows.Forms.TableLayoutPanel Dim TAB_DOWN As System.Windows.Forms.TabPage Dim TP_DOWNLOADING As System.Windows.Forms.TableLayoutPanel - Dim ActionButton9 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() - Dim ActionButton10 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton23 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton24 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim TP_MISSING_DATA As System.Windows.Forms.TableLayoutPanel Dim TAB_FEED As System.Windows.Forms.TabPage Dim TP_FEED As System.Windows.Forms.TableLayoutPanel @@ -68,6 +70,7 @@ Namespace Editors Me.TXT_IMGUR_CLIENT_ID = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.CH_SHOW_GROUPS = New System.Windows.Forms.CheckBox() Me.CH_USERS_GROUPING = New System.Windows.Forms.CheckBox() + Me.TXT_USER_AGENT = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.OPT_FILE_NAME_REPLACE = New System.Windows.Forms.RadioButton() Me.OPT_FILE_NAME_ADD_DATE = New System.Windows.Forms.RadioButton() Me.CH_FILE_NAME_CHANGE = New System.Windows.Forms.CheckBox() @@ -149,6 +152,7 @@ Namespace Editors CType(Me.TXT_MAX_JOBS_USERS, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TXT_MAX_JOBS_CHANNELS, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TXT_IMGUR_CLIENT_ID, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TXT_USER_AGENT, System.ComponentModel.ISupportInitialize).BeginInit() TP_FILE_NAME.SuspendLayout() TP_FILE_PATTERNS.SuspendLayout() TP_CHANNELS_IMGS.SuspendLayout() @@ -194,13 +198,14 @@ Namespace Editors TP_BASIS.Controls.Add(Me.TXT_MAX_JOBS_USERS, 0, 3) TP_BASIS.Controls.Add(Me.TXT_MAX_JOBS_CHANNELS, 0, 4) TP_BASIS.Controls.Add(Me.CH_CHECK_VER_START, 0, 5) - TP_BASIS.Controls.Add(Me.TXT_IMGUR_CLIENT_ID, 0, 6) - TP_BASIS.Controls.Add(Me.CH_SHOW_GROUPS, 0, 7) - TP_BASIS.Controls.Add(Me.CH_USERS_GROUPING, 0, 8) + TP_BASIS.Controls.Add(Me.TXT_IMGUR_CLIENT_ID, 0, 7) + TP_BASIS.Controls.Add(Me.CH_SHOW_GROUPS, 0, 8) + TP_BASIS.Controls.Add(Me.CH_USERS_GROUPING, 0, 9) + TP_BASIS.Controls.Add(Me.TXT_USER_AGENT, 0, 6) TP_BASIS.Dock = System.Windows.Forms.DockStyle.Fill TP_BASIS.Location = New System.Drawing.Point(3, 3) TP_BASIS.Name = "TP_BASIS" - TP_BASIS.RowCount = 10 + TP_BASIS.RowCount = 11 TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) @@ -208,20 +213,21 @@ Namespace Editors TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_BASIS.Size = New System.Drawing.Size(570, 278) + TP_BASIS.Size = New System.Drawing.Size(570, 279) TP_BASIS.TabIndex = 0 ' 'TXT_GLOBAL_PATH ' - ActionButton1.BackgroundImage = CType(resources.GetObject("ActionButton1.BackgroundImage"), System.Drawing.Image) - ActionButton1.Name = "Open" - ActionButton2.BackgroundImage = CType(resources.GetObject("ActionButton2.BackgroundImage"), System.Drawing.Image) - ActionButton2.Name = "Clear" - Me.TXT_GLOBAL_PATH.Buttons.Add(ActionButton1) - Me.TXT_GLOBAL_PATH.Buttons.Add(ActionButton2) + ActionButton13.BackgroundImage = CType(resources.GetObject("ActionButton13.BackgroundImage"), System.Drawing.Image) + ActionButton13.Name = "Open" + ActionButton14.BackgroundImage = CType(resources.GetObject("ActionButton14.BackgroundImage"), System.Drawing.Image) + ActionButton14.Name = "Clear" + Me.TXT_GLOBAL_PATH.Buttons.Add(ActionButton13) + Me.TXT_GLOBAL_PATH.Buttons.Add(ActionButton14) Me.TXT_GLOBAL_PATH.CaptionText = "Data Path" Me.TXT_GLOBAL_PATH.CaptionToolTipEnabled = True Me.TXT_GLOBAL_PATH.CaptionToolTipText = "Root path for storing users' data" @@ -282,9 +288,9 @@ Namespace Editors ' 'TXT_COLLECTIONS_PATH ' - ActionButton3.BackgroundImage = CType(resources.GetObject("ActionButton3.BackgroundImage"), System.Drawing.Image) - ActionButton3.Name = "Clear" - Me.TXT_COLLECTIONS_PATH.Buttons.Add(ActionButton3) + ActionButton15.BackgroundImage = CType(resources.GetObject("ActionButton15.BackgroundImage"), System.Drawing.Image) + ActionButton15.Name = "Clear" + Me.TXT_COLLECTIONS_PATH.Buttons.Add(ActionButton15) Me.TXT_COLLECTIONS_PATH.CaptionText = "Collections folder" Me.TXT_COLLECTIONS_PATH.CaptionToolTipEnabled = True Me.TXT_COLLECTIONS_PATH.CaptionToolTipText = "Set collections folder name (name only)" @@ -296,10 +302,10 @@ Namespace Editors ' 'TXT_MAX_JOBS_USERS ' - ActionButton4.BackgroundImage = CType(resources.GetObject("ActionButton4.BackgroundImage"), System.Drawing.Image) - ActionButton4.Name = "Refresh" - ActionButton4.ToolTipText = "Set to default" - Me.TXT_MAX_JOBS_USERS.Buttons.Add(ActionButton4) + ActionButton16.BackgroundImage = CType(resources.GetObject("ActionButton16.BackgroundImage"), System.Drawing.Image) + ActionButton16.Name = "Refresh" + ActionButton16.ToolTipText = "Set to default" + Me.TXT_MAX_JOBS_USERS.Buttons.Add(ActionButton16) Me.TXT_MAX_JOBS_USERS.CaptionSizeType = System.Windows.Forms.SizeType.Percent Me.TXT_MAX_JOBS_USERS.CaptionText = "Maximum downloading tasks of users" Me.TXT_MAX_JOBS_USERS.CaptionWidth = 50.0R @@ -315,10 +321,10 @@ Namespace Editors ' 'TXT_MAX_JOBS_CHANNELS ' - ActionButton5.BackgroundImage = CType(resources.GetObject("ActionButton5.BackgroundImage"), System.Drawing.Image) - ActionButton5.Name = "Refresh" - ActionButton5.ToolTipText = "Set to default" - Me.TXT_MAX_JOBS_CHANNELS.Buttons.Add(ActionButton5) + ActionButton17.BackgroundImage = CType(resources.GetObject("ActionButton17.BackgroundImage"), System.Drawing.Image) + ActionButton17.Name = "Refresh" + ActionButton17.ToolTipText = "Set to default" + Me.TXT_MAX_JOBS_CHANNELS.Buttons.Add(ActionButton17) Me.TXT_MAX_JOBS_CHANNELS.CaptionSizeType = System.Windows.Forms.SizeType.Percent Me.TXT_MAX_JOBS_CHANNELS.CaptionText = "Maximum downloading tasks of channels" Me.TXT_MAX_JOBS_CHANNELS.CaptionWidth = 50.0R @@ -345,24 +351,24 @@ Namespace Editors ' 'TXT_IMGUR_CLIENT_ID ' - ActionButton6.BackgroundImage = CType(resources.GetObject("ActionButton6.BackgroundImage"), System.Drawing.Image) - ActionButton6.Name = "Clear" - Me.TXT_IMGUR_CLIENT_ID.Buttons.Add(ActionButton6) + ActionButton18.BackgroundImage = CType(resources.GetObject("ActionButton18.BackgroundImage"), System.Drawing.Image) + ActionButton18.Name = "Clear" + Me.TXT_IMGUR_CLIENT_ID.Buttons.Add(ActionButton18) Me.TXT_IMGUR_CLIENT_ID.CaptionText = "Imgur Client ID" Me.TXT_IMGUR_CLIENT_ID.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_IMGUR_CLIENT_ID.Location = New System.Drawing.Point(4, 175) + Me.TXT_IMGUR_CLIENT_ID.Location = New System.Drawing.Point(4, 204) Me.TXT_IMGUR_CLIENT_ID.Name = "TXT_IMGUR_CLIENT_ID" Me.TXT_IMGUR_CLIENT_ID.Size = New System.Drawing.Size(562, 22) - Me.TXT_IMGUR_CLIENT_ID.TabIndex = 6 + Me.TXT_IMGUR_CLIENT_ID.TabIndex = 7 ' 'CH_SHOW_GROUPS ' Me.CH_SHOW_GROUPS.AutoSize = True Me.CH_SHOW_GROUPS.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_SHOW_GROUPS.Location = New System.Drawing.Point(4, 204) + Me.CH_SHOW_GROUPS.Location = New System.Drawing.Point(4, 233) Me.CH_SHOW_GROUPS.Name = "CH_SHOW_GROUPS" Me.CH_SHOW_GROUPS.Size = New System.Drawing.Size(562, 19) - Me.CH_SHOW_GROUPS.TabIndex = 7 + Me.CH_SHOW_GROUPS.TabIndex = 8 Me.CH_SHOW_GROUPS.Text = "Show groups" TT_MAIN.SetToolTip(Me.CH_SHOW_GROUPS, "Grouping users by site") Me.CH_SHOW_GROUPS.UseVisualStyleBackColor = True @@ -371,14 +377,33 @@ Namespace Editors ' Me.CH_USERS_GROUPING.AutoSize = True Me.CH_USERS_GROUPING.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_USERS_GROUPING.Location = New System.Drawing.Point(4, 230) + Me.CH_USERS_GROUPING.Location = New System.Drawing.Point(4, 259) Me.CH_USERS_GROUPING.Name = "CH_USERS_GROUPING" Me.CH_USERS_GROUPING.Size = New System.Drawing.Size(562, 19) - Me.CH_USERS_GROUPING.TabIndex = 8 + Me.CH_USERS_GROUPING.TabIndex = 9 Me.CH_USERS_GROUPING.Text = "Use user grouping" TT_MAIN.SetToolTip(Me.CH_USERS_GROUPING, "Group users by groups and/or labels") Me.CH_USERS_GROUPING.UseVisualStyleBackColor = True ' + 'TXT_USER_AGENT + ' + ActionButton19.BackgroundImage = CType(resources.GetObject("ActionButton19.BackgroundImage"), System.Drawing.Image) + ActionButton19.Name = "Refresh" + ActionButton19.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Refresh + ActionButton20.BackgroundImage = CType(resources.GetObject("ActionButton20.BackgroundImage"), System.Drawing.Image) + ActionButton20.Name = "Clear" + ActionButton20.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear + Me.TXT_USER_AGENT.Buttons.Add(ActionButton19) + Me.TXT_USER_AGENT.Buttons.Add(ActionButton20) + Me.TXT_USER_AGENT.CaptionText = "UserAgent" + Me.TXT_USER_AGENT.CaptionToolTipEnabled = True + Me.TXT_USER_AGENT.CaptionToolTipText = "Default user agent to use in requests" + Me.TXT_USER_AGENT.Dock = System.Windows.Forms.DockStyle.Fill + Me.TXT_USER_AGENT.Location = New System.Drawing.Point(4, 175) + Me.TXT_USER_AGENT.Name = "TXT_USER_AGENT" + Me.TXT_USER_AGENT.Size = New System.Drawing.Size(562, 22) + Me.TXT_USER_AGENT.TabIndex = 6 + ' 'TP_FILE_NAME ' TP_FILE_NAME.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] @@ -822,7 +847,7 @@ Namespace Editors TAB_BASIS.Location = New System.Drawing.Point(4, 22) TAB_BASIS.Name = "TAB_BASIS" TAB_BASIS.Padding = New System.Windows.Forms.Padding(3) - TAB_BASIS.Size = New System.Drawing.Size(576, 284) + TAB_BASIS.Size = New System.Drawing.Size(576, 285) TAB_BASIS.TabIndex = 0 TAB_BASIS.Text = "Basis" ' @@ -832,7 +857,7 @@ Namespace Editors TAB_DEFAULTS.Location = New System.Drawing.Point(4, 22) TAB_DEFAULTS.Name = "TAB_DEFAULTS" TAB_DEFAULTS.Padding = New System.Windows.Forms.Padding(3) - TAB_DEFAULTS.Size = New System.Drawing.Size(576, 284) + TAB_DEFAULTS.Size = New System.Drawing.Size(576, 338) TAB_DEFAULTS.TabIndex = 1 TAB_DEFAULTS.Text = "Defaults" ' @@ -856,7 +881,7 @@ Namespace Editors TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_DEFS.Size = New System.Drawing.Size(570, 278) + TP_DEFS.Size = New System.Drawing.Size(570, 332) TP_DEFS.TabIndex = 0 ' 'CH_DOWN_IMAGES_NATIVE @@ -876,7 +901,7 @@ Namespace Editors TAB_DEFS_CHANNELS.Location = New System.Drawing.Point(4, 22) TAB_DEFS_CHANNELS.Name = "TAB_DEFS_CHANNELS" TAB_DEFS_CHANNELS.Padding = New System.Windows.Forms.Padding(3) - TAB_DEFS_CHANNELS.Size = New System.Drawing.Size(576, 284) + TAB_DEFS_CHANNELS.Size = New System.Drawing.Size(576, 338) TAB_DEFS_CHANNELS.TabIndex = 4 TAB_DEFS_CHANNELS.Text = "Channels" ' @@ -900,7 +925,7 @@ Namespace Editors TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_CHANNELS.Size = New System.Drawing.Size(570, 278) + TP_CHANNELS.Size = New System.Drawing.Size(570, 332) TP_CHANNELS.TabIndex = 0 ' 'TXT_CHANNEL_USER_POST_LIMIT @@ -928,7 +953,7 @@ Namespace Editors TAB_BEHAVIOR.Controls.Add(TP_BEHAVIOR) TAB_BEHAVIOR.Location = New System.Drawing.Point(4, 22) TAB_BEHAVIOR.Name = "TAB_BEHAVIOR" - TAB_BEHAVIOR.Size = New System.Drawing.Size(576, 284) + TAB_BEHAVIOR.Size = New System.Drawing.Size(576, 338) TAB_BEHAVIOR.TabIndex = 5 TAB_BEHAVIOR.Text = "Behavior" ' @@ -959,17 +984,17 @@ Namespace Editors TP_BEHAVIOR.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_BEHAVIOR.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) TP_BEHAVIOR.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_BEHAVIOR.Size = New System.Drawing.Size(576, 284) + TP_BEHAVIOR.Size = New System.Drawing.Size(576, 338) TP_BEHAVIOR.TabIndex = 0 ' 'TXT_FOLDER_CMD ' Me.TXT_FOLDER_CMD.AutoShowClearButton = True - ActionButton7.BackgroundImage = CType(resources.GetObject("ActionButton7.BackgroundImage"), System.Drawing.Image) - ActionButton7.Enabled = False - ActionButton7.Name = "Clear" - ActionButton7.Visible = False - Me.TXT_FOLDER_CMD.Buttons.Add(ActionButton7) + ActionButton21.BackgroundImage = CType(resources.GetObject("ActionButton21.BackgroundImage"), System.Drawing.Image) + ActionButton21.Enabled = False + ActionButton21.Name = "Clear" + ActionButton21.Visible = False + Me.TXT_FOLDER_CMD.Buttons.Add(ActionButton21) Me.TXT_FOLDER_CMD.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.CheckBox Me.TXT_FOLDER_CMD.CaptionText = "Folder cmd" Me.TXT_FOLDER_CMD.CaptionToolTipEnabled = True @@ -1008,11 +1033,11 @@ Namespace Editors 'TXT_CLOSE_SCRIPT ' Me.TXT_CLOSE_SCRIPT.AutoShowClearButton = True - ActionButton8.BackgroundImage = CType(resources.GetObject("ActionButton8.BackgroundImage"), System.Drawing.Image) - ActionButton8.Enabled = False - ActionButton8.Name = "Clear" - ActionButton8.Visible = False - Me.TXT_CLOSE_SCRIPT.Buttons.Add(ActionButton8) + ActionButton22.BackgroundImage = CType(resources.GetObject("ActionButton22.BackgroundImage"), System.Drawing.Image) + ActionButton22.Enabled = False + ActionButton22.Name = "Clear" + ActionButton22.Visible = False + Me.TXT_CLOSE_SCRIPT.Buttons.Add(ActionButton22) Me.TXT_CLOSE_SCRIPT.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.CheckBox Me.TXT_CLOSE_SCRIPT.CaptionText = "Close cmd" Me.TXT_CLOSE_SCRIPT.CaptionToolTipEnabled = True @@ -1100,7 +1125,7 @@ Namespace Editors TAB_DOWN.Controls.Add(TP_DOWNLOADING) TAB_DOWN.Location = New System.Drawing.Point(4, 22) TAB_DOWN.Name = "TAB_DOWN" - TAB_DOWN.Size = New System.Drawing.Size(576, 284) + TAB_DOWN.Size = New System.Drawing.Size(576, 338) TAB_DOWN.TabIndex = 6 TAB_DOWN.Text = "Downloading" ' @@ -1128,17 +1153,17 @@ Namespace Editors TP_DOWNLOADING.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_DOWNLOADING.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_DOWNLOADING.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_DOWNLOADING.Size = New System.Drawing.Size(576, 284) + TP_DOWNLOADING.Size = New System.Drawing.Size(576, 338) TP_DOWNLOADING.TabIndex = 0 ' 'TXT_SCRIPT ' - ActionButton9.BackgroundImage = CType(resources.GetObject("ActionButton9.BackgroundImage"), System.Drawing.Image) - ActionButton9.Name = "Open" - ActionButton10.BackgroundImage = CType(resources.GetObject("ActionButton10.BackgroundImage"), System.Drawing.Image) - ActionButton10.Name = "Clear" - Me.TXT_SCRIPT.Buttons.Add(ActionButton9) - Me.TXT_SCRIPT.Buttons.Add(ActionButton10) + ActionButton23.BackgroundImage = CType(resources.GetObject("ActionButton23.BackgroundImage"), System.Drawing.Image) + ActionButton23.Name = "Open" + ActionButton24.BackgroundImage = CType(resources.GetObject("ActionButton24.BackgroundImage"), System.Drawing.Image) + ActionButton24.Name = "Clear" + Me.TXT_SCRIPT.Buttons.Add(ActionButton23) + Me.TXT_SCRIPT.Buttons.Add(ActionButton24) Me.TXT_SCRIPT.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.CheckBox Me.TXT_SCRIPT.CaptionText = "Script" Me.TXT_SCRIPT.CaptionToolTipEnabled = True @@ -1191,7 +1216,7 @@ Namespace Editors TAB_FEED.Controls.Add(TP_FEED) TAB_FEED.Location = New System.Drawing.Point(4, 22) TAB_FEED.Name = "TAB_FEED" - TAB_FEED.Size = New System.Drawing.Size(576, 284) + TAB_FEED.Size = New System.Drawing.Size(576, 338) TAB_FEED.TabIndex = 7 TAB_FEED.Text = "Feed" ' @@ -1215,7 +1240,7 @@ Namespace Editors TP_FEED.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_FEED.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_FEED.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_FEED.Size = New System.Drawing.Size(576, 284) + TP_FEED.Size = New System.Drawing.Size(576, 338) TP_FEED.TabIndex = 0 ' 'TP_FEED_IMG_COUNT @@ -1305,7 +1330,7 @@ Namespace Editors TAB_NOTIFY.Controls.Add(TP_NOTIFY_MAIN) TAB_NOTIFY.Location = New System.Drawing.Point(4, 22) TAB_NOTIFY.Name = "TAB_NOTIFY" - TAB_NOTIFY.Size = New System.Drawing.Size(576, 284) + TAB_NOTIFY.Size = New System.Drawing.Size(576, 338) TAB_NOTIFY.TabIndex = 8 TAB_NOTIFY.Text = "Notifications" ' @@ -1332,7 +1357,7 @@ Namespace Editors TP_NOTIFY_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_NOTIFY_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) TP_NOTIFY_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_NOTIFY_MAIN.Size = New System.Drawing.Size(576, 284) + TP_NOTIFY_MAIN.Size = New System.Drawing.Size(576, 338) TP_NOTIFY_MAIN.TabIndex = 0 ' 'TAB_MAIN @@ -1348,7 +1373,7 @@ Namespace Editors Me.TAB_MAIN.Location = New System.Drawing.Point(0, 0) Me.TAB_MAIN.Name = "TAB_MAIN" Me.TAB_MAIN.SelectedIndex = 0 - Me.TAB_MAIN.Size = New System.Drawing.Size(584, 310) + Me.TAB_MAIN.Size = New System.Drawing.Size(584, 311) Me.TAB_MAIN.TabIndex = 1 ' 'CONTAINER_MAIN @@ -1357,13 +1382,13 @@ Namespace Editors 'CONTAINER_MAIN.ContentPanel ' Me.CONTAINER_MAIN.ContentPanel.Controls.Add(Me.TAB_MAIN) - Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(584, 310) + Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(584, 311) Me.CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill Me.CONTAINER_MAIN.LeftToolStripPanelVisible = False Me.CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0) Me.CONTAINER_MAIN.Name = "CONTAINER_MAIN" Me.CONTAINER_MAIN.RightToolStripPanelVisible = False - Me.CONTAINER_MAIN.Size = New System.Drawing.Size(584, 310) + Me.CONTAINER_MAIN.Size = New System.Drawing.Size(584, 336) Me.CONTAINER_MAIN.TabIndex = 0 Me.CONTAINER_MAIN.TopToolStripPanelVisible = False ' @@ -1371,15 +1396,15 @@ Namespace Editors ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(584, 310) + Me.ClientSize = New System.Drawing.Size(584, 336) Me.Controls.Add(Me.CONTAINER_MAIN) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.Icon = Global.SCrawler.My.Resources.Resources.SettingsIcon_48 Me.KeyPreview = True Me.MaximizeBox = False - Me.MaximumSize = New System.Drawing.Size(600, 349) + Me.MaximumSize = New System.Drawing.Size(600, 375) Me.MinimizeBox = False - Me.MinimumSize = New System.Drawing.Size(600, 349) + Me.MinimumSize = New System.Drawing.Size(600, 375) Me.Name = "GlobalSettingsForm" Me.ShowInTaskbar = False Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide @@ -1394,6 +1419,7 @@ Namespace Editors CType(Me.TXT_MAX_JOBS_USERS, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TXT_MAX_JOBS_CHANNELS, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TXT_IMGUR_CLIENT_ID, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TXT_USER_AGENT, System.ComponentModel.ISupportInitialize).EndInit() TP_FILE_NAME.ResumeLayout(False) TP_FILE_NAME.PerformLayout() TP_FILE_PATTERNS.ResumeLayout(False) @@ -1499,5 +1525,6 @@ Namespace Editors Private WithEvents CH_NOTIFY_AUTO_DOWN As CheckBox Private WithEvents CH_NOTIFY_CHANNELS As CheckBox Private WithEvents CH_DOWN_REPARSE_MISSING As CheckBox + Private WithEvents TXT_USER_AGENT As PersonalUtilities.Forms.Controls.TextBoxExtended End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/GlobalSettingsForm.resx b/SCrawler/Editors/GlobalSettingsForm.resx index a5c2e62..99f7914 100644 --- a/SCrawler/Editors/GlobalSettingsForm.resx +++ b/SCrawler/Editors/GlobalSettingsForm.resx @@ -121,7 +121,7 @@ False - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP @@ -132,7 +132,7 @@ cMaRN0UdBBkAAAAASUVORK5CYII= - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go @@ -143,7 +143,7 @@ False - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go @@ -151,7 +151,7 @@ AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6 JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElE @@ -167,7 +167,7 @@ VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6 JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElE @@ -183,7 +183,7 @@ VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go @@ -197,6 +197,30 @@ 17, 17 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6 + JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElE + QVQ4T2P4//8/QczOJyyqHpzfiE0OQwAZC8iqszAzs7CJ69o4BR768V/W2jcGXQ0KB4aFNS3dDQtnrbCb + ePCK48wTN1wXXXzge/jXf/clV55zC4hIIatF0cjIyMikElzc57z0wX+XHd/+2+//99/ywP//xlu//tdb + +eK/4Zp3/1WTOhYzARViNUAluKjTdf37/0ZTTn9TbdhwXblhwwW1/qOP1Ja9+K8w+95/6cm3/6v2Xvkv + qKjniGGAoIqRpW3/4e8S9uGdzFz82gwMDFxAzCxm4ZegtuLDf+VJ1/8rZM25IqLvnM/CximCYYCic1QN + v7x2JIwPwyrJ3XNUylddE9G2TWNmZOBDl4czmJiZMSRBmFdSyYyJgUEQmxwIYxWEYXZBCUls4sgYq6CA + prWNbtG8nXKeaVPR5XiVjSxEzf0yYXy4BBMLO6eQjoOXZvrkbbazrv53Xf/2v4CSbjBMXkhBl1/CMyNZ + qWnvGy5pNQ+YONwAfjXzAOupl/47LLr333L50/96q9/8l23YdES6cO5KuYqVW+R7Tj6SnfP0v4hryjyY + HhQDmFjYeHVKFp7WX/Xuv9Kq9/+Vd/z7r7rv/3+l7f//y676DEwDN/9L+BVvYkKLCTgDhNkkVUyVlr74 + qbbz73/VOTc/qsy89kWx+9h7qbQpJwS1bbOAscGGrB6EUTggLOqf16C55ft/HlnNAFZOXgVWdi4FRgYG + VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go + tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX + AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC + + False @@ -206,6 +230,15 @@ False + + False + + + False + + + 17, 17 + This is a global setting for newly added users only. This parameter specifies how the video will be stored in the users' download path. @@ -233,19 +266,34 @@ You can find more detailed information about the missing posts in the form that False + + False + False False + + False + False False - + + False + + + False + + + False + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go @@ -253,7 +301,7 @@ You can find more detailed information about the missing posts in the form that AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go @@ -273,7 +321,13 @@ You can find more detailed information about the missing posts in the form that False - + + False + + + False + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP @@ -284,7 +338,7 @@ You can find more detailed information about the missing posts in the form that cMaRN0UdBBkAAAAASUVORK5CYII= - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go @@ -301,6 +355,12 @@ You can find more detailed information about the missing posts in the form that False + + False + + + False + False @@ -310,4 +370,7 @@ You can find more detailed information about the missing posts in the form that False + + False + \ No newline at end of file diff --git a/SCrawler/Editors/GlobalSettingsForm.vb b/SCrawler/Editors/GlobalSettingsForm.vb index 7d1e797..52edccf 100644 --- a/SCrawler/Editors/GlobalSettingsForm.vb +++ b/SCrawler/Editors/GlobalSettingsForm.vb @@ -31,6 +31,7 @@ Namespace Editors TXT_MAX_JOBS_USERS.Value = .MaxUsersJobsCount.Value TXT_MAX_JOBS_CHANNELS.Value = .ChannelsMaxJobsCount.Value CH_CHECK_VER_START.Checked = .CheckUpdatesAtStart + TXT_USER_AGENT.Text = .UserAgent TXT_IMGUR_CLIENT_ID.Text = .ImgurClientID CH_SHOW_GROUPS.Checked = .ShowGroups CH_USERS_GROUPING.Checked = .UseGrouping @@ -147,6 +148,8 @@ Namespace Editors .MaxUsersJobsCount.Value = CInt(TXT_MAX_JOBS_USERS.Value) .ChannelsMaxJobsCount.Value = TXT_MAX_JOBS_CHANNELS.Value .CheckUpdatesAtStart.Value = CH_CHECK_VER_START.Checked + .UserAgent.Value = TXT_USER_AGENT.Text + DefaultUserAgent = TXT_USER_AGENT.Text .ImgurClientID.Value = TXT_IMGUR_CLIENT_ID.Text .ShowGroups.Value = CH_SHOW_GROUPS.Checked .UseGrouping.Value = CH_USERS_GROUPING.Checked @@ -231,6 +234,9 @@ Namespace Editors Private Sub TXT_MAX_JOBS_CHANNELS_ActionOnButtonClick(ByVal Sender As ActionButton, ByVal e As EventArgs) Handles TXT_MAX_JOBS_CHANNELS.ActionOnButtonClick If Sender.DefaultButton = ADB.Refresh Then TXT_MAX_JOBS_CHANNELS.Value = SettingsCLS.DefaultMaxDownloadingTasks End Sub + Private Sub TXT_USER_AGENT_ActionOnButtonClick(ByVal Sender As ActionButton, ByVal e As ActionButtonEventArgs) Handles TXT_USER_AGENT.ActionOnButtonClick + If Sender.DefaultButton = ADB.Refresh Then TXT_USER_AGENT.Text = Settings.UserAgent.Value + End Sub Private Sub ChangePositionControlsEnabling() Handles OPT_FILE_NAME_REPLACE.CheckedChanged, OPT_FILE_NAME_ADD_DATE.CheckedChanged Dim b As Boolean = OPT_FILE_NAME_ADD_DATE.Checked And OPT_FILE_NAME_ADD_DATE.Enabled OPT_FILE_DATE_START.Enabled = b diff --git a/SCrawler/Editors/SiteEditorForm.vb b/SCrawler/Editors/SiteEditorForm.vb index 514c984..28b5baa 100644 --- a/SCrawler/Editors/SiteEditorForm.vb +++ b/SCrawler/Editors/SiteEditorForm.vb @@ -212,7 +212,7 @@ Namespace Editors Select Case Sender.DefaultButton Case ADB.Edit If Not Host.Responser Is Nothing Then - Using f As New CookieListForm With {.DesignXML = Settings.Design, .UseGrid = False} + Using f As New CookieListForm With {.DesignXML = Settings.Design, .ShowGrid = False} f.SetCollection(Host.Responser.Cookies) f.ShowDialog() If f.DialogResult = DialogResult.OK Then @@ -224,17 +224,14 @@ Namespace Editors End If Case ADB.Clear If Not Host.Responser Is Nothing Then - With Host.Responser - If Not .Cookies Is Nothing Then .Cookies.Dispose() - .Cookies = New CookieKeeper(.CookiesDomain) - MyDefs.MyOkCancel.EnableOK = True - End With + Host.Responser.Cookies.Clear() + MyDefs.MyOkCancel.EnableOK = True SetCookieText() End If End Select End Sub Private Sub SetCookieText() - If Not Host.Responser Is Nothing Then TXT_COOKIES.Text = $"{If(Host.Responser.Cookies?.Count, 0)} cookies" + If Not Host.Responser Is Nothing Then TXT_COOKIES.Text = $"{Host.Responser.Cookies.Count} cookies" End Sub Private Sub SpecialButton_Click(sender As Object, e As EventArgs) Handles SpecialButton.Click MyDefs.Detector() diff --git a/SCrawler/EncryptCookies.vb b/SCrawler/EncryptCookies.vb index 8cb4c50..0126191 100644 --- a/SCrawler/EncryptCookies.vb +++ b/SCrawler/EncryptCookies.vb @@ -12,15 +12,8 @@ Namespace EncryptCookies Friend CookiesEncrypted As Boolean = False Friend Sub ValidateCookiesEncrypt(ByRef Responser As Responser) If Not Responser Is Nothing Then - Dim b As Boolean = False With Responser - If Not .Cookies Is Nothing Then - With .Cookies - If .EncryptKey.IsEmptyString Then .EncryptKey = SettingsCLS.CookieEncryptKey : b = .Count > 0 - End With - End If - If .CookiesEncryptKey.IsEmptyString Then .CookiesEncryptKey = SettingsCLS.CookieEncryptKey : b = True - If b Then .SaveSettings() + If .CookiesEncryptKey.IsEmptyString Then .CookiesEncryptKey = SettingsCLS.CookieEncryptKey : .SaveSettings() End With End If End Sub diff --git a/SCrawler/MainFrame.vb b/SCrawler/MainFrame.vb index 42d5f9f..6392492 100644 --- a/SCrawler/MainFrame.vb +++ b/SCrawler/MainFrame.vb @@ -1623,7 +1623,7 @@ ResumeDownloadingOperation: Private Sub Downloader_Downloading(ByVal Value As Boolean) Dim __isDownloading As Boolean = Value Or Downloader.Working ControlInvokeFast(Toolbar_TOP, BTT_DOWN_STOP, Sub() BTT_DOWN_STOP.Enabled = __isDownloading) - ControlInvokeFast(Me, Sub() TrayIcon.Icon = If(__isDownloading, My.Resources.ArrowDownIcon_Blue_24, My.Resources.RainbowIcon_48)) + TrayIcon.Icon = If(__isDownloading, My.Resources.ArrowDownIcon_Blue_24, My.Resources.RainbowIcon_48) End Sub #End Region End Class \ No newline at end of file diff --git a/SCrawler/MainMod.vb b/SCrawler/MainMod.vb index 1272ab1..3f0556b 100644 --- a/SCrawler/MainMod.vb +++ b/SCrawler/MainMod.vb @@ -108,6 +108,7 @@ Friend Module MainMod Friend ReadOnly FeedVideoLengthProvider As New ADateTime("hh\:mm\:ss") With {.TimeParseMode = ADateTime.TimeModes.TimeSpan} Friend ReadOnly UserExistsPredicate As New FPredicate(Of IUserData)(Function(u) u.Exists) Friend ReadOnly LogConnector As New LogHost + Friend DefaultUserAgent As String = String.Empty #Region "File name operations" Friend FileDateAppenderProvider As IFormatProvider ''' File, Date @@ -187,6 +188,7 @@ Friend Module MainMod If Not found Then If URL.Contains("gfycat") Then um = Gfycat.Envir.GetVideoInfo(URL) + If um.ListExists AndAlso um(0).URL.Contains("redgifs.com") Then Return DownloadVideoByURL(um(0).URL, AskForPath, Silent) ElseIf URL.Contains("imgur.com") Then um = Imgur.Envir.GetVideoInfo(URL) Else diff --git a/SCrawler/My Project/AssemblyInfo.vb b/SCrawler/My Project/AssemblyInfo.vb index 43195ea..4a27b16 100644 --- a/SCrawler/My Project/AssemblyInfo.vb +++ b/SCrawler/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + diff --git a/SCrawler/SettingsCLS.vb b/SCrawler/SettingsCLS.vb index fa66328..72ec4bf 100644 --- a/SCrawler/SettingsCLS.vb +++ b/SCrawler/SettingsCLS.vb @@ -100,6 +100,9 @@ Friend Class SettingsCLS : Implements IDisposable SeparateVideoFolder = New XMLValue(Of Boolean)("SeparateVideoFolder", True, MyXML) CollectionsPath = New XMLValue(Of String)("CollectionsPath", "Collections", MyXML) + UserAgent = New XMLValue(Of String)("UserAgent",, MyXML) + If Not UserAgent.IsEmptyString Then DefaultUserAgent = UserAgent + Dim n() As String = {"Search"} SearchInName = New XMLValue(Of Boolean)("SearchInName", True, MyXML, n) SearchInDescription = New XMLValue(Of Boolean)("SearchInDescription", False, MyXML, n) @@ -529,6 +532,7 @@ Friend Class SettingsCLS : Implements IDisposable Private ReadOnly Property CookiesEncrypted As XMLValue(Of Boolean) Friend ReadOnly Property AddMissingToLog As XMLValue(Of Boolean) Friend ReadOnly Property AddMissingErrorsToLog As XMLValue(Of Boolean) + Friend ReadOnly Property UserAgent As XMLValue(Of String) #Region "Search" Friend ReadOnly Property SearchInName As XMLValue(Of Boolean) Friend ReadOnly Property SearchInDescription As XMLValue(Of Boolean) diff --git a/SCrawler/UserFinder.vb b/SCrawler/UserFinder.vb index 1fb502a..968d280 100644 --- a/SCrawler/UserFinder.vb +++ b/SCrawler/UserFinder.vb @@ -183,7 +183,7 @@ Friend Class UserFinder : Implements IDisposable End If __added = {__added, __dup, __skipped}.ListToString(vbCr.StringDup(2)) If Not __added.IsEmptyString Then - Using t As New TextSaver("LOGs\ImportUsers.txt") With {.ForceAddDateTimeToFileName = True} + Using t As New TextSaver("LOGs\ImportUsers.txt") With {.FileForceAddDateTimeToName = True} t.Append(__added) If Added.Count > 0 Then t.AppendLine(vbNewLine.StringDup(2))