From 55a28a7d89458663d000cd145b529eb01a61e9c4 Mon Sep 17 00:00:00 2001 From: Andy <88590076+AAndyProgram@users.noreply.github.com> Date: Fri, 10 Dec 2021 13:59:23 +0300 Subject: [PATCH] 1.0.0.2 Add: downloading certain types of media, name files by date Fix: Stop button is not activated after download start --- Changelog.md | 8 + SCrawler/API/Base/Structures.vb | 1 + SCrawler/API/Base/UserDataBase.vb | 39 +++ SCrawler/API/Reddit/UserData.vb | 47 ++- SCrawler/API/Twitter/UserData.vb | 16 +- .../Editors/GlobalSettingsForm.Designer.vb | 318 +++++++++++++++--- SCrawler/Editors/GlobalSettingsForm.resx | 12 + SCrawler/Editors/GlobalSettingsForm.vb | 56 ++- SCrawler/Editors/UserCreatorForm.Designer.vb | 127 ++++--- SCrawler/Editors/UserCreatorForm.resx | 3 + SCrawler/Editors/UserCreatorForm.vb | 26 +- SCrawler/MainFrame.vb | 4 +- SCrawler/MainMod.vb | 17 + SCrawler/My Project/AssemblyInfo.vb | 4 +- SCrawler/SettingsCLS.vb | 36 +- SCrawler/TDownloader.vb | 7 +- 16 files changed, 597 insertions(+), 124 deletions(-) diff --git a/Changelog.md b/Changelog.md index b9e1018..df5f686 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,11 @@ +# 1.0.0.2 + +- Added + - Ability to choose what types of media you want to download (images only, videos only, both) + - Ability to name files by date +- Fixed + - In some cases, the "Stop" button is not activated after download start + # 1.0.0.1 - Added diff --git a/SCrawler/API/Base/Structures.vb b/SCrawler/API/Base/Structures.vb index 63e77cb..18c8e8d 100644 --- a/SCrawler/API/Base/Structures.vb +++ b/SCrawler/API/Base/Structures.vb @@ -49,6 +49,7 @@ ''' Post ID Friend ID As String Friend [Date] As Date? + Friend Title As String #Region "Channel compatible fields" Friend UserID As String Friend CachedFile As SFile diff --git a/SCrawler/API/Base/UserDataBase.vb b/SCrawler/API/Base/UserDataBase.vb index df17742..a744c00 100644 --- a/SCrawler/API/Base/UserDataBase.vb +++ b/SCrawler/API/Base/UserDataBase.vb @@ -47,6 +47,8 @@ Namespace API.Base Private Const Name_LabelsName As String = "Labels" Private Const Name_ReadyForDownload As String = "ReadyForDownload" + Private Const Name_DownloadImages As String = "DownloadImages" + Private Const Name_DownloadVideos As String = "DownloadVideos" Private Const Name_VideoCount As String = "VideoCount" Private Const Name_PicturesCount As String = "PicturesCount" @@ -233,6 +235,8 @@ BlockNullPicture: Protected _DataLoaded As Boolean = False Protected _DataParsed As Boolean = False Friend Property ReadyForDownload As Boolean = True Implements IUserData.ReadyForDownload + Friend Property DownloadImages As Boolean = True Implements IUserData.DownloadImages + Friend Property DownloadVideos As Boolean = True Implements IUserData.DownloadVideos #End Region #Region "Content" Protected ReadOnly _ContentList As List(Of UserMedia) @@ -431,6 +435,8 @@ BlockNullPicture: CreatedByChannel = x.Value(Name_CreatedByChannel).FromXML(Of Boolean)(False) SeparateVideoFolder = AConvert(Of Boolean)(x.Value(Name_SeparateVideoFolder), Nothing) ReadyForDownload = x.Value(Name_ReadyForDownload).FromXML(Of Boolean)(True) + DownloadImages = x.Value(Name_DownloadImages).FromXML(Of Boolean)(True) + DownloadedVideos = x.Value(Name_DownloadVideos).FromXML(Of Boolean)(True) _CountVideo = x.Value(Name_VideoCount).FromXML(Of Integer)(0) _CountPictures = x.Value(Name_PicturesCount).FromXML(Of Integer)(0) LastUpdated = AConvert(Of Date)(x.Value(Name_LastUpdated), ADateTime.Formats.BaseDateTime, Nothing) @@ -463,6 +469,8 @@ BlockNullPicture: x.Add(Name_SeparateVideoFolder, String.Empty) End If x.Add(Name_ReadyForDownload, ReadyForDownload.BoolToInteger) + x.Add(Name_DownloadImages, DownloadImages.BoolToInteger) + x.Add(Name_DownloadVideos, DownloadVideos.BoolToInteger) x.Add(Name_VideoCount, _CountVideo) x.Add(Name_PicturesCount, _CountPictures) x.Add(Name_LastUpdated, AConvert(Of String)(LastUpdated, ADateTime.Formats.BaseDateTime, String.Empty)) @@ -586,6 +594,12 @@ BlockNullPicture: DownloadDataF(Token) ThrowAny(Token) + If _TempMediaList.Count > 0 Then + If Not DownloadImages Then _TempMediaList.RemoveAll(Function(m) m.Type = UserMedia.Types.GIF Or m.Type = UserMedia.Types.Picture) + If Not DownloadVideos Then _TempMediaList.RemoveAll(Function(m) m.Type = UserMedia.Types.Video Or + m.Type = UserMedia.Types.VideoPre Or m.Type = UserMedia.Types.m3u8) + End If + ReparseVideo(Token) ThrowAny(Token) If _TempPostsList.Count > 0 And __SaveData Then TextSaver.SaveTextToFile(_TempPostsList.ListToString(, Environment.NewLine), MyFilePosts, True,, EDP.None) @@ -640,6 +654,29 @@ BlockNullPicture: Protected MustOverride Sub DownloadDataF(ByVal Token As CancellationToken) Protected MustOverride Sub ReparseVideo(ByVal Token As CancellationToken) Protected MustOverride Sub DownloadContent(ByVal Token As CancellationToken) + Protected Function ChangeFileNameByProvider(ByVal f As SFile, ByVal m As UserMedia) As SFile + Dim ff As SFile = Nothing + Try + If Not f.IsEmptyString AndAlso f.Exists Then + Dim d As Date? = m.Post.Date + If Settings.FileReplaceNameByDate Then + Dim dd$ = AConvert(Of String)(If(d, Now), FileDateAppenderProvider, String.Empty) + ff = f + ff.Name = dd + ff = SFile.Indexed_IndexFile(ff,, New NumberedFile(ff)) + ElseIf d.HasValue AndAlso (Settings.FileAddDateToFileName Or Settings.FileAddTimeToFileName) AndAlso + (Not FileDateAppenderProvider Is Nothing And Not FileDateAppenderPattern.IsEmptyString) Then + ff = f + ff.Name = String.Format(FileDateAppenderPattern, f.Name, CStr(AConvert(Of String)(d.Value, FileDateAppenderProvider, String.Empty))) + End If + If Not ff.Name.IsEmptyString Then My.Computer.FileSystem.RenameFile(f, ff.File) : Return ff + End If + Return f + Catch ex As Exception + LogError(ex, $"change file name from [{f}] to [{ff}]") + Return f + End Try + End Function #End Region #Region "Delete, Move, Merge" Friend Overridable Function Delete() As Integer Implements IUserData.Delete @@ -916,6 +953,8 @@ BlockNullPicture: ReadOnly Property FitToAddParams As Boolean ReadOnly Property LVIKey As String ReadOnly Property LVIIndex As Integer + Property DownloadImages As Boolean + Property DownloadVideos As Boolean Function GetLVI(ByVal Destination As ListView) As ListViewItem Function GetLVIGroup(ByVal Destination As ListView) As ListViewGroup Sub LoadUserInformation() diff --git a/SCrawler/API/Reddit/UserData.vb b/SCrawler/API/Reddit/UserData.vb index 9bcf9dd..8b3357b 100644 --- a/SCrawler/API/Reddit/UserData.vb +++ b/SCrawler/API/Reddit/UserData.vb @@ -92,7 +92,7 @@ Namespace API.Reddit Dim URL$ = String.Empty Try Dim PostID$ = String.Empty - Dim PostDate$ + Dim PostDate$, PostTitle$ Dim n As EContainer, nn As EContainer, s As EContainer Dim NewPostDetected As Boolean = False Dim ExistsDetected As Boolean = False @@ -107,7 +107,7 @@ Namespace API.Reddit ThrowAny(Token) Dim r$ = GetSiteResponse(URL) If Not r.IsEmptyString Then - Using w As EContainer = JsonDocument.Parse(r) + Using w As EContainer = JsonDocument.Parse(r).XmlIfNothing If w.Count > 0 Then n = w.GetNode(JsonNodesJson) If Not n Is Nothing AndAlso n.Count > 0 Then @@ -124,29 +124,32 @@ Namespace API.Reddit ExistsDetected = True Continue For End If + PostTitle = nn.Value("title") + If CheckNode(nn) Then _ItemsBefore = _TempMediaList.Count added = True s = nn.ItemF({"source", "url"}) If s.XmlIfNothingValue("/").Contains("redgifs.com") Then - _TempMediaList.ListAddValue(MediaFromData(UTypes.VideoPre, s.Value, PostID, PostDate,, IsChannel), LNC) - _TotalPostsDownloaded += 1 + _TempMediaList.ListAddValue(MediaFromData(UTypes.VideoPre, s.Value, PostID, PostDate,, IsChannel, PostTitle), LNC) Else s = nn.ItemF({"media"}).XmlIfNothing __ItemType = s("type").XmlIfNothingValue Select Case __ItemType - Case "gallery" : DownloadGallery(s, PostID, PostDate) : _TotalPostsDownloaded += 1 + Case "gallery" : If Not DownloadGallery(s, PostID, PostDate,,, PostTitle) Then added = False Case "image", "gifvideo" If s.Contains("content") Then _TempMediaList.ListAddValue(MediaFromData(UPicType(__ItemType), s.Value("content"), - PostID, PostDate,, IsChannel), LNC) - _TotalPostsDownloaded += 1 + PostID, PostDate,, IsChannel, PostTitle), LNC) + Else + added = False End If Case "video" If Settings.UseM3U8 AndAlso s("hlsUrl").XmlIfNothingValue("/").ToLower.Contains("m3u8") Then _TempMediaList.ListAddValue(MediaFromData(UTypes.m3u8, s.Value("hlsUrl"), - PostID, PostDate,, IsChannel), LNC) - _TotalPostsDownloaded += 1 + PostID, PostDate,, IsChannel, PostTitle), LNC) + Else + added = False End If Case Else : added = False End Select @@ -164,8 +167,7 @@ Namespace API.Reddit End Select End With If Not tmpType = UTypes.Undefined Then - _TempMediaList.ListAddValue(MediaFromData(tmpType, s.Value, PostID, PostDate,, IsChannel), LNC) - _TotalPostsDownloaded += 1 + _TempMediaList.ListAddValue(MediaFromData(tmpType, s.Value, PostID, PostDate,, IsChannel, PostTitle), LNC) End If End If End If @@ -267,25 +269,30 @@ Namespace API.Reddit End Sub #End Region #Region "Download Base Functions" - Private Sub DownloadGallery(ByVal w As EContainer, ByVal PostID As String, ByVal PostDate As String, - Optional ByVal _UserID As String = Nothing, Optional ByVal FirstOnly As Boolean = False) + Private Function DownloadGallery(ByVal w As EContainer, ByVal PostID As String, ByVal PostDate As String, + Optional ByVal _UserID As String = Nothing, Optional ByVal FirstOnly As Boolean = False, + Optional ByVal Title As String = Nothing) As Boolean Try + Dim added As Boolean = False Dim cn$ = IIf(IsChannel, "media_metadata", "mediaMetadata") If Not w Is Nothing AndAlso w(cn).XmlIfNothing.Count > 0 Then Dim t As EContainer For Each n As EContainer In w(cn) t = n.ItemF({"s", "u"}) If Not t Is Nothing AndAlso Not t.Value.IsEmptyString Then - _TempMediaList.ListAddValue(MediaFromData(UTypes.Picture, t.Value, PostID, PostDate, _UserID, IsChannel), LNC) + _TempMediaList.ListAddValue(MediaFromData(UTypes.Picture, t.Value, PostID, PostDate, _UserID, IsChannel, Title), LNC) + added = True If FirstOnly Then Exit For End If Next End If + Return added Catch ex As Exception LogError(ex, "gallery parsing error") HasError = True + Return False End Try - End Sub + End Function Protected Overrides Sub ReparseVideo(ByVal Token As CancellationToken) Try ThrowAny(Token) @@ -333,13 +340,15 @@ Namespace API.Reddit #End Region #Region "Structure creator" Protected Shared Function MediaFromData(ByVal t As UTypes, ByVal _URL As String, ByVal PostID As String, ByVal PostDate As String, - Optional ByVal _UserID As String = "", Optional ByVal IsChannel As Boolean = False) As UserMedia + Optional ByVal _UserID As String = "", Optional ByVal IsChannel As Boolean = False, + Optional ByVal Title As String = Nothing) As UserMedia If _URL.IsEmptyString And t = UTypes.Picture Then Return Nothing _URL = LinkFormatterSecure(RegexReplace(_URL.Replace("\", String.Empty), LinkPattern)) Dim m As New UserMedia(_URL, t) With {.Post = New UserPost With {.ID = PostID, .UserID = _UserID}} If t = UTypes.Picture Or t = UTypes.GIF Then m.File = UrlToFile(m.URL) Else m.File = Nothing If m.URL.Contains("preview") Then m.URL = $"https://i.redd.it/{m.File.File}" If Not PostDate.IsEmptyString Then m.Post.Date = AConvert(Of Date)(PostDate, If(IsChannel, DateProviderChannel, DateProvider), Nothing) Else m.Post.Date = Nothing + If Not Title.IsEmptyString Then m.Post.Title = Title Return m End Function Private Function TryFile(ByVal URL As String) As Boolean @@ -436,7 +445,11 @@ Namespace API.Reddit Case UTypes.Picture : DownloadedPictures += 1 : _CountPictures += 1 Case UTypes.Video, UTypes.m3u8 : DownloadedVideos += 1 : _CountVideo += 1 End Select - v.File = f + If Not IsChannel Or Not SaveToCache Then + v.File = ChangeFileNameByProvider(f, v) + Else + v.File = f + End If v.Post.CachedFile = f v.State = UStates.Downloaded dCount += 1 diff --git a/SCrawler/API/Twitter/UserData.vb b/SCrawler/API/Twitter/UserData.vb index c5dd6bd..e8b839a 100644 --- a/SCrawler/API/Twitter/UserData.vb +++ b/SCrawler/API/Twitter/UserData.vb @@ -47,7 +47,7 @@ Namespace API.Twitter Dim URL$ = String.Empty Try Dim PostID$ = String.Empty - Dim PostDate$ + Dim PostDate$, PostTitle$ Dim m As EContainer, nn As EContainer, s As EContainer Dim NewPostDetected As Boolean = False Dim ExistsDetected As Boolean = False @@ -83,17 +83,18 @@ Namespace API.Twitter ExistsDetected = True Continue For End If + PostTitle = nn.Value("full_text") If Not ParseUserMediaOnly OrElse (Not nn.Contains("retweeted_status") OrElse (Not ID.IsEmptyString AndAlso UID(nn("retweeted_status")) = ID)) Then - If Not CheckVideoNode(nn, PostID, PostDate) Then + If Not CheckVideoNode(nn, PostID, PostDate, PostTitle) Then s = nn.ItemF({"extended_entities", "media"}) If s Is Nothing OrElse s.Count = 0 Then s = nn.ItemF({"retweeted_status", "extended_entities", "media"}) If Not s Is Nothing AndAlso s.Count > 0 Then For Each m In s If m.Count > 0 AndAlso m.Contains("media_url") Then _TempMediaList.ListAddValue(MediaFromData(m("media_url").Value, - PostID, PostDate, GetPictureOption(m)), LNC) + PostID, PostDate, GetPictureOption(m), PostTitle), LNC) End If Next End If @@ -158,10 +159,10 @@ Namespace API.Twitter End Function #End Region #Region "Video options" - Private Function CheckVideoNode(ByVal w As EContainer, ByVal PostID As String, ByVal PostDate As String) As Boolean + Private Function CheckVideoNode(ByVal w As EContainer, ByVal PostID As String, ByVal PostDate As String, ByVal Title As String) As Boolean Try Dim URL$ = GetVideoNodeURL(w) - If Not URL.IsEmptyString Then _TempMediaList.ListAddValue(MediaFromData(URL, PostID, PostDate), LNC) : Return True + If Not URL.IsEmptyString Then _TempMediaList.ListAddValue(MediaFromData(URL, PostID, PostDate,, Title), LNC) : Return True Return False Catch ex As Exception LogError(ex, "[CheckVideoNode]") @@ -193,7 +194,7 @@ Namespace API.Twitter End Sub #End Region Private Shared Function MediaFromData(ByVal _URL As String, ByVal PostID As String, ByVal PostDate As String, - Optional ByVal _PictureOption As String = "") As UserMedia + Optional ByVal _PictureOption As String = "", Optional ByVal Title As String = Nothing) As UserMedia _URL = LinkFormatterSecure(RegexReplace(_URL.Replace("\", String.Empty), LinkPattern)) Dim m As New UserMedia(_URL) With {.PictureOption = _PictureOption, .Post = New UserPost With {.ID = PostID}} If Not m.URL.IsEmptyString Then m.File = CStr(RegexReplace(m.URL, FilesPattern)) @@ -201,6 +202,7 @@ Namespace API.Twitter m.URL_BASE = $"{m.URL.Replace($".{m.File.Extension}", String.Empty)}?format={m.File.Extension}&name={m.PictureOption}" End If If Not PostDate.IsEmptyString Then m.Post.Date = AConvert(Of Date)(PostDate, Declarations.DateProvider, Nothing) Else m.Post.Date = Nothing + If Not Title.IsEmptyString Then m.Post.Title = Title Return m End Function #End Region @@ -241,7 +243,7 @@ Namespace API.Twitter Case "mp4" : v.Type = UserMedia.Types.Video : DownloadedVideos += 1 : _CountVideo += 1 Case Else : v.Type = UserMedia.Types.Picture : DownloadedPictures += 1 : _CountPictures += 1 End Select - v.File = f + v.File = ChangeFileNameByProvider(f, v) v.State = UStates.Downloaded Catch wex As Exception ErrorDownloading(f, v.URL_BASE) diff --git a/SCrawler/Editors/GlobalSettingsForm.Designer.vb b/SCrawler/Editors/GlobalSettingsForm.Designer.vb index bb31168..787ec8d 100644 --- a/SCrawler/Editors/GlobalSettingsForm.Designer.vb +++ b/SCrawler/Editors/GlobalSettingsForm.Designer.vb @@ -24,13 +24,16 @@ Dim TP_CHANNELS_IMGS As System.Windows.Forms.TableLayoutPanel 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 TP_DEFAULTS As System.Windows.Forms.TableLayoutPanel + 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 Dim TT_MAIN As System.Windows.Forms.ToolTip Me.TXT_GLOBAL_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.CH_SEPARATE_VIDEO_FOLDER = New System.Windows.Forms.CheckBox() Me.TXT_COLLECTIONS_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_IMAGE_LARGE = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_IMAGE_SMALL = New PersonalUtilities.Forms.Controls.TextBoxExtended() - Me.CH_DEF_TEMP = New System.Windows.Forms.CheckBox() Me.TXT_CHANNELS_ROWS = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_CHANNELS_COLUMNS = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_CHANNEL_USER_POST_LIMIT = New PersonalUtilities.Forms.Controls.TextBoxExtended() @@ -38,10 +41,24 @@ Me.CH_CHECK_VER_START = New System.Windows.Forms.CheckBox() Me.TXT_MAX_JOBS_USERS = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_MAX_JOBS_CHANNELS = New PersonalUtilities.Forms.Controls.TextBoxExtended() + Me.CH_DEF_TEMP = New System.Windows.Forms.CheckBox() + Me.CH_DOWN_IMAGES = New System.Windows.Forms.CheckBox() + Me.CH_DOWN_VIDEOS = New System.Windows.Forms.CheckBox() + 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() + Me.CH_FILE_DATE = New System.Windows.Forms.CheckBox() + Me.CH_FILE_TIME = New System.Windows.Forms.CheckBox() + Me.OPT_FILE_DATE_START = New System.Windows.Forms.RadioButton() + Me.OPT_FILE_DATE_END = New System.Windows.Forms.RadioButton() Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() TP_MAIN = New System.Windows.Forms.TableLayoutPanel() TP_IMAGES = New System.Windows.Forms.TableLayoutPanel() TP_CHANNELS_IMGS = New System.Windows.Forms.TableLayoutPanel() + TP_DEFAULTS = New System.Windows.Forms.TableLayoutPanel() + TP_FILE_NAME = New System.Windows.Forms.TableLayoutPanel() + TP_FILE_PATTERNS = New System.Windows.Forms.TableLayoutPanel() + LBL_DATE_POS = New System.Windows.Forms.Label() TT_MAIN = New System.Windows.Forms.ToolTip(Me.components) TP_MAIN.SuspendLayout() CType(Me.TXT_GLOBAL_PATH, System.ComponentModel.ISupportInitialize).BeginInit() @@ -55,6 +72,9 @@ CType(Me.TXT_CHANNEL_USER_POST_LIMIT, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TXT_MAX_JOBS_USERS, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TXT_MAX_JOBS_CHANNELS, System.ComponentModel.ISupportInitialize).BeginInit() + TP_DEFAULTS.SuspendLayout() + TP_FILE_NAME.SuspendLayout() + TP_FILE_PATTERNS.SuspendLayout() Me.CONTAINER_MAIN.ContentPanel.SuspendLayout() Me.CONTAINER_MAIN.SuspendLayout() Me.SuspendLayout() @@ -68,29 +88,34 @@ TP_MAIN.Controls.Add(Me.CH_SEPARATE_VIDEO_FOLDER, 0, 2) TP_MAIN.Controls.Add(Me.TXT_COLLECTIONS_PATH, 0, 4) TP_MAIN.Controls.Add(TP_IMAGES, 0, 1) - TP_MAIN.Controls.Add(Me.CH_DEF_TEMP, 0, 3) TP_MAIN.Controls.Add(TP_CHANNELS_IMGS, 0, 5) TP_MAIN.Controls.Add(Me.TXT_CHANNEL_USER_POST_LIMIT, 0, 6) TP_MAIN.Controls.Add(Me.CH_COPY_CHANNEL_USER_IMAGE, 0, 7) TP_MAIN.Controls.Add(Me.CH_CHECK_VER_START, 0, 8) TP_MAIN.Controls.Add(Me.TXT_MAX_JOBS_USERS, 0, 9) TP_MAIN.Controls.Add(Me.TXT_MAX_JOBS_CHANNELS, 0, 10) + TP_MAIN.Controls.Add(TP_DEFAULTS, 0, 3) + TP_MAIN.Controls.Add(TP_FILE_NAME, 0, 11) + TP_MAIN.Controls.Add(TP_FILE_PATTERNS, 0, 12) TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill TP_MAIN.Location = New System.Drawing.Point(0, 0) TP_MAIN.Name = "TP_MAIN" - TP_MAIN.RowCount = 11 - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.090549!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.090549!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.090549!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.090549!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.090549!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.090549!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.092355!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.092355!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.091001!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.09009!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.09091!)) - TP_MAIN.Size = New System.Drawing.Size(584, 337) + TP_MAIN.RowCount = 13 + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.692121!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.692121!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.692121!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.692121!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.692121!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.692121!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.693649!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.693649!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.692503!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.691732!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.692427!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.691657!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.691657!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + TP_MAIN.Size = New System.Drawing.Size(584, 359) TP_MAIN.TabIndex = 0 ' 'TXT_GLOBAL_PATH @@ -116,10 +141,10 @@ ' Me.CH_SEPARATE_VIDEO_FOLDER.AutoSize = True Me.CH_SEPARATE_VIDEO_FOLDER.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_SEPARATE_VIDEO_FOLDER.Location = New System.Drawing.Point(4, 64) + Me.CH_SEPARATE_VIDEO_FOLDER.Location = New System.Drawing.Point(4, 58) Me.CH_SEPARATE_VIDEO_FOLDER.Name = "CH_SEPARATE_VIDEO_FOLDER" Me.CH_SEPARATE_VIDEO_FOLDER.Padding = New System.Windows.Forms.Padding(100, 0, 0, 0) - Me.CH_SEPARATE_VIDEO_FOLDER.Size = New System.Drawing.Size(576, 23) + Me.CH_SEPARATE_VIDEO_FOLDER.Size = New System.Drawing.Size(576, 20) Me.CH_SEPARATE_VIDEO_FOLDER.TabIndex = 2 Me.CH_SEPARATE_VIDEO_FOLDER.Text = "Separate video folders" TT_MAIN.SetToolTip(Me.CH_SEPARATE_VIDEO_FOLDER, resources.GetString("CH_SEPARATE_VIDEO_FOLDER.ToolTip")) @@ -135,7 +160,7 @@ Me.TXT_COLLECTIONS_PATH.CaptionToolTipEnabled = True Me.TXT_COLLECTIONS_PATH.CaptionToolTipText = "Set collections folder name (name only)" Me.TXT_COLLECTIONS_PATH.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_COLLECTIONS_PATH.Location = New System.Drawing.Point(4, 124) + Me.TXT_COLLECTIONS_PATH.Location = New System.Drawing.Point(4, 112) Me.TXT_COLLECTIONS_PATH.Name = "TXT_COLLECTIONS_PATH" Me.TXT_COLLECTIONS_PATH.Size = New System.Drawing.Size(576, 22) Me.TXT_COLLECTIONS_PATH.TabIndex = 4 @@ -148,13 +173,13 @@ TP_IMAGES.Controls.Add(Me.TXT_IMAGE_LARGE, 0, 0) TP_IMAGES.Controls.Add(Me.TXT_IMAGE_SMALL, 1, 0) TP_IMAGES.Dock = System.Windows.Forms.DockStyle.Fill - TP_IMAGES.Location = New System.Drawing.Point(1, 31) + TP_IMAGES.Location = New System.Drawing.Point(1, 28) TP_IMAGES.Margin = New System.Windows.Forms.Padding(0) TP_IMAGES.Name = "TP_IMAGES" TP_IMAGES.RowCount = 1 TP_IMAGES.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_IMAGES.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29.0!)) - TP_IMAGES.Size = New System.Drawing.Size(582, 29) + TP_IMAGES.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + TP_IMAGES.Size = New System.Drawing.Size(582, 26) TP_IMAGES.TabIndex = 1 ' 'TXT_IMAGE_LARGE @@ -189,19 +214,6 @@ Me.TXT_IMAGE_SMALL.Text = "10" Me.TXT_IMAGE_SMALL.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center ' - 'CH_DEF_TEMP - ' - Me.CH_DEF_TEMP.AutoSize = True - Me.CH_DEF_TEMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_DEF_TEMP.Location = New System.Drawing.Point(4, 94) - Me.CH_DEF_TEMP.Name = "CH_DEF_TEMP" - Me.CH_DEF_TEMP.Padding = New System.Windows.Forms.Padding(100, 0, 0, 0) - Me.CH_DEF_TEMP.Size = New System.Drawing.Size(576, 23) - Me.CH_DEF_TEMP.TabIndex = 3 - Me.CH_DEF_TEMP.Text = "Temporary default" - TT_MAIN.SetToolTip(Me.CH_DEF_TEMP, "Default value on user creating") - Me.CH_DEF_TEMP.UseVisualStyleBackColor = True - ' 'TP_CHANNELS_IMGS ' TP_CHANNELS_IMGS.ColumnCount = 2 @@ -210,13 +222,13 @@ TP_CHANNELS_IMGS.Controls.Add(Me.TXT_CHANNELS_ROWS, 0, 0) TP_CHANNELS_IMGS.Controls.Add(Me.TXT_CHANNELS_COLUMNS, 1, 0) TP_CHANNELS_IMGS.Dock = System.Windows.Forms.DockStyle.Fill - TP_CHANNELS_IMGS.Location = New System.Drawing.Point(1, 151) + TP_CHANNELS_IMGS.Location = New System.Drawing.Point(1, 136) TP_CHANNELS_IMGS.Margin = New System.Windows.Forms.Padding(0) TP_CHANNELS_IMGS.Name = "TP_CHANNELS_IMGS" TP_CHANNELS_IMGS.RowCount = 1 TP_CHANNELS_IMGS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_CHANNELS_IMGS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29.0!)) - TP_CHANNELS_IMGS.Size = New System.Drawing.Size(582, 29) + TP_CHANNELS_IMGS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + TP_CHANNELS_IMGS.Size = New System.Drawing.Size(582, 26) TP_CHANNELS_IMGS.TabIndex = 5 ' 'TXT_CHANNELS_ROWS @@ -256,7 +268,7 @@ Me.TXT_CHANNEL_USER_POST_LIMIT.CaptionWidth = 50.0R Me.TXT_CHANNEL_USER_POST_LIMIT.ControlMode = PersonalUtilities.Forms.Controls.TextBoxExtended.ControlModes.NumericUpDown Me.TXT_CHANNEL_USER_POST_LIMIT.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_CHANNEL_USER_POST_LIMIT.Location = New System.Drawing.Point(4, 184) + Me.TXT_CHANNEL_USER_POST_LIMIT.Location = New System.Drawing.Point(4, 166) Me.TXT_CHANNEL_USER_POST_LIMIT.Name = "TXT_CHANNEL_USER_POST_LIMIT" Me.TXT_CHANNEL_USER_POST_LIMIT.NumberMaximum = New Decimal(New Integer() {1000, 0, 0, 0}) Me.TXT_CHANNEL_USER_POST_LIMIT.NumberMinimum = New Decimal(New Integer() {1, 0, 0, 0}) @@ -269,10 +281,10 @@ ' Me.CH_COPY_CHANNEL_USER_IMAGE.AutoSize = True Me.CH_COPY_CHANNEL_USER_IMAGE.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_COPY_CHANNEL_USER_IMAGE.Location = New System.Drawing.Point(4, 214) + Me.CH_COPY_CHANNEL_USER_IMAGE.Location = New System.Drawing.Point(4, 193) Me.CH_COPY_CHANNEL_USER_IMAGE.Name = "CH_COPY_CHANNEL_USER_IMAGE" Me.CH_COPY_CHANNEL_USER_IMAGE.Padding = New System.Windows.Forms.Padding(100, 0, 0, 0) - Me.CH_COPY_CHANNEL_USER_IMAGE.Size = New System.Drawing.Size(576, 23) + Me.CH_COPY_CHANNEL_USER_IMAGE.Size = New System.Drawing.Size(576, 20) Me.CH_COPY_CHANNEL_USER_IMAGE.TabIndex = 7 Me.CH_COPY_CHANNEL_USER_IMAGE.Text = "Copy channel user image" TT_MAIN.SetToolTip(Me.CH_COPY_CHANNEL_USER_IMAGE, "Copy image posted by user (in the channel you added from) to the user destination" & @@ -283,10 +295,10 @@ ' Me.CH_CHECK_VER_START.AutoSize = True Me.CH_CHECK_VER_START.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_CHECK_VER_START.Location = New System.Drawing.Point(4, 244) + Me.CH_CHECK_VER_START.Location = New System.Drawing.Point(4, 220) Me.CH_CHECK_VER_START.Name = "CH_CHECK_VER_START" Me.CH_CHECK_VER_START.Padding = New System.Windows.Forms.Padding(100, 0, 0, 0) - Me.CH_CHECK_VER_START.Size = New System.Drawing.Size(576, 23) + Me.CH_CHECK_VER_START.Size = New System.Drawing.Size(576, 20) Me.CH_CHECK_VER_START.TabIndex = 8 Me.CH_CHECK_VER_START.Text = "Check new version at start" Me.CH_CHECK_VER_START.UseVisualStyleBackColor = True @@ -303,7 +315,7 @@ Me.TXT_MAX_JOBS_USERS.CaptionWidth = 50.0R Me.TXT_MAX_JOBS_USERS.ControlMode = PersonalUtilities.Forms.Controls.TextBoxExtended.ControlModes.NumericUpDown Me.TXT_MAX_JOBS_USERS.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_MAX_JOBS_USERS.Location = New System.Drawing.Point(4, 274) + Me.TXT_MAX_JOBS_USERS.Location = New System.Drawing.Point(4, 247) Me.TXT_MAX_JOBS_USERS.Name = "TXT_MAX_JOBS_USERS" Me.TXT_MAX_JOBS_USERS.NumberMinimum = New Decimal(New Integer() {1, 0, 0, 0}) Me.TXT_MAX_JOBS_USERS.Size = New System.Drawing.Size(576, 22) @@ -323,7 +335,7 @@ Me.TXT_MAX_JOBS_CHANNELS.CaptionWidth = 50.0R Me.TXT_MAX_JOBS_CHANNELS.ControlMode = PersonalUtilities.Forms.Controls.TextBoxExtended.ControlModes.NumericUpDown Me.TXT_MAX_JOBS_CHANNELS.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_MAX_JOBS_CHANNELS.Location = New System.Drawing.Point(4, 304) + Me.TXT_MAX_JOBS_CHANNELS.Location = New System.Drawing.Point(4, 274) Me.TXT_MAX_JOBS_CHANNELS.Name = "TXT_MAX_JOBS_CHANNELS" Me.TXT_MAX_JOBS_CHANNELS.NumberMinimum = New Decimal(New Integer() {1, 0, 0, 0}) Me.TXT_MAX_JOBS_CHANNELS.Size = New System.Drawing.Size(576, 22) @@ -331,19 +343,210 @@ Me.TXT_MAX_JOBS_CHANNELS.Text = "1" Me.TXT_MAX_JOBS_CHANNELS.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Center ' + 'TP_DEFAULTS + ' + TP_DEFAULTS.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] + TP_DEFAULTS.ColumnCount = 3 + TP_DEFAULTS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + TP_DEFAULTS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + TP_DEFAULTS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + TP_DEFAULTS.Controls.Add(Me.CH_DEF_TEMP, 0, 0) + TP_DEFAULTS.Controls.Add(Me.CH_DOWN_IMAGES, 1, 0) + TP_DEFAULTS.Controls.Add(Me.CH_DOWN_VIDEOS, 2, 0) + TP_DEFAULTS.Dock = System.Windows.Forms.DockStyle.Fill + TP_DEFAULTS.Location = New System.Drawing.Point(1, 82) + TP_DEFAULTS.Margin = New System.Windows.Forms.Padding(0) + TP_DEFAULTS.Name = "TP_DEFAULTS" + TP_DEFAULTS.RowCount = 1 + TP_DEFAULTS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + TP_DEFAULTS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27.0!)) + TP_DEFAULTS.Size = New System.Drawing.Size(582, 26) + TP_DEFAULTS.TabIndex = 3 + ' + 'CH_DEF_TEMP + ' + Me.CH_DEF_TEMP.AutoSize = True + Me.CH_DEF_TEMP.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_DEF_TEMP.Location = New System.Drawing.Point(4, 4) + Me.CH_DEF_TEMP.Name = "CH_DEF_TEMP" + Me.CH_DEF_TEMP.Size = New System.Drawing.Size(186, 18) + Me.CH_DEF_TEMP.TabIndex = 0 + Me.CH_DEF_TEMP.Text = "Temporary default" + TT_MAIN.SetToolTip(Me.CH_DEF_TEMP, "Default value on user creating (can be changed in the new user form)") + Me.CH_DEF_TEMP.UseVisualStyleBackColor = True + ' + 'CH_DOWN_IMAGES + ' + Me.CH_DOWN_IMAGES.AutoSize = True + Me.CH_DOWN_IMAGES.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_DOWN_IMAGES.Location = New System.Drawing.Point(197, 4) + Me.CH_DOWN_IMAGES.Name = "CH_DOWN_IMAGES" + Me.CH_DOWN_IMAGES.Size = New System.Drawing.Size(186, 18) + Me.CH_DOWN_IMAGES.TabIndex = 1 + Me.CH_DOWN_IMAGES.Text = "Download images" + TT_MAIN.SetToolTip(Me.CH_DOWN_IMAGES, "By default, download images for new users (can be changed in the new user form)") + Me.CH_DOWN_IMAGES.UseVisualStyleBackColor = True + ' + 'CH_DOWN_VIDEOS + ' + Me.CH_DOWN_VIDEOS.AutoSize = True + Me.CH_DOWN_VIDEOS.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_DOWN_VIDEOS.Location = New System.Drawing.Point(390, 4) + Me.CH_DOWN_VIDEOS.Name = "CH_DOWN_VIDEOS" + Me.CH_DOWN_VIDEOS.Size = New System.Drawing.Size(188, 18) + Me.CH_DOWN_VIDEOS.TabIndex = 2 + Me.CH_DOWN_VIDEOS.Text = "Download videos" + TT_MAIN.SetToolTip(Me.CH_DOWN_VIDEOS, "By default, download videos for new users (can be changed in the new user form)") + Me.CH_DOWN_VIDEOS.UseVisualStyleBackColor = True + ' + 'TP_FILE_NAME + ' + TP_FILE_NAME.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] + TP_FILE_NAME.ColumnCount = 3 + TP_FILE_NAME.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + TP_FILE_NAME.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + TP_FILE_NAME.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!)) + TP_FILE_NAME.Controls.Add(Me.OPT_FILE_NAME_REPLACE, 1, 0) + TP_FILE_NAME.Controls.Add(Me.OPT_FILE_NAME_ADD_DATE, 2, 0) + TP_FILE_NAME.Controls.Add(Me.CH_FILE_NAME_CHANGE, 0, 0) + TP_FILE_NAME.Dock = System.Windows.Forms.DockStyle.Fill + TP_FILE_NAME.Location = New System.Drawing.Point(1, 298) + TP_FILE_NAME.Margin = New System.Windows.Forms.Padding(0) + TP_FILE_NAME.Name = "TP_FILE_NAME" + TP_FILE_NAME.RowCount = 1 + TP_FILE_NAME.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + TP_FILE_NAME.Size = New System.Drawing.Size(582, 26) + TP_FILE_NAME.TabIndex = 12 + ' + 'OPT_FILE_NAME_REPLACE + ' + Me.OPT_FILE_NAME_REPLACE.AutoSize = True + Me.OPT_FILE_NAME_REPLACE.Dock = System.Windows.Forms.DockStyle.Fill + Me.OPT_FILE_NAME_REPLACE.Location = New System.Drawing.Point(197, 4) + Me.OPT_FILE_NAME_REPLACE.Name = "OPT_FILE_NAME_REPLACE" + Me.OPT_FILE_NAME_REPLACE.Size = New System.Drawing.Size(186, 18) + Me.OPT_FILE_NAME_REPLACE.TabIndex = 1 + Me.OPT_FILE_NAME_REPLACE.TabStop = True + Me.OPT_FILE_NAME_REPLACE.Text = "Replace file name by date" + Me.OPT_FILE_NAME_REPLACE.UseVisualStyleBackColor = True + ' + 'OPT_FILE_NAME_ADD_DATE + ' + Me.OPT_FILE_NAME_ADD_DATE.AutoSize = True + Me.OPT_FILE_NAME_ADD_DATE.Dock = System.Windows.Forms.DockStyle.Fill + Me.OPT_FILE_NAME_ADD_DATE.Location = New System.Drawing.Point(390, 4) + Me.OPT_FILE_NAME_ADD_DATE.Name = "OPT_FILE_NAME_ADD_DATE" + Me.OPT_FILE_NAME_ADD_DATE.Size = New System.Drawing.Size(188, 18) + Me.OPT_FILE_NAME_ADD_DATE.TabIndex = 2 + Me.OPT_FILE_NAME_ADD_DATE.TabStop = True + Me.OPT_FILE_NAME_ADD_DATE.Text = "Add date/time to file name" + Me.OPT_FILE_NAME_ADD_DATE.UseVisualStyleBackColor = True + ' + 'CH_FILE_NAME_CHANGE + ' + Me.CH_FILE_NAME_CHANGE.AutoSize = True + Me.CH_FILE_NAME_CHANGE.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_FILE_NAME_CHANGE.Location = New System.Drawing.Point(4, 4) + Me.CH_FILE_NAME_CHANGE.Name = "CH_FILE_NAME_CHANGE" + Me.CH_FILE_NAME_CHANGE.Size = New System.Drawing.Size(186, 18) + Me.CH_FILE_NAME_CHANGE.TabIndex = 0 + Me.CH_FILE_NAME_CHANGE.Text = "Change file names" + Me.CH_FILE_NAME_CHANGE.UseVisualStyleBackColor = True + ' + 'TP_FILE_PATTERNS + ' + TP_FILE_PATTERNS.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] + TP_FILE_PATTERNS.ColumnCount = 5 + TP_FILE_PATTERNS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0!)) + TP_FILE_PATTERNS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0!)) + TP_FILE_PATTERNS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0!)) + TP_FILE_PATTERNS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0!)) + TP_FILE_PATTERNS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0!)) + TP_FILE_PATTERNS.Controls.Add(Me.CH_FILE_DATE, 0, 0) + TP_FILE_PATTERNS.Controls.Add(Me.CH_FILE_TIME, 1, 0) + TP_FILE_PATTERNS.Controls.Add(LBL_DATE_POS, 2, 0) + TP_FILE_PATTERNS.Controls.Add(Me.OPT_FILE_DATE_START, 3, 0) + TP_FILE_PATTERNS.Controls.Add(Me.OPT_FILE_DATE_END, 4, 0) + TP_FILE_PATTERNS.Dock = System.Windows.Forms.DockStyle.Fill + TP_FILE_PATTERNS.Location = New System.Drawing.Point(1, 325) + TP_FILE_PATTERNS.Margin = New System.Windows.Forms.Padding(0) + TP_FILE_PATTERNS.Name = "TP_FILE_PATTERNS" + TP_FILE_PATTERNS.RowCount = 1 + TP_FILE_PATTERNS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + TP_FILE_PATTERNS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40.0!)) + TP_FILE_PATTERNS.Size = New System.Drawing.Size(582, 33) + TP_FILE_PATTERNS.TabIndex = 13 + ' + 'CH_FILE_DATE + ' + Me.CH_FILE_DATE.AutoSize = True + Me.CH_FILE_DATE.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_FILE_DATE.Location = New System.Drawing.Point(4, 4) + Me.CH_FILE_DATE.Name = "CH_FILE_DATE" + Me.CH_FILE_DATE.Size = New System.Drawing.Size(109, 25) + Me.CH_FILE_DATE.TabIndex = 0 + Me.CH_FILE_DATE.Text = "Date" + Me.CH_FILE_DATE.UseVisualStyleBackColor = True + ' + 'CH_FILE_TIME + ' + Me.CH_FILE_TIME.AutoSize = True + Me.CH_FILE_TIME.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_FILE_TIME.Location = New System.Drawing.Point(120, 4) + Me.CH_FILE_TIME.Name = "CH_FILE_TIME" + Me.CH_FILE_TIME.Size = New System.Drawing.Size(109, 25) + Me.CH_FILE_TIME.TabIndex = 1 + Me.CH_FILE_TIME.Text = "Time" + Me.CH_FILE_TIME.UseVisualStyleBackColor = True + ' + 'LBL_DATE_POS + ' + LBL_DATE_POS.AutoSize = True + LBL_DATE_POS.Dock = System.Windows.Forms.DockStyle.Fill + LBL_DATE_POS.Location = New System.Drawing.Point(236, 1) + LBL_DATE_POS.Name = "LBL_DATE_POS" + LBL_DATE_POS.Size = New System.Drawing.Size(109, 31) + LBL_DATE_POS.TabIndex = 2 + LBL_DATE_POS.Text = "Date position:" + LBL_DATE_POS.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'OPT_FILE_DATE_START + ' + Me.OPT_FILE_DATE_START.AutoSize = True + Me.OPT_FILE_DATE_START.Dock = System.Windows.Forms.DockStyle.Fill + Me.OPT_FILE_DATE_START.Location = New System.Drawing.Point(352, 4) + Me.OPT_FILE_DATE_START.Name = "OPT_FILE_DATE_START" + Me.OPT_FILE_DATE_START.Size = New System.Drawing.Size(109, 25) + Me.OPT_FILE_DATE_START.TabIndex = 3 + Me.OPT_FILE_DATE_START.TabStop = True + Me.OPT_FILE_DATE_START.Text = "Start" + Me.OPT_FILE_DATE_START.UseVisualStyleBackColor = True + ' + 'OPT_FILE_DATE_END + ' + Me.OPT_FILE_DATE_END.AutoSize = True + Me.OPT_FILE_DATE_END.Dock = System.Windows.Forms.DockStyle.Fill + Me.OPT_FILE_DATE_END.Location = New System.Drawing.Point(468, 4) + Me.OPT_FILE_DATE_END.Name = "OPT_FILE_DATE_END" + Me.OPT_FILE_DATE_END.Size = New System.Drawing.Size(110, 25) + Me.OPT_FILE_DATE_END.TabIndex = 4 + Me.OPT_FILE_DATE_END.TabStop = True + Me.OPT_FILE_DATE_END.Text = "End" + Me.OPT_FILE_DATE_END.UseVisualStyleBackColor = True + ' 'CONTAINER_MAIN ' ' 'CONTAINER_MAIN.ContentPanel ' Me.CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN) - Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(584, 337) + Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(584, 359) 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, 337) + Me.CONTAINER_MAIN.Size = New System.Drawing.Size(584, 384) Me.CONTAINER_MAIN.TabIndex = 0 Me.CONTAINER_MAIN.TopToolStripPanelVisible = False ' @@ -351,14 +554,14 @@ ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(584, 337) + Me.ClientSize = New System.Drawing.Size(584, 384) Me.Controls.Add(Me.CONTAINER_MAIN) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.KeyPreview = True Me.MaximizeBox = False - Me.MaximumSize = New System.Drawing.Size(600, 376) + Me.MaximumSize = New System.Drawing.Size(600, 423) Me.MinimizeBox = False - Me.MinimumSize = New System.Drawing.Size(600, 376) + Me.MinimumSize = New System.Drawing.Size(600, 423) Me.Name = "GlobalSettingsForm" Me.ShowIcon = False Me.ShowInTaskbar = False @@ -377,6 +580,12 @@ CType(Me.TXT_CHANNEL_USER_POST_LIMIT, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TXT_MAX_JOBS_USERS, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TXT_MAX_JOBS_CHANNELS, System.ComponentModel.ISupportInitialize).EndInit() + TP_DEFAULTS.ResumeLayout(False) + TP_DEFAULTS.PerformLayout() + TP_FILE_NAME.ResumeLayout(False) + TP_FILE_NAME.PerformLayout() + TP_FILE_PATTERNS.ResumeLayout(False) + TP_FILE_PATTERNS.PerformLayout() Me.CONTAINER_MAIN.ContentPanel.ResumeLayout(False) Me.CONTAINER_MAIN.ResumeLayout(False) Me.CONTAINER_MAIN.PerformLayout() @@ -394,9 +603,18 @@ Private WithEvents TXT_CHANNELS_COLUMNS As PersonalUtilities.Forms.Controls.TextBoxExtended Private WithEvents TXT_CHANNEL_USER_POST_LIMIT As PersonalUtilities.Forms.Controls.TextBoxExtended Private WithEvents CH_COPY_CHANNEL_USER_IMAGE As CheckBox - Private WithEvents CH_DEF_TEMP As CheckBox Private WithEvents CH_CHECK_VER_START As CheckBox Private WithEvents TXT_MAX_JOBS_USERS As PersonalUtilities.Forms.Controls.TextBoxExtended Private WithEvents TXT_MAX_JOBS_CHANNELS As PersonalUtilities.Forms.Controls.TextBoxExtended + Private WithEvents CH_DEF_TEMP As CheckBox + Private WithEvents CH_DOWN_IMAGES As CheckBox + Private WithEvents CH_DOWN_VIDEOS As CheckBox + Private WithEvents OPT_FILE_NAME_REPLACE As RadioButton + Private WithEvents OPT_FILE_NAME_ADD_DATE As RadioButton + Private WithEvents CH_FILE_DATE As CheckBox + Private WithEvents CH_FILE_TIME As CheckBox + Private WithEvents OPT_FILE_DATE_START As RadioButton + Private WithEvents OPT_FILE_DATE_END As RadioButton + Private WithEvents CH_FILE_NAME_CHANGE As CheckBox End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/GlobalSettingsForm.resx b/SCrawler/Editors/GlobalSettingsForm.resx index ff243d2..b3a1ead 100644 --- a/SCrawler/Editors/GlobalSettingsForm.resx +++ b/SCrawler/Editors/GlobalSettingsForm.resx @@ -197,4 +197,16 @@ If checked then videos will be stored in separated folder; otherwise, videos wil VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg== + + False + + + False + + + False + + + False + \ No newline at end of file diff --git a/SCrawler/Editors/GlobalSettingsForm.vb b/SCrawler/Editors/GlobalSettingsForm.vb index 0734f49..d5df348 100644 --- a/SCrawler/Editors/GlobalSettingsForm.vb +++ b/SCrawler/Editors/GlobalSettingsForm.vb @@ -20,7 +20,9 @@ Namespace Editors TXT_IMAGE_SMALL.Value = .MaxSmallImageHeigh.Value TXT_COLLECTIONS_PATH.Text = .CollectionsPath CH_SEPARATE_VIDEO_FOLDER.Checked = .SeparateVideoFolder.Value - CH_DEF_TEMP.Checked = .DefaultTemporary.Value + CH_DEF_TEMP.Checked = .DefaultTemporary + CH_DOWN_IMAGES.Checked = .DefaultDownloadImages + CH_DOWN_VIDEOS.Checked = .DefaultDownloadVideos TXT_CHANNELS_COLUMNS.Value = .ChannelsImagesColumns.Value TXT_CHANNELS_ROWS.Value = .ChannelsImagesRows.Value TXT_CHANNEL_USER_POST_LIMIT.Value = .FromChannelDownloadTop.Value @@ -29,6 +31,14 @@ Namespace Editors CH_CHECK_VER_START.Checked = .CheckUpdatesAtStart TXT_MAX_JOBS_USERS.Value = .MaxUsersJobsCount.Value TXT_MAX_JOBS_CHANNELS.Value = .ChannelsMaxJobsCount.Value + + CH_FILE_NAME_CHANGE.Checked = .FileReplaceNameByDate Or .FileAddDateToFileName Or .FileAddTimeToFileName + OPT_FILE_NAME_REPLACE.Checked = .FileReplaceNameByDate + OPT_FILE_NAME_ADD_DATE.Checked = Not .FileReplaceNameByDate + CH_FILE_DATE.Checked = .FileAddDateToFileName + CH_FILE_TIME.Checked = .FileAddTimeToFileName + OPT_FILE_DATE_START.Checked = Not .FileDateTimePositionEnd + OPT_FILE_DATE_END.Checked = .FileDateTimePositionEnd End With .MyFieldsChecker = New FieldsChecker With .MyFieldsChecker @@ -38,6 +48,7 @@ Namespace Editors End With .AppendDetectors() .EndLoaderOperations() + ChangeFileNameChangersEnabling() End With Catch ex As Exception MyDefs.InvokeLoaderError(ex) @@ -66,6 +77,13 @@ Namespace Editors Case 2 : Exit Sub End Select End If + + If CH_FILE_NAME_CHANGE.Checked And (Not CH_FILE_DATE.Checked Or Not CH_FILE_TIME.Checked) Then + MsgBoxE({"You must select at least one option (Date and/or Time) if you want to change file names by date or disable file names changes", + "File name options"}, vbCritical) + Exit Sub + End If + .BeginUpdate() .GlobalPath.Value = TXT_GLOBAL_PATH.Text .MaxLargeImageHeigh.Value = CInt(TXT_IMAGE_LARGE.Value) @@ -73,6 +91,8 @@ Namespace Editors .SeparateVideoFolder.Value = CH_SEPARATE_VIDEO_FOLDER.Checked .CollectionsPath.Value = TXT_COLLECTIONS_PATH.Text .DefaultTemporary.Value = CH_DEF_TEMP.Checked + .DefaultDownloadImages.Value = CH_DOWN_IMAGES.Checked + .DefaultDownloadVideos.Value = CH_DOWN_VIDEOS.Checked .ChannelsImagesRows.Value = CInt(TXT_CHANNELS_ROWS.Value) .ChannelsImagesColumns.Value = CInt(TXT_CHANNELS_COLUMNS.Value) .FromChannelDownloadTopUse.Value = TXT_CHANNEL_USER_POST_LIMIT.Checked @@ -80,6 +100,18 @@ Namespace Editors .FromChannelCopyImageToUser.Value = CH_COPY_CHANNEL_USER_IMAGE.Checked .CheckUpdatesAtStart.Value = CH_CHECK_VER_START.Checked .MaxUsersJobsCount.Value = CInt(TXT_MAX_JOBS_USERS.Value) + + If CH_FILE_NAME_CHANGE.Checked Then + .FileReplaceNameByDate.Value = OPT_FILE_NAME_REPLACE.Checked + .FileAddDateToFileName.Value = CH_FILE_DATE.Checked + .FileAddTimeToFileName.Value = CH_FILE_TIME.Checked + .FileDateTimePositionEnd.Value = OPT_FILE_DATE_END.Checked + Else + .FileAddDateToFileName.Value = False + .FileAddTimeToFileName.Value = False + .FileReplaceNameByDate.Value = False + End If + .EndUpdate() End With MyDefs.CloseForm() @@ -100,5 +132,27 @@ Namespace Editors Private Sub TXT_MAX_JOBS_CHANNELS_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_MAX_JOBS_CHANNELS.ActionOnButtonClick If Sender.DefaultButton = ActionButton.DefaultButtons.Refresh Then TXT_MAX_JOBS_CHANNELS.Value = SettingsCLS.DefaultMaxDownloadingTasks End Sub + Private Sub CH_FILE_NAME_CHANGE_CheckedChanged(sender As Object, e As EventArgs) Handles CH_FILE_NAME_CHANGE.CheckedChanged + ChangeFileNameChangersEnabling() + End Sub + Private Sub OPT_FILE_NAME_REPLACE_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_FILE_NAME_REPLACE.CheckedChanged + ChangePositionControlsEnabling() + End Sub + Private Sub OPT_FILE_NAME_ADD_DATE_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_FILE_NAME_ADD_DATE.CheckedChanged + ChangePositionControlsEnabling() + End Sub + Private Sub ChangePositionControlsEnabling() + Dim b As Boolean = OPT_FILE_NAME_ADD_DATE.Checked And OPT_FILE_NAME_ADD_DATE.Enabled + OPT_FILE_DATE_START.Enabled = b + OPT_FILE_DATE_END.Enabled = b + End Sub + Private Sub ChangeFileNameChangersEnabling() + Dim b As Boolean = CH_FILE_NAME_CHANGE.Checked + OPT_FILE_NAME_REPLACE.Enabled = b + OPT_FILE_NAME_ADD_DATE.Enabled = b + CH_FILE_DATE.Enabled = b + CH_FILE_TIME.Enabled = b + ChangePositionControlsEnabling() + End Sub End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/UserCreatorForm.Designer.vb b/SCrawler/Editors/UserCreatorForm.Designer.vb index 2dc692d..f3809d0 100644 --- a/SCrawler/Editors/UserCreatorForm.Designer.vb +++ b/SCrawler/Editors/UserCreatorForm.Designer.vb @@ -23,6 +23,7 @@ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(UserCreatorForm)) Dim ActionButton2 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() Dim ActionButton3 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim TP_DOWN_OPTIONS As System.Windows.Forms.TableLayoutPanel Dim TT_MAIN As System.Windows.Forms.ToolTip Me.TXT_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.OPT_REDDIT = New System.Windows.Forms.RadioButton() @@ -37,11 +38,14 @@ Me.CH_ADD_BY_LIST = New System.Windows.Forms.CheckBox() Me.CH_AUTO_DETECT_SITE = New System.Windows.Forms.CheckBox() Me.TXT_LABELS = New PersonalUtilities.Forms.Controls.TextBoxExtended() + Me.CH_DOWN_IMAGES = New System.Windows.Forms.CheckBox() + Me.CH_DOWN_VIDEOS = New System.Windows.Forms.CheckBox() Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() TP_MAIN = New System.Windows.Forms.TableLayoutPanel() TP_SITE = New System.Windows.Forms.TableLayoutPanel() TP_PARAMS = New System.Windows.Forms.TableLayoutPanel() TP_OTHER = New System.Windows.Forms.TableLayoutPanel() + TP_DOWN_OPTIONS = New System.Windows.Forms.TableLayoutPanel() TT_MAIN = New System.Windows.Forms.ToolTip(Me.components) TP_MAIN.SuspendLayout() CType(Me.TXT_USER, System.ComponentModel.ISupportInitialize).BeginInit() @@ -52,6 +56,7 @@ CType(Me.TXT_USER_FRIENDLY, System.ComponentModel.ISupportInitialize).BeginInit() Me.TP_ADD_BY_LIST.SuspendLayout() CType(Me.TXT_LABELS, System.ComponentModel.ISupportInitialize).BeginInit() + TP_DOWN_OPTIONS.SuspendLayout() Me.CONTAINER_MAIN.ContentPanel.SuspendLayout() Me.CONTAINER_MAIN.SuspendLayout() Me.SuspendLayout() @@ -64,24 +69,26 @@ TP_MAIN.Controls.Add(Me.TXT_USER, 0, 0) TP_MAIN.Controls.Add(TP_SITE, 0, 2) TP_MAIN.Controls.Add(TP_PARAMS, 0, 3) - TP_MAIN.Controls.Add(TP_OTHER, 0, 4) - TP_MAIN.Controls.Add(Me.TXT_DESCR, 0, 7) + TP_MAIN.Controls.Add(TP_OTHER, 0, 5) + TP_MAIN.Controls.Add(Me.TXT_DESCR, 0, 8) TP_MAIN.Controls.Add(Me.TXT_USER_FRIENDLY, 0, 1) - TP_MAIN.Controls.Add(Me.TP_ADD_BY_LIST, 0, 5) - TP_MAIN.Controls.Add(Me.TXT_LABELS, 0, 6) + TP_MAIN.Controls.Add(Me.TP_ADD_BY_LIST, 0, 6) + TP_MAIN.Controls.Add(Me.TXT_LABELS, 0, 7) + TP_MAIN.Controls.Add(TP_DOWN_OPTIONS, 0, 4) TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill TP_MAIN.Location = New System.Drawing.Point(0, 0) TP_MAIN.Name = "TP_MAIN" - TP_MAIN.RowCount = 8 + TP_MAIN.RowCount = 9 TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 19.99851!)) - TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66542!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!)) TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 150.0!)) - TP_MAIN.Size = New System.Drawing.Size(454, 366) + TP_MAIN.Size = New System.Drawing.Size(454, 378) TP_MAIN.TabIndex = 0 ' 'TXT_USER @@ -109,8 +116,8 @@ TP_SITE.Name = "TP_SITE" TP_SITE.RowCount = 1 TP_SITE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_SITE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29.0!)) - TP_SITE.Size = New System.Drawing.Size(452, 30) + TP_SITE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + TP_SITE.Size = New System.Drawing.Size(452, 27) TP_SITE.TabIndex = 2 ' 'OPT_REDDIT @@ -119,7 +126,7 @@ Me.OPT_REDDIT.Dock = System.Windows.Forms.DockStyle.Fill Me.OPT_REDDIT.Location = New System.Drawing.Point(4, 4) Me.OPT_REDDIT.Name = "OPT_REDDIT" - Me.OPT_REDDIT.Size = New System.Drawing.Size(218, 22) + Me.OPT_REDDIT.Size = New System.Drawing.Size(218, 19) Me.OPT_REDDIT.TabIndex = 0 Me.OPT_REDDIT.TabStop = True Me.OPT_REDDIT.Text = "Reddit" @@ -131,7 +138,7 @@ Me.OPT_TWITTER.Dock = System.Windows.Forms.DockStyle.Fill Me.OPT_TWITTER.Location = New System.Drawing.Point(229, 4) Me.OPT_TWITTER.Name = "OPT_TWITTER" - Me.OPT_TWITTER.Size = New System.Drawing.Size(219, 22) + Me.OPT_TWITTER.Size = New System.Drawing.Size(219, 19) Me.OPT_TWITTER.TabIndex = 1 Me.OPT_TWITTER.TabStop = True Me.OPT_TWITTER.Text = "Twitter" @@ -146,13 +153,13 @@ TP_PARAMS.Controls.Add(Me.CH_TEMP, 0, 0) TP_PARAMS.Controls.Add(Me.CH_FAV, 1, 0) TP_PARAMS.Dock = System.Windows.Forms.DockStyle.Fill - TP_PARAMS.Location = New System.Drawing.Point(1, 90) + TP_PARAMS.Location = New System.Drawing.Point(1, 87) TP_PARAMS.Margin = New System.Windows.Forms.Padding(0) TP_PARAMS.Name = "TP_PARAMS" TP_PARAMS.RowCount = 1 TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29.0!)) - TP_PARAMS.Size = New System.Drawing.Size(452, 30) + TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + TP_PARAMS.Size = New System.Drawing.Size(452, 27) TP_PARAMS.TabIndex = 3 ' 'CH_TEMP @@ -161,7 +168,7 @@ Me.CH_TEMP.Dock = System.Windows.Forms.DockStyle.Fill Me.CH_TEMP.Location = New System.Drawing.Point(4, 4) Me.CH_TEMP.Name = "CH_TEMP" - Me.CH_TEMP.Size = New System.Drawing.Size(218, 22) + Me.CH_TEMP.Size = New System.Drawing.Size(218, 19) Me.CH_TEMP.TabIndex = 0 Me.CH_TEMP.Text = "Temporary" Me.CH_TEMP.UseVisualStyleBackColor = True @@ -172,7 +179,7 @@ Me.CH_FAV.Dock = System.Windows.Forms.DockStyle.Fill Me.CH_FAV.Location = New System.Drawing.Point(229, 4) Me.CH_FAV.Name = "CH_FAV" - Me.CH_FAV.Size = New System.Drawing.Size(219, 22) + Me.CH_FAV.Size = New System.Drawing.Size(219, 19) Me.CH_FAV.TabIndex = 1 Me.CH_FAV.Text = "Favorite" Me.CH_FAV.UseVisualStyleBackColor = True @@ -186,14 +193,14 @@ TP_OTHER.Controls.Add(Me.CH_PARSE_USER_MEDIA, 1, 0) TP_OTHER.Controls.Add(Me.CH_READY_FOR_DOWN, 0, 0) TP_OTHER.Dock = System.Windows.Forms.DockStyle.Fill - TP_OTHER.Location = New System.Drawing.Point(1, 121) + TP_OTHER.Location = New System.Drawing.Point(1, 143) TP_OTHER.Margin = New System.Windows.Forms.Padding(0) TP_OTHER.Name = "TP_OTHER" TP_OTHER.RowCount = 1 TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29.0!)) - TP_OTHER.Size = New System.Drawing.Size(452, 30) - TP_OTHER.TabIndex = 4 + TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + TP_OTHER.Size = New System.Drawing.Size(452, 27) + TP_OTHER.TabIndex = 5 ' 'CH_PARSE_USER_MEDIA ' @@ -201,7 +208,7 @@ Me.CH_PARSE_USER_MEDIA.Dock = System.Windows.Forms.DockStyle.Fill Me.CH_PARSE_USER_MEDIA.Location = New System.Drawing.Point(229, 4) Me.CH_PARSE_USER_MEDIA.Name = "CH_PARSE_USER_MEDIA" - Me.CH_PARSE_USER_MEDIA.Size = New System.Drawing.Size(219, 22) + Me.CH_PARSE_USER_MEDIA.Size = New System.Drawing.Size(219, 19) Me.CH_PARSE_USER_MEDIA.TabIndex = 0 Me.CH_PARSE_USER_MEDIA.Text = "Get user media only" TT_MAIN.SetToolTip(Me.CH_PARSE_USER_MEDIA, "For twitter only!" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "If checked then user media only will be downloaded." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Otherwise" & @@ -214,7 +221,7 @@ Me.CH_READY_FOR_DOWN.Dock = System.Windows.Forms.DockStyle.Fill Me.CH_READY_FOR_DOWN.Location = New System.Drawing.Point(4, 4) Me.CH_READY_FOR_DOWN.Name = "CH_READY_FOR_DOWN" - Me.CH_READY_FOR_DOWN.Size = New System.Drawing.Size(218, 22) + Me.CH_READY_FOR_DOWN.Size = New System.Drawing.Size(218, 19) Me.CH_READY_FOR_DOWN.TabIndex = 1 Me.CH_READY_FOR_DOWN.Text = "Ready for download" TT_MAIN.SetToolTip(Me.CH_READY_FOR_DOWN, "Can be downloaded by [Download All]") @@ -233,11 +240,11 @@ Me.TXT_DESCR.Dock = System.Windows.Forms.DockStyle.Fill Me.TXT_DESCR.GroupBoxed = True Me.TXT_DESCR.GroupBoxText = "Description" - Me.TXT_DESCR.Location = New System.Drawing.Point(4, 217) + Me.TXT_DESCR.Location = New System.Drawing.Point(4, 229) Me.TXT_DESCR.Multiline = True Me.TXT_DESCR.Name = "TXT_DESCR" Me.TXT_DESCR.Size = New System.Drawing.Size(446, 145) - Me.TXT_DESCR.TabIndex = 5 + Me.TXT_DESCR.TabIndex = 8 ' 'TXT_USER_FRIENDLY ' @@ -258,12 +265,12 @@ Me.TP_ADD_BY_LIST.Controls.Add(Me.CH_ADD_BY_LIST, 0, 0) Me.TP_ADD_BY_LIST.Controls.Add(Me.CH_AUTO_DETECT_SITE, 1, 0) Me.TP_ADD_BY_LIST.Dock = System.Windows.Forms.DockStyle.Fill - Me.TP_ADD_BY_LIST.Location = New System.Drawing.Point(1, 152) + Me.TP_ADD_BY_LIST.Location = New System.Drawing.Point(1, 171) Me.TP_ADD_BY_LIST.Margin = New System.Windows.Forms.Padding(0) Me.TP_ADD_BY_LIST.Name = "TP_ADD_BY_LIST" Me.TP_ADD_BY_LIST.RowCount = 1 Me.TP_ADD_BY_LIST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - Me.TP_ADD_BY_LIST.Size = New System.Drawing.Size(452, 30) + Me.TP_ADD_BY_LIST.Size = New System.Drawing.Size(452, 26) Me.TP_ADD_BY_LIST.TabIndex = 6 ' 'CH_ADD_BY_LIST @@ -272,7 +279,7 @@ Me.CH_ADD_BY_LIST.Dock = System.Windows.Forms.DockStyle.Fill Me.CH_ADD_BY_LIST.Location = New System.Drawing.Point(4, 4) Me.CH_ADD_BY_LIST.Name = "CH_ADD_BY_LIST" - Me.CH_ADD_BY_LIST.Size = New System.Drawing.Size(218, 22) + Me.CH_ADD_BY_LIST.Size = New System.Drawing.Size(218, 18) Me.CH_ADD_BY_LIST.TabIndex = 0 Me.CH_ADD_BY_LIST.Text = "Add by list" Me.CH_ADD_BY_LIST.UseVisualStyleBackColor = True @@ -283,7 +290,7 @@ Me.CH_AUTO_DETECT_SITE.Dock = System.Windows.Forms.DockStyle.Fill Me.CH_AUTO_DETECT_SITE.Location = New System.Drawing.Point(229, 4) Me.CH_AUTO_DETECT_SITE.Name = "CH_AUTO_DETECT_SITE" - Me.CH_AUTO_DETECT_SITE.Size = New System.Drawing.Size(219, 22) + Me.CH_AUTO_DETECT_SITE.Size = New System.Drawing.Size(219, 18) Me.CH_AUTO_DETECT_SITE.TabIndex = 1 Me.CH_AUTO_DETECT_SITE.Text = "Auto detect site" Me.CH_AUTO_DETECT_SITE.UseVisualStyleBackColor = True @@ -301,25 +308,65 @@ Me.TXT_LABELS.CaptionText = "Labels" Me.TXT_LABELS.CaptionWidth = 50.0R Me.TXT_LABELS.Dock = System.Windows.Forms.DockStyle.Fill - Me.TXT_LABELS.Location = New System.Drawing.Point(4, 186) + Me.TXT_LABELS.Location = New System.Drawing.Point(4, 201) Me.TXT_LABELS.Name = "TXT_LABELS" Me.TXT_LABELS.Size = New System.Drawing.Size(446, 22) Me.TXT_LABELS.TabIndex = 7 Me.TXT_LABELS.TextBoxReadOnly = True ' + 'TP_DOWN_OPTIONS + ' + TP_DOWN_OPTIONS.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single] + TP_DOWN_OPTIONS.ColumnCount = 2 + TP_DOWN_OPTIONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + TP_DOWN_OPTIONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!)) + TP_DOWN_OPTIONS.Controls.Add(Me.CH_DOWN_IMAGES, 0, 0) + TP_DOWN_OPTIONS.Controls.Add(Me.CH_DOWN_VIDEOS, 1, 0) + TP_DOWN_OPTIONS.Dock = System.Windows.Forms.DockStyle.Fill + TP_DOWN_OPTIONS.Location = New System.Drawing.Point(1, 115) + TP_DOWN_OPTIONS.Margin = New System.Windows.Forms.Padding(0) + TP_DOWN_OPTIONS.Name = "TP_DOWN_OPTIONS" + TP_DOWN_OPTIONS.RowCount = 1 + TP_DOWN_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + TP_DOWN_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!)) + TP_DOWN_OPTIONS.Size = New System.Drawing.Size(452, 27) + TP_DOWN_OPTIONS.TabIndex = 4 + ' + 'CH_DOWN_IMAGES + ' + Me.CH_DOWN_IMAGES.AutoSize = True + Me.CH_DOWN_IMAGES.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_DOWN_IMAGES.Location = New System.Drawing.Point(4, 4) + Me.CH_DOWN_IMAGES.Name = "CH_DOWN_IMAGES" + Me.CH_DOWN_IMAGES.Size = New System.Drawing.Size(218, 19) + Me.CH_DOWN_IMAGES.TabIndex = 0 + Me.CH_DOWN_IMAGES.Text = "Download Images" + Me.CH_DOWN_IMAGES.UseVisualStyleBackColor = True + ' + 'CH_DOWN_VIDEOS + ' + Me.CH_DOWN_VIDEOS.AutoSize = True + Me.CH_DOWN_VIDEOS.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_DOWN_VIDEOS.Location = New System.Drawing.Point(229, 4) + Me.CH_DOWN_VIDEOS.Name = "CH_DOWN_VIDEOS" + Me.CH_DOWN_VIDEOS.Size = New System.Drawing.Size(219, 19) + Me.CH_DOWN_VIDEOS.TabIndex = 1 + Me.CH_DOWN_VIDEOS.Text = "Download videos" + Me.CH_DOWN_VIDEOS.UseVisualStyleBackColor = True + ' 'CONTAINER_MAIN ' ' 'CONTAINER_MAIN.ContentPanel ' Me.CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN) - Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(454, 366) + Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(454, 378) 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(454, 366) + Me.CONTAINER_MAIN.Size = New System.Drawing.Size(454, 403) Me.CONTAINER_MAIN.TabIndex = 0 Me.CONTAINER_MAIN.TopToolStripPanelVisible = False ' @@ -327,15 +374,15 @@ ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(454, 366) + Me.ClientSize = New System.Drawing.Size(454, 403) Me.Controls.Add(Me.CONTAINER_MAIN) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.KeyPreview = True Me.MaximizeBox = False - Me.MaximumSize = New System.Drawing.Size(470, 405) + Me.MaximumSize = New System.Drawing.Size(470, 442) Me.MinimizeBox = False - Me.MinimumSize = New System.Drawing.Size(470, 405) + Me.MinimumSize = New System.Drawing.Size(470, 442) Me.Name = "UserCreatorForm" Me.ShowInTaskbar = False Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide @@ -353,6 +400,8 @@ Me.TP_ADD_BY_LIST.ResumeLayout(False) Me.TP_ADD_BY_LIST.PerformLayout() CType(Me.TXT_LABELS, System.ComponentModel.ISupportInitialize).EndInit() + TP_DOWN_OPTIONS.ResumeLayout(False) + TP_DOWN_OPTIONS.PerformLayout() Me.CONTAINER_MAIN.ContentPanel.ResumeLayout(False) Me.CONTAINER_MAIN.ResumeLayout(False) Me.CONTAINER_MAIN.PerformLayout() @@ -374,5 +423,7 @@ Private WithEvents CH_ADD_BY_LIST As CheckBox Private WithEvents CH_AUTO_DETECT_SITE As CheckBox Private WithEvents TXT_LABELS As PersonalUtilities.Forms.Controls.TextBoxExtended + Private WithEvents CH_DOWN_IMAGES As CheckBox + Private WithEvents CH_DOWN_VIDEOS As CheckBox End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/UserCreatorForm.resx b/SCrawler/Editors/UserCreatorForm.resx index d566329..bdba578 100644 --- a/SCrawler/Editors/UserCreatorForm.resx +++ b/SCrawler/Editors/UserCreatorForm.resx @@ -163,6 +163,9 @@ AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC + + False + AAABAAkAMDAQAAAAAABoBgAAlgAAACAgEAAAAAAA6AIAAP4GAAAQEBAAAAAAACgBAADmCQAAMDAAAAEA diff --git a/SCrawler/Editors/UserCreatorForm.vb b/SCrawler/Editors/UserCreatorForm.vb index 980bf88..72a9f05 100644 --- a/SCrawler/Editors/UserCreatorForm.vb +++ b/SCrawler/Editors/UserCreatorForm.vb @@ -38,6 +38,16 @@ Namespace Editors Return CH_READY_FOR_DOWN.Checked End Get End Property + Friend ReadOnly Property DownloadImages As Boolean + Get + Return CH_DOWN_IMAGES.Checked + End Get + End Property + Friend ReadOnly Property DownloadVideos As Boolean + Get + Return CH_DOWN_VIDEOS.Checked + End Get + End Property Friend ReadOnly Property UserDescr As String Get Return TXT_DESCR.Text @@ -75,7 +85,9 @@ Namespace Editors OPT_TWITTER.Checked = False CH_PARSE_USER_MEDIA.Enabled = False CH_READY_FOR_DOWN.Checked = True - CH_TEMP.Checked = Settings.DefaultTemporary.Value + CH_TEMP.Checked = Settings.DefaultTemporary + CH_DOWN_IMAGES.Checked = Settings.DefaultDownloadImages + CH_DOWN_VIDEOS.Checked = Settings.DefaultDownloadVideos Else TP_ADD_BY_LIST.Enabled = False TXT_USER.Text = User.Name @@ -93,16 +105,22 @@ Namespace Editors CH_TEMP.Checked = .Temporary CH_PARSE_USER_MEDIA.Checked = .ParseUserMediaOnly CH_READY_FOR_DOWN.Checked = .ReadyForDownload + CH_DOWN_IMAGES.Checked = .DownloadImages + CH_DOWN_VIDEOS.Checked = .DownloadedVideos TXT_DESCR.Text = .Description UserLabels.ListAddList(.Labels) If UserLabels.ListExists Then TXT_LABELS.Text = UserLabels.ListToString End With + Else + CH_READY_FOR_DOWN.Checked = Settings.DefaultTemporary + CH_DOWN_IMAGES.Checked = Settings.DefaultDownloadImages + CH_DOWN_VIDEOS.Checked = Settings.DefaultDownloadVideos End If End If .MyFieldsChecker = New FieldsChecker .MyFieldsChecker.AddControl(Of String)(TXT_USER, TXT_USER.CaptionText) .MyFieldsChecker.EndLoaderOperations() - TextBoxExtended.SetFalseDetector(Me, True, AddressOf .Detector) + .AppendDetectors() .EndLoaderOperations() End With Catch ex As Exception @@ -141,6 +159,8 @@ Namespace Editors .Favorite = CH_FAV.Checked .Temporary = CH_TEMP.Checked .ReadyForDownload = CH_READY_FOR_DOWN.Checked + .DownloadImages = CH_DOWN_IMAGES.Checked + .DownloadVideos = CH_DOWN_VIDEOS.Checked .UserDescription = TXT_DESCR.Text Dim l As New ListAddParams(LAP.NotContainsOnly + LAP.ClearBeforeAdd) If .IsCollection Then @@ -299,6 +319,8 @@ CloseForm: .Favorite = CH_FAV.Checked .Temporary = CH_TEMP.Checked .ReadyForDownload = CH_READY_FOR_DOWN.Checked + .DownloadImages = CH_DOWN_IMAGES.Checked + .DownloadVideos = CH_DOWN_VIDEOS.Checked .Labels.ListAddList(UserLabels) If s = Sites.Twitter Then .ParseUserMediaOnly = CH_PARSE_USER_MEDIA.Checked .UpdateUserInformation() diff --git a/SCrawler/MainFrame.vb b/SCrawler/MainFrame.vb index cb3c051..0576df6 100644 --- a/SCrawler/MainFrame.vb +++ b/SCrawler/MainFrame.vb @@ -246,6 +246,8 @@ CloseResume: .Temporary = f.UserTemporary .ParseUserMediaOnly = f.UserMediaOnly .ReadyForDownload = f.UserReady + .DownloadImages = f.DownloadImages + .DownloadVideos = f.DownloadVideos .FriendlyName = f.UserFriendly .Description = f.UserDescr .Labels.ListAddList(f.UserLabels, LAP.ClearBeforeAdd, LAP.NotContainsOnly) @@ -812,7 +814,7 @@ ResumeDownloadingOperation: End If End Sub Private Sub Downloader_OnDownloading(ByVal Value As Boolean) - Dim a As Action = Sub() BTT_DOWN_STOP.Enabled = Not Value + Dim a As Action = Sub() BTT_DOWN_STOP.Enabled = Value If Toolbar_TOP.InvokeRequired Then Toolbar_TOP.Invoke(a) Else a.Invoke End Sub End Class \ No newline at end of file diff --git a/SCrawler/MainMod.vb b/SCrawler/MainMod.vb index ed5aa7a..8af08f8 100644 --- a/SCrawler/MainMod.vb +++ b/SCrawler/MainMod.vb @@ -27,6 +27,17 @@ Friend Module MainMod Friend InfoForm As DownloadedInfoForm Friend VideoDownloader As VideosDownloaderForm Friend ReadOnly ParsersDataDateProvider As New ADateTime(ADateTime.Formats.BaseDateTime) +#Region "File name operations" + Friend FileDateAppenderProvider As IFormatProvider + ''' File, Date + Friend FileDateAppenderPattern As String + Friend Class NumberedFile : Inherits SFileNumbers + Friend Sub New(ByVal f As SFile) + FileName = f.Name + NumberProvider = New ANumbers With {.FormatMode = ANumbers.Formats.NumberGroup, .GroupSize = 5} + End Sub + End Class +#End Region Friend Property MainProgress As PersonalUtilities.Forms.Toolbars.MyProgress Friend Function GetLviGroupName(ByVal Site As Sites, ByVal Temp As Boolean, ByVal Fav As Boolean, ByVal IsCollection As Boolean) As String Dim Opt$ = String.Empty @@ -144,6 +155,7 @@ Friend Module MainMod } End Function End Structure +#Region "Image Handlers management" Friend Sub ImageHandler(ByVal User As IUserData) ImageHandler(User, False) ImageHandler(User, True) @@ -164,6 +176,8 @@ Friend Module MainMod Catch ex As Exception End Try End Sub +#End Region +#Region "Standalone video download functions" Friend Function GetCurrentBuffer() As String Dim b$ = BufferText If Not (Not b.IsEmptyString AndAlso b.Length > 4 AndAlso b.StartsWith("http")) Then b = String.Empty @@ -245,6 +259,8 @@ Friend Module MainMod Return ErrorsDescriber.Execute(e, ex, "Downloading video by URL error", False) End Try End Function +#End Region +#Region "Blacklist Support" Friend Structure UserBan Friend ReadOnly Name As String Friend ReadOnly Reason As String @@ -330,4 +346,5 @@ Friend Module MainMod Friend Function UserBanned(ByVal UserName As String) As Boolean Return UserBanned({UserName}).ListExists End Function +#End Region End Module \ No newline at end of file diff --git a/SCrawler/My Project/AssemblyInfo.vb b/SCrawler/My Project/AssemblyInfo.vb index d9d4da2..12fa90e 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 5ff9da4..2c590d4 100644 --- a/SCrawler/SettingsCLS.vb +++ b/SCrawler/SettingsCLS.vb @@ -44,9 +44,17 @@ Friend Class SettingsCLS : Implements IDisposable SeparateVideoFolder = New XMLValue(Of Boolean)("SeparateVideoFolder", True, MyXML) CollectionsPath = New XMLValue(Of String)("CollectionsPath", "Collections", MyXML) - DefaultTemporary = New XMLValue(Of Boolean)("DefaultTemporary", False, MyXML) MaxUsersJobsCount = New XMLValue(Of Integer)("MaxUsersJobsCount", DefaultMaxDownloadingTasks, MyXML) + DefaultTemporary = New XMLValue(Of Boolean)("DefaultTemporary", False, MyXML) + DefaultDownloadImages = New XMLValue(Of Boolean)("DefaultDownloadImages", True, MyXML) + DefaultDownloadVideos = New XMLValue(Of Boolean)("DefaultDownloadVideos", True, MyXML) + + FileAddDateToFileName = New XMLValue(Of Boolean)("FileAddDateToFileName", False, MyXML) With {.OnChangeFunction = AddressOf ChangeDateProvider} + FileAddTimeToFileName = New XMLValue(Of Boolean)("FileAddTimeToFileName", False, MyXML) With {.OnChangeFunction = AddressOf ChangeDateProvider} + FileDateTimePositionEnd = New XMLValue(Of Boolean)("FileDateTimePositionEnd", True, MyXML) With {.OnChangeFunction = AddressOf ChangeDateProvider} + FileReplaceNameByDate = New XMLValue(Of Boolean)("FileReplaceNameByDate", False, MyXML) + MaxLargeImageHeigh = New XMLValue(Of Integer)("MaxLargeImageHeigh", 150, MyXML) MaxSmallImageHeigh = New XMLValue(Of Integer)("MaxSmallImageHeigh", 15, MyXML) InfoViewMode = New XMLValue(Of Integer)("InfoViewMode", DownloadedInfoForm.ViewModes.Session, MyXML) @@ -77,6 +85,16 @@ Friend Class SettingsCLS : Implements IDisposable BlackList.ListAddList(IO.File.ReadAllLines(BlackListFile), LAP.NotContainsOnly) If BlackList.Count > 0 Then BlackList.RemoveAll(Function(b) Not b.Exists) End If + ChangeDateProvider(Nothing, Nothing, Nothing) + End Sub + Private Sub ChangeDateProvider(ByVal Sender As Object, ByVal Name As String, ByVal Value As Object) + If Not _UpdatesSuspended Then + Dim p$ = String.Empty + If FileAddDateToFileName Then p = "yyyyMMdd" + If FileAddTimeToFileName Then p.StringAppend("HHmmss", "_") + If Not p.IsEmptyString Then FileDateAppenderProvider = New ADateTime(p) Else FileDateAppenderProvider = New ADateTime("yyyyMMdd_HHmmss") + If FileDateTimePositionEnd Then FileDateAppenderPattern = "{0}_{1}" Else FileDateAppenderPattern = "{1}_{0}" + End If End Sub Friend Sub LoadUsers() Try @@ -192,12 +210,16 @@ Friend Class SettingsCLS : Implements IDisposable Friend Overloads Function UserExists(ByVal _User As UserInfo) As Boolean Return UserExists(_User.Site, _User.Name) End Function + Private _UpdatesSuspended As Boolean = False Friend Sub BeginUpdate() MyXML.BeginUpdate() + _UpdatesSuspended = True End Sub Friend Sub EndUpdate() MyXML.EndUpdate() If MyXML.ChangesDetected Then MyXML.UpdateData() + _UpdatesSuspended = False + ChangeDateProvider(Nothing, Nothing, Nothing) End Sub Friend ReadOnly Property Site(ByVal s As Sites) As SiteSettings Get @@ -216,8 +238,18 @@ Friend Class SettingsCLS : Implements IDisposable End If End Get End Property - Friend ReadOnly Property DefaultTemporary As XMLValue(Of Boolean) Friend ReadOnly Property MaxUsersJobsCount As XMLValue(Of Integer) +#Region "Defaults" + Friend ReadOnly Property DefaultTemporary As XMLValue(Of Boolean) + Friend ReadOnly Property DefaultDownloadImages As XMLValue(Of Boolean) + Friend ReadOnly Property DefaultDownloadVideos As XMLValue(Of Boolean) +#End Region +#Region "Additional info" + Friend ReadOnly Property FileAddDateToFileName As XMLValue(Of Boolean) + Friend ReadOnly Property FileAddTimeToFileName As XMLValue(Of Boolean) + Friend ReadOnly Property FileDateTimePositionEnd As XMLValue(Of Boolean) + Friend ReadOnly Property FileReplaceNameByDate As XMLValue(Of Boolean) +#End Region #Region "View" Friend ReadOnly Property MaxLargeImageHeigh As XMLValue(Of Integer) Friend ReadOnly Property MaxSmallImageHeigh As XMLValue(Of Integer) diff --git a/SCrawler/TDownloader.vb b/SCrawler/TDownloader.vb index 3291463..8fb3778 100644 --- a/SCrawler/TDownloader.vb +++ b/SCrawler/TDownloader.vb @@ -99,8 +99,7 @@ Friend Class TDownloader : Implements IDisposable .Information = $"Downloading {_CurrentDownloadingTasks.NumToString(nf, NProv)}/{Items.Count.NumToString(nf, NProv)} profiles' data" .InformationTemporary = .Information End With - Token.ThrowIfCancellationRequested() - Task.WaitAll(t.ToArray, Token) + Task.WaitAll(t.ToArray) Dim dcc As Boolean = False If Keys.Count > 0 Then For Each k$ In Keys @@ -160,8 +159,8 @@ Friend Class TDownloader : Implements IDisposable If Not Items.Contains(Item) Then If Item.IsCollection Then Item.DownloadData(Nothing) Else Items.Add(Item) UpdateJobsLabel() - If Not _Working Then Start() End If + If Items.Count > 0 Then Start() End Sub Friend Sub AddRange(ByVal _Items As IEnumerable(Of IUserData)) If _Items.ListExists Then @@ -170,8 +169,8 @@ Friend Class TDownloader : Implements IDisposable If _Items(i).IsCollection Then _Items(i).DownloadData(Nothing) Else Items.Add(_Items(i)) Next UpdateJobsLabel() - Start() End If + If Items.Count > 0 Then Start() End Sub Friend Sub UserRemove(ByVal _Item As IUserData) If Downloaded.Count > 0 AndAlso Downloaded.Contains(_Item) Then Downloaded.Remove(_Item) : RaiseEvent OnDownloadCountChange()