diff --git a/Changelog.md b/Changelog.md index ba1b3dc..828d6d5 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,16 @@ +# 2024.6.10.0 + +*2024-06-10* + +- Added + - YouTube (standalone app): add option to add extracted MP3 to playlist (`Settings` - `Defaults Video` - `Add extracted MP3 to playlist`) + - Feed + - settings to show/hide site name and file type from media title + - ability to move/copy files of a loaded feed/session to another location + - ability to reset current session +- Fixed + - Minor bugs + # 2024.6.6.0 *2024-06-06* diff --git a/ProgramScreenshots/SettingsGlobalFeed.png b/ProgramScreenshots/SettingsGlobalFeed.png index db6b5b9..9859e9a 100644 Binary files a/ProgramScreenshots/SettingsGlobalFeed.png and b/ProgramScreenshots/SettingsGlobalFeed.png differ diff --git a/SCrawler.YouTube/Base/YouTubeSettings.vb b/SCrawler.YouTube/Base/YouTubeSettings.vb index 912c5bf..9341d55 100644 --- a/SCrawler.YouTube/Base/YouTubeSettings.vb +++ b/SCrawler.YouTube/Base/YouTubeSettings.vb @@ -382,6 +382,9 @@ Namespace API.YouTube.Base Public ReadOnly Property DefaultVideoHighlightFPS_L As XMLValue(Of Integer) + + Public ReadOnly Property VideoPlaylist_AddExtractedMP3 As XMLValue(Of Boolean) #End Region #Region "Defaults Audio" 0 Then - LBL_INFO.Text = $"{ .File.Extension.StringToUpper}{d}{ .Height}p" + If h > 0 Then + LBL_INFO.Text = $"{ .File.Extension.StringToUpper}{d}{h}p" Else LBL_INFO.Text = .File.Extension.StringToUpper End If Else - If .Bitrate > 0 Then - LBL_INFO.Text = $"{ .File.Extension.StringToUpper}{d}{ .Bitrate}k" + If b > 0 Then + LBL_INFO.Text = $"{ .File.Extension.StringToUpper}{d}{b}k" Else LBL_INFO.Text = .File.Extension.StringToUpper End If diff --git a/SCrawler.YouTube/Downloader/VideoListForm.vb b/SCrawler.YouTube/Downloader/VideoListForm.vb index 2fc0226..e55ed7b 100644 --- a/SCrawler.YouTube/Downloader/VideoListForm.vb +++ b/SCrawler.YouTube/Downloader/VideoListForm.vb @@ -57,6 +57,12 @@ Namespace DownloadObjects.STDownloader End If MyNotificator = New YTNotificator(Me) MyDownloaderSettings = MyYouTubeSettings + ProgramLogInitialize() + With ProgramLog + AddHandler .TextAdded, AddressOf ProgramLog_TextAdded + AddHandler .TextCleared, AddressOf ProgramLog_TextCleared + End With + UpdateLogButton() End If With MyView : .Import() : .SetFormSize() : End With @@ -157,7 +163,7 @@ Namespace DownloadObjects.STDownloader If PerformClick Then cnt.PerformClick() If Not DisableDownload And MyDownloaderSettings.DownloadAutomatically Then AddToDownload(cnt, True) End With - End Sub, EDP.None) + End Sub, EDP.SendToLog) End Sub #Region "Controls rendering" Private Overloads Sub OffsetControls() @@ -449,12 +455,26 @@ Namespace DownloadObjects.STDownloader End Try End Sub #End Region +#Region "LOG" Private Sub BTT_LOG_Click(sender As Object, e As EventArgs) Handles BTT_LOG.Click MyMainLOG_ShowForm(DesignXML,,,, AddressOf UpdateLogButton) End Sub - Friend Sub UpdateLogButton() - If AppMode Then MyMainLOG_UpdateLogButton(BTT_LOG, TOOLBAR_TOP) + Private Sub UpdateLogButton() + If AppMode Then + Try : MyMainLOG_UpdateLogButton(BTT_LOG, TOOLBAR_TOP) : Catch : End Try + End If End Sub + Private _LogUpdateButtonSuspended As Boolean = False + Private Sub ProgramLog_TextAdded(ByVal Sender As Object, ByVal e As EventArgs) + If Not _LogUpdateButtonSuspended Then + _LogUpdateButtonSuspended = True + Try : ControlInvokeFast(TOOLBAR_TOP, BTT_LOG, AddressOf UpdateLogButton, EDP.None) : Catch : End Try + End If + End Sub + Private Sub ProgramLog_TextCleared(ByVal Sender As Object, ByVal e As EventArgs) + _LogUpdateButtonSuspended = False + End Sub +#End Region Private Sub BTT_BUG_REPORT_Click(sender As Object, e As EventArgs) Handles BTT_BUG_REPORT.Click Try With MyYouTubeSettings diff --git a/SCrawler.YouTube/My Project/AssemblyInfo.vb b/SCrawler.YouTube/My Project/AssemblyInfo.vb index f936c5c..de27cb4 100644 --- a/SCrawler.YouTube/My Project/AssemblyInfo.vb +++ b/SCrawler.YouTube/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + diff --git a/SCrawler.YouTube/Objects/YouTubeMediaContainerBase.vb b/SCrawler.YouTube/Objects/YouTubeMediaContainerBase.vb index e406d8d..bc8d2c5 100644 --- a/SCrawler.YouTube/Objects/YouTubeMediaContainerBase.vb +++ b/SCrawler.YouTube/Objects/YouTubeMediaContainerBase.vb @@ -267,12 +267,11 @@ Namespace API.YouTube.Objects Friend ReadOnly Property PostProcessing_OutputAudioFormats As List(Of String) Friend Sub PostProcessing_OutputAudioFormats_Reset() - PostProcessing_OutputAudioFormats.Clear() - PostProcessing_OutputAudioFormats.ListAddList(MyYouTubeSettings.DefaultAudioCodecAddit) - If PostProcessing_OutputAudioFormats.Count > 0 Then - PostProcessing_OutputAudioFormats.Sort() - PostProcessing_OutputAudioFormats.RemoveAll(Function(s) s = -1) - End If + With PostProcessing_OutputAudioFormats + .Clear() + .ListAddList(MyYouTubeSettings.DefaultAudioCodecAddit) + If .Count > 0 Then .Sort() + End With End Sub Protected _OutputAudioBitrate As Integer = -1 Friend Property OutputAudioBitrate As Integer @@ -322,21 +321,19 @@ Namespace API.YouTube.Objects Friend ReadOnly Property PostProcessing_OutputSubtitlesFormats As List(Of String) Friend Sub PostProcessing_OutputSubtitlesFormats_Reset() - PostProcessing_OutputSubtitlesFormats.Clear() - PostProcessing_OutputSubtitlesFormats.ListAddList(MyYouTubeSettings.DefaultSubtitlesFormatAddit) - If PostProcessing_OutputSubtitlesFormats.Count > 0 Then - PostProcessing_OutputSubtitlesFormats.Sort() - PostProcessing_OutputSubtitlesFormats.RemoveAll(Function(s) s = -1) - End If + With PostProcessing_OutputSubtitlesFormats + .Clear() + .ListAddList(MyYouTubeSettings.DefaultSubtitlesFormatAddit) + If .Count > 0 Then .Sort() + End With End Sub Friend Sub SubtitlesSelectedIndexesReset() - SubtitlesSelectedIndexes.Clear() - Dim subs As List(Of Subtitles) = Subtitles - SubtitlesSelectedIndexes.ListAddList(MyYouTubeSettings.DefaultSubtitles.Select(Function(s) subs.FindIndex(Function(ss) ss.ID = s))) - If SubtitlesSelectedIndexes.Count > 0 Then - SubtitlesSelectedIndexes.Sort() - SubtitlesSelectedIndexes.RemoveAll(Function(s) s = -1) - End If + With SubtitlesSelectedIndexes + .Clear() + Dim subs As List(Of Subtitles) = Subtitles + .ListAddList(MyYouTubeSettings.DefaultSubtitles.Select(Function(s) subs.FindIndex(Function(ss) ss.ID = s))) + If .Count > 0 Then .Sort() : .RemoveAll(Function(s) s = -1) + End With End Sub Private Sub SetElementsSubtitles(ByVal Source As YouTubeMediaContainerBase) If Not Source Is Nothing And HasElements Then @@ -442,6 +439,19 @@ Namespace API.YouTube.Objects End Get End Property Public Property Height As Integer Implements IYouTubeMediaContainer.Height + Friend ReadOnly Property HeightBase As Integer + Get + If Height > 0 Then + Return Height + ElseIf SelectedVideoIndex.ValueBetween(0, MediaObjects.Count - 1) Then + Return SelectedVideo.Height + ElseIf SelectedAudioIndex.ValueBetween(0, MediaObjects.Count - 1) Then + Return SelectedAudio.Height + Else + Return 0 + End If + End Get + End Property Protected _Bitrate As Integer = 0 Public Overridable Property Bitrate As Integer Implements IYouTubeMediaContainer.Bitrate Get @@ -459,6 +469,20 @@ Namespace API.YouTube.Objects Me._Bitrate = _Bitrate End Set End Property + Friend ReadOnly Property BitrateBase As Integer + Get + If Bitrate > 0 Then + Return Bitrate + ElseIf OutputAudioBitrate > 0 Then + Return OutputAudioBitrate + ElseIf HasElements Then + Try : Return Elements.Average(Function(e) DirectCast(e, YouTubeMediaContainerBase).BitrateBase) : Catch : End Try + ElseIf SelectedAudioIndex.ValueBetween(0, MediaObjects.Count - 1) Then + Return SelectedAudio.Bitrate + End If + Return 0 + End Get + End Property Public Property DateCreated As Date = Now Implements IYouTubeMediaContainer.DateCreated Public Property DateAdded As Date Implements IYouTubeMediaContainer.DateAdded Private Property IUserMedia_PostDate As Date? Implements IUserMedia.PostDate @@ -975,7 +999,7 @@ Namespace API.YouTube.Objects .Visible = True .Value = 0 .Maximum = DownloadGetElemCountSingle() - .Information = $"Download {ObjectType}" + .Information = "Downloading" End With End If @@ -1120,7 +1144,7 @@ Namespace API.YouTube.Objects .Value = 0 .Maximum = 100 .Provider = ProgressProvider - .Information = $"Download {MediaType}" + .Information = "Downloading" End With End If .MainProcessName = MyYouTubeSettings.YTDLP.Name '"yt-dlp" @@ -1305,6 +1329,7 @@ Namespace API.YouTube.Objects If format = mp3 And Not mp3ThumbEmbedded And MyYouTubeSettings.DefaultAudioEmbedThumbnail_ExtractedFiles Then _ embedThumbTo.Invoke(f) : mp3ThumbEmbedded = True If Not M3U8_PlaylistFiles.ListExists AndAlso f.Exists Then M3U8_Append(f) + If format = mp3 AndAlso f.Exists AndAlso MyYouTubeSettings.VideoPlaylist_AddExtractedMP3.Value Then M3U8_Append(f) End If Next End If diff --git a/SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb b/SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb index 867e77c..8779f05 100644 --- a/SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb +++ b/SCrawler.YouTubeDownloader/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + diff --git a/SCrawler/API/Instagram/SiteSettings.vb b/SCrawler/API/Instagram/SiteSettings.vb index 812c49d..01ecf3e 100644 --- a/SCrawler/API/Instagram/SiteSettings.vb +++ b/SCrawler/API/Instagram/SiteSettings.vb @@ -446,10 +446,11 @@ Namespace API.Instagram Friend Overrides Sub EndInit() Try : MyLastRequests.Add(LastDownloadDate.Value, LastRequestsCount.Value) : Catch : End Try If Not CBool(HH_IG_WWW_CLAIM_USE.Value) Then Responser.Headers.Remove(Header_IG_WWW_CLAIM) - If CInt(SettingsVersion.Value) < 1 Then - SettingsVersion.Value = 1 - HH_IG_WWW_CLAIM_UPDATE_INTERVAL.Value = 59 - HH_IG_WWW_CLAIM_USE_DEFAULT_ALGO.Value = 0 + If CInt(SettingsVersion.Value) < 2 Then + SettingsVersion.Value = 2 + HH_IG_WWW_CLAIM_UPDATE_INTERVAL.Value = 120 + HH_IG_WWW_CLAIM_USE_DEFAULT_ALGO.Value = 1 + HH_IG_WWW_CLAIM_RESET_EACH_TARGET.Value = 0 End If MyBase.EndInit() End Sub diff --git a/SCrawler/API/OnlyFans/SiteSettings.vb b/SCrawler/API/OnlyFans/SiteSettings.vb index a3e49fe..0698f86 100644 --- a/SCrawler/API/OnlyFans/SiteSettings.vb +++ b/SCrawler/API/OnlyFans/SiteSettings.vb @@ -228,7 +228,7 @@ Namespace API.OnlyFans Friend Overrides Sub Update() If _SiteEditorFormOpened Then If Not __UseOldAuthRules = CBool(UseOldAuthRules.Value) Or Not AEquals(Of String)(__DynamicRules, DynamicRules.Value) Then _ - LastDateUpdated = LastDateUpdated.AddYears(-1) + LastDateUpdated = Now.AddYears(-1) Responser.Cookies.Changed = False End If MyBase.Update() diff --git a/SCrawler/API/OnlyFans/UserData.vb b/SCrawler/API/OnlyFans/UserData.vb index 3dff87a..60e7176 100644 --- a/SCrawler/API/OnlyFans/UserData.vb +++ b/SCrawler/API/OnlyFans/UserData.vb @@ -619,7 +619,7 @@ Namespace API.OnlyFans Dim checkFormat As Func(Of EContainer, Boolean) = Function(jj) Not jj.Value("format").IsEmptyString OrElse (Not jj.Value("prefix").IsEmptyString And Not jj.Value("suffix").IsEmptyString) OrElse - (Not jj.Value("start").IsEmptyString And Not jj.Value("start").IsEmptyString) + (Not jj.Value("start").IsEmptyString And Not jj.Value("end").IsEmptyString) If Not r.IsEmptyString Then Using j As EContainer = JsonDocument.Parse(r, EDP.ReturnValue) If j.ListExists Then diff --git a/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb b/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb index 63af54e..80a407b 100644 --- a/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb +++ b/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb @@ -35,6 +35,7 @@ Namespace DownloadObjects Dim MENU_LOAD_SEP_7 As System.Windows.Forms.ToolStripSeparator Dim MENU_LOAD_SEP_0 As System.Windows.Forms.ToolStripSeparator Dim MENU_LOAD_SEP_8 As System.Windows.Forms.ToolStripSeparator + Dim MENU_LOAD_SEP_9 As System.Windows.Forms.ToolStripSeparator Me.OPT_DEFAULT = New System.Windows.Forms.ToolStripMenuItem() Me.OPT_SUBSCRIPTIONS = New System.Windows.Forms.ToolStripMenuItem() Me.ToolbarTOP = New System.Windows.Forms.ToolStrip() @@ -57,6 +58,7 @@ Namespace DownloadObjects Me.BTT_FEED_DELETE_SPEC = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_FEED_DELETE_DAILY_LIST = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_FEED_DELETE_DAILY_DATE = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_CURR_SESSION_SET = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_MERGE_SESSIONS = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CLEAR_DAILY = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_MERGE_FEEDS = New System.Windows.Forms.ToolStripMenuItem() @@ -70,7 +72,9 @@ Namespace DownloadObjects Me.BTT_DOWN_SELECTED = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_REFRESH = New System.Windows.Forms.ToolStripButton() Me.TP_DATA = New System.Windows.Forms.TableLayoutPanel() - Me.BTT_CURR_SESSION_SET = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_COPY_SPEC_TO = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_MOVE_SPEC_TO = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_RESET_DAILY = New System.Windows.Forms.ToolStripMenuItem() SEP_1 = New System.Windows.Forms.ToolStripSeparator() SEP_2 = New System.Windows.Forms.ToolStripSeparator() MENU_VIEW = New System.Windows.Forms.ToolStripDropDownButton() @@ -83,6 +87,7 @@ Namespace DownloadObjects MENU_LOAD_SEP_7 = New System.Windows.Forms.ToolStripSeparator() MENU_LOAD_SEP_0 = New System.Windows.Forms.ToolStripSeparator() MENU_LOAD_SEP_8 = New System.Windows.Forms.ToolStripSeparator() + MENU_LOAD_SEP_9 = New System.Windows.Forms.ToolStripSeparator() Me.ToolbarTOP.SuspendLayout() Me.SuspendLayout() ' @@ -176,7 +181,7 @@ Namespace DownloadObjects ' Me.MENU_LOAD_SESSION.AutoToolTip = False Me.MENU_LOAD_SESSION.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.MENU_LOAD_SESSION.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_LOAD_SESSION_CURRENT, Me.BTT_LOAD_SESSION_LAST, Me.BTT_LOAD_SESSION_CHOOSE, MENU_LOAD_SEP_0, Me.BTT_COPY_TO, Me.BTT_MOVE_TO, MENU_LOAD_SEP_1, Me.BTT_LOAD_FAV, Me.BTT_LOAD_SPEC, MENU_LOAD_SEP_2, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_REMOVE_FAV, MENU_LOAD_SEP_3, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_SPEC, MENU_LOAD_SEP_4, Me.BTT_FEED_CLEAR_FAV, Me.BTT_FEED_CLEAR_SPEC, Me.BTT_FEED_DELETE_SPEC, Me.BTT_FEED_DELETE_DAILY_LIST, Me.BTT_FEED_DELETE_DAILY_DATE, MENU_LOAD_SEP_5, Me.BTT_CURR_SESSION_SET, Me.BTT_MERGE_SESSIONS, Me.BTT_CLEAR_DAILY, MENU_LOAD_SEP_6, Me.BTT_MERGE_FEEDS, MENU_LOAD_SEP_7, Me.BTT_CHECK_ALL, Me.BTT_CHECK_NONE, MENU_LOAD_SEP_8, Me.BTT_VIEW_SAVE, Me.BTT_VIEW_LOAD}) + Me.MENU_LOAD_SESSION.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_LOAD_SESSION_CURRENT, Me.BTT_LOAD_SESSION_LAST, Me.BTT_LOAD_SESSION_CHOOSE, MENU_LOAD_SEP_0, Me.BTT_COPY_TO, Me.BTT_MOVE_TO, MENU_LOAD_SEP_1, Me.BTT_COPY_SPEC_TO, Me.BTT_MOVE_SPEC_TO, MENU_LOAD_SEP_2, Me.BTT_LOAD_FAV, Me.BTT_LOAD_SPEC, MENU_LOAD_SEP_3, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_REMOVE_FAV, MENU_LOAD_SEP_4, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_SPEC, MENU_LOAD_SEP_5, Me.BTT_FEED_CLEAR_FAV, Me.BTT_FEED_CLEAR_SPEC, Me.BTT_FEED_DELETE_SPEC, Me.BTT_FEED_DELETE_DAILY_LIST, Me.BTT_FEED_DELETE_DAILY_DATE, MENU_LOAD_SEP_6, Me.BTT_CURR_SESSION_SET, Me.BTT_MERGE_SESSIONS, Me.BTT_CLEAR_DAILY, Me.BTT_RESET_DAILY, MENU_LOAD_SEP_7, Me.BTT_MERGE_FEEDS, MENU_LOAD_SEP_8, Me.BTT_CHECK_ALL, Me.BTT_CHECK_NONE, MENU_LOAD_SEP_9, Me.BTT_VIEW_SAVE, Me.BTT_VIEW_LOAD}) Me.MENU_LOAD_SESSION.Image = Global.SCrawler.My.Resources.Resources.ArrowDownPic_Blue_24 Me.MENU_LOAD_SESSION.ImageTransparentColor = System.Drawing.Color.Magenta Me.MENU_LOAD_SESSION.Name = "MENU_LOAD_SESSION" @@ -309,6 +314,15 @@ Namespace DownloadObjects Me.BTT_FEED_DELETE_DAILY_DATE.Size = New System.Drawing.Size(352, 22) Me.BTT_FEED_DELETE_DAILY_DATE.Text = "Delete daily feed (by date)" ' + 'BTT_CURR_SESSION_SET + ' + Me.BTT_CURR_SESSION_SET.AutoToolTip = True + Me.BTT_CURR_SESSION_SET.Image = Global.SCrawler.My.Resources.Resources.ArrowDownPic_Blue_24 + Me.BTT_CURR_SESSION_SET.Name = "BTT_CURR_SESSION_SET" + Me.BTT_CURR_SESSION_SET.Size = New System.Drawing.Size(352, 22) + Me.BTT_CURR_SESSION_SET.Text = "Set current session..." + Me.BTT_CURR_SESSION_SET.ToolTipText = "Select one of the download sessions and set it as the current session" + ' 'BTT_MERGE_SESSIONS ' Me.BTT_MERGE_SESSIONS.AutoToolTip = True @@ -429,14 +443,37 @@ Namespace DownloadObjects Me.TP_DATA.Size = New System.Drawing.Size(484, 436) Me.TP_DATA.TabIndex = 1 ' - 'BTT_CURR_SESSION_SET + 'MENU_LOAD_SEP_9 ' - Me.BTT_CURR_SESSION_SET.AutoToolTip = True - Me.BTT_CURR_SESSION_SET.Image = Global.SCrawler.My.Resources.Resources.ArrowDownPic_Blue_24 - Me.BTT_CURR_SESSION_SET.Name = "BTT_CURR_SESSION_SET" - Me.BTT_CURR_SESSION_SET.Size = New System.Drawing.Size(352, 22) - Me.BTT_CURR_SESSION_SET.Text = "Set current session..." - Me.BTT_CURR_SESSION_SET.ToolTipText = "Select one of the download sessions and set it as the current session" + MENU_LOAD_SEP_9.Name = "MENU_LOAD_SEP_9" + MENU_LOAD_SEP_9.Size = New System.Drawing.Size(349, 6) + ' + 'BTT_COPY_SPEC_TO + ' + Me.BTT_COPY_SPEC_TO.AutoToolTip = True + Me.BTT_COPY_SPEC_TO.Image = Global.SCrawler.My.Resources.Resources.PastePic_32 + Me.BTT_COPY_SPEC_TO.Name = "BTT_COPY_SPEC_TO" + Me.BTT_COPY_SPEC_TO.Size = New System.Drawing.Size(352, 22) + Me.BTT_COPY_SPEC_TO.Text = "Copy feed/session files to..." + Me.BTT_COPY_SPEC_TO.ToolTipText = "Copy all the files of the loaded feed/session to..." + ' + 'BTT_MOVE_SPEC_TO + ' + Me.BTT_MOVE_SPEC_TO.AutoToolTip = True + Me.BTT_MOVE_SPEC_TO.Image = Global.SCrawler.My.Resources.Resources.CutPic_48 + Me.BTT_MOVE_SPEC_TO.Name = "BTT_MOVE_SPEC_TO" + Me.BTT_MOVE_SPEC_TO.Size = New System.Drawing.Size(352, 22) + Me.BTT_MOVE_SPEC_TO.Text = "Move feed/session files to..." + Me.BTT_MOVE_SPEC_TO.ToolTipText = "Move all the files of the loaded feed/session to..." + ' + 'BTT_RESET_DAILY + ' + Me.BTT_RESET_DAILY.AutoToolTip = True + Me.BTT_RESET_DAILY.Image = Global.SCrawler.My.Resources.Resources.RefreshPic_24 + Me.BTT_RESET_DAILY.Name = "BTT_RESET_DAILY" + Me.BTT_RESET_DAILY.Size = New System.Drawing.Size(352, 22) + Me.BTT_RESET_DAILY.Text = "Reset current session" + Me.BTT_RESET_DAILY.ToolTipText = "A new file will be created for the current session" ' 'DownloadFeedForm ' @@ -494,5 +531,8 @@ Namespace DownloadObjects Private WithEvents BTT_VIEW_SAVE As ToolStripMenuItem Private WithEvents BTT_VIEW_LOAD As ToolStripMenuItem Private WithEvents BTT_CURR_SESSION_SET As ToolStripMenuItem + Private WithEvents BTT_COPY_SPEC_TO As ToolStripMenuItem + Private WithEvents BTT_MOVE_SPEC_TO As ToolStripMenuItem + Private WithEvents BTT_RESET_DAILY As ToolStripMenuItem End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Download/Feed/DownloadFeedForm.resx b/SCrawler/Download/Feed/DownloadFeedForm.resx index 5d446a2..042d779 100644 --- a/SCrawler/Download/Feed/DownloadFeedForm.resx +++ b/SCrawler/Download/Feed/DownloadFeedForm.resx @@ -165,4 +165,7 @@ 17, 17 + + False + \ No newline at end of file diff --git a/SCrawler/Download/Feed/DownloadFeedForm.vb b/SCrawler/Download/Feed/DownloadFeedForm.vb index 7c0fff1..5f2557c 100644 --- a/SCrawler/Download/Feed/DownloadFeedForm.vb +++ b/SCrawler/Download/Feed/DownloadFeedForm.vb @@ -540,14 +540,19 @@ Namespace DownloadObjects Private Sub BTT_COPY_MOVE_TO_Click(sender As Object, e As EventArgs) Handles BTT_COPY_TO.Click, BTT_MOVE_TO.Click MoveCopyFiles(True, sender, Nothing, Nothing) End Sub - Private Function MoveCopyFiles(ByVal IsInternal As Boolean, ByVal Sender As Object, ByVal MCTOptions As FeedMoveCopyTo, ByVal FeedMediaData As FeedMedia) As Boolean + Private Sub BTT_COPY_MOVE_SPEC_TO_Click(sender As Object, e As EventArgs) Handles BTT_COPY_SPEC_TO.Click, BTT_MOVE_SPEC_TO.Click + MoveCopyFiles(True, sender, Nothing, Nothing, False) + End Sub + Private Function MoveCopyFiles(ByVal IsInternal As Boolean, ByVal Sender As Object, ByVal MCTOptions As FeedMoveCopyTo, + ByVal FeedMediaData As FeedMedia, Optional ByVal GetChecked As Boolean = True) As Boolean Const MsgTitle$ = "Copy/Move checked files" Try - Dim isCopy As Boolean = Not Sender Is Nothing AndAlso Sender Is BTT_COPY_TO + Dim isCopy As Boolean = Not Sender Is Nothing AndAlso (Sender Is BTT_COPY_TO OrElse Sender Is BTT_COPY_SPEC_TO) Dim moveOptions As FeedMoveCopyTo = Nothing Dim ff As SFile = Nothing, df As SFile Dim data As IEnumerable(Of UserMediaD) = Nothing Dim dd As UserMediaD + Dim __user As UserInfo Dim data_files As IEnumerable(Of SFile) = Nothing Dim new_files As New List(Of SFile) Dim mm As UserMediaD @@ -566,7 +571,12 @@ Namespace DownloadObjects Dim result As Boolean = False If FeedMediaData Is Nothing Then - data = GetCheckedMedia() + If GetChecked Then + data = GetCheckedMedia() + ElseIf DataList.Count > 0 Then + data = DataList.Where(Function(__dd) Not If(__dd.User?.IsSubscription, __dd.UserInfo.IsSubscription) AndAlso __dd.Data.File.Exists) + End If + With data If .ListExists Then data_files = .Select(Function(m) m.Data.File) End With @@ -587,7 +597,6 @@ Namespace DownloadObjects With moveOptions If Not .Destination.IsEmptyString And .ReplaceUserProfile And .ReplaceUserProfile_CreateIfNull And .ReplaceUserProfile_Profile Is Nothing Then Dim existingPathInstances As IEnumerable(Of String) = Nothing - Dim __user As UserInfo Dim __host As Plugin.Hosts.SettingsHost = Settings(API.PathPlugin.PluginKey).Default Dim __userName$ = .Destination.Segments.LastOrDefault If Settings.UsersList.Count > 0 Then _ @@ -659,9 +668,11 @@ Namespace DownloadObjects indx = Downloader.Files.FindIndex(finder) If indx >= 0 Then mm = Downloader.Files(indx) + __user = mm.UserInfo mm_data = mm.Data mm_data.File = df - mm = New UserMediaD(mm_data, If(moveOptions.ReplaceUserProfile_Profile, mm.User), mm.Session, mm.Date) + mm = New UserMediaD(mm_data, If(moveOptions.ReplaceUserProfile_Profile, mm.User), mm.Session, mm.Date) With {.IsSavedPosts = mm.IsSavedPosts} + If moveOptions.ReplaceUserProfile_Profile Is Nothing And mm.IsSavedPosts Then mm.UserInfo = __user Downloader.Files(indx) = mm downloaderFilesUpdated = True End If @@ -687,9 +698,11 @@ Namespace DownloadObjects indx = sessionData.FindIndex(finder) If indx >= 0 Then mm = sessionData(indx) + __user = mm.UserInfo mm_data = mm.Data mm_data.File = df - mm = New UserMediaD(mm_data, If(moveOptions.ReplaceUserProfile_Profile, mm.User), mm.Session, mm.Date) + mm = New UserMediaD(mm_data, If(moveOptions.ReplaceUserProfile_Profile, mm.User), mm.Session, mm.Date) With {.IsSavedPosts = mm.IsSavedPosts} + If moveOptions.ReplaceUserProfile_Profile Is Nothing And mm.IsSavedPosts Then mm.UserInfo = __user sessionData(indx) = mm sesFilesReplaced = True If DataList.Count > 0 Then @@ -989,6 +1002,14 @@ Namespace DownloadObjects RefillList() End If End Sub + Private Sub BTT_RESET_DAILY_Click(sender As Object, e As EventArgs) Handles BTT_RESET_DAILY.Click + If MsgBoxE({"Are you sure you want to reset the current session?" & vbCr & + "A new file will be created for the current session", "Reset current session"}, vbExclamation,,, {"Process", "Cancel"}) = 0 Then + Downloader.ResetSession() + FeedChangeMode(FeedModes.Current) + RefillList(True, False) + End If + End Sub #End Region #Region "Merge feeds" Private Sub BTT_MERGE_FEEDS_Click(sender As Object, e As EventArgs) Handles BTT_MERGE_FEEDS.Click diff --git a/SCrawler/Download/Feed/FeedMedia.vb b/SCrawler/Download/Feed/FeedMedia.vb index 466a169..2eedd5c 100644 --- a/SCrawler/Download/Feed/FeedMedia.vb +++ b/SCrawler/Download/Feed/FeedMedia.vb @@ -221,8 +221,8 @@ Namespace DownloadObjects Information = $"Type: {Media.Data.Type}" Information.StringAppendLine($"File: {File.File}") Information.StringAppendLine($"Address: {File}") - Information.StringAppendLine($"Downloaded: {Media.Date.ToStringDate(ADateTime.Formats.BaseDateTime)}") - If Media.Data.Post.Date.HasValue Then Information.StringAppendLine($"Posted: {Media.Data.Post.Date.Value.ToStringDate(ADateTime.Formats.BaseDateTime)}") + Information.StringAppendLine($"Downloaded: {Media.Date.ToStringDateDef}") + If Media.Data.Post.Date.HasValue Then Information.StringAppendLine($"Post date: {Media.Data.Post.Date.Value.ToStringDateDef}") Dim infoType As UserMedia.Types = If(IsSubscription, UserMedia.Types.Picture, Media.Data.Type) Dim h% Dim s As Size @@ -267,23 +267,27 @@ Namespace DownloadObjects BTT_CONTEXT_OPEN_MEDIA.Text &= " video" BTT_CONTEXT_DELETE.Text &= " video" h = VideoHeight + AddHandler MyVideo.DoubleClick, AddressOf MyPicture_DoubleClick Case Else : Throw New ArgumentNullException With {.HelpLink = 1} End Select - Dim info$ = $"[{infoType}] - " + Dim info$ = If(Settings.FeedAddTypeToCaption.Value And Not IsSubscription, $"[{infoType}] - ", String.Empty) If Not Media.User Is Nothing Then With Media.User + Dim otherName$ = If(Media.IsSavedPosts, "Saved", Media.UserInfo.Name) + Dim site$ = If(Settings.FeedAddSiteToCaption.Value, $"{ .Site} - ", String.Empty) + UserKey = .Key Information &= vbNewLine.StringDup(2) If .IncludedInCollection Then Information.StringAppendLine($"User collection: { .CollectionName}") Information.StringAppendLine($"User site: { .Site}") - Information.StringAppendLine($"User name: {IIf(Not .FriendlyName.IsEmptyString And Not .IncludedInCollection, .FriendlyName, .Name)}") + Information.StringAppendLine($"User name: {CStr(IIf(Not .FriendlyName.IsEmptyString And Not .IncludedInCollection, .FriendlyName, .Name)).IfNullOrEmpty(otherName)}") If .IncludedInCollection Then info &= $"[{ .CollectionName}]: " If Settings.FeedShowFriendlyNames Or Not DirectCast(.Self, UserDataBase).FeedIsUser Then - info &= $"{ .Site} - { .FriendlyName.IfNullOrEmpty(.Name)}" + info &= $"{site}{ .FriendlyName.IfNullOrEmpty(.Name).IfNullOrEmpty(otherName)}" Else - info &= $"{ .Site} - {IIf(Not .FriendlyName.IsEmptyString And Not .IncludedInCollection, .FriendlyName, .Name)}" + info &= $"{site}{CStr(IIf(Not .FriendlyName.IsEmptyString And Not .IncludedInCollection, .FriendlyName, .Name)).IfNullOrEmpty(otherName)}" End If End With End If diff --git a/SCrawler/Download/Feed/FeedSpecial.vb b/SCrawler/Download/Feed/FeedSpecial.vb index ae8d704..c283ec7 100644 --- a/SCrawler/Download/Feed/FeedSpecial.vb +++ b/SCrawler/Download/Feed/FeedSpecial.vb @@ -147,6 +147,7 @@ Namespace DownloadObjects Dim user As IUserData Dim path$ = InitialUser.File.CutPath.PathWithSeparator Dim pathNew$ = NewUser.File.CutPath.PathWithSeparator + Dim isSaved As Boolean = Item.IsSavedPosts If Item.UserInfo.Equals(InitialUser) Or Item.UserInfo.Equals(NewUser) Then If Item.Data.File.PathWithSeparator.Contains(path) Then data = Item.Data @@ -157,7 +158,7 @@ Namespace DownloadObjects user = Item.User End If If Not If(user?.IsSubscription, False) Then - Item = New UserMediaD(data, user, Item.Session, Item.Date) + Item = New UserMediaD(data, user, Item.Session, Item.Date) With {.IsSavedPosts = isSaved} Result = True Return Item End If @@ -174,8 +175,10 @@ Namespace DownloadObjects If indx >= 0 Then Dim m As UserMediaD = Items(indx) Dim mm As UserMedia = m.Data + Dim user As UserInfo = m.UserInfo mm.File = NewFile - m = New UserMediaD(mm, If(MCTOptions.ReplaceUserProfile_Profile, m.User), m.Session, m.Date) + m = New UserMediaD(mm, If(MCTOptions.ReplaceUserProfile_Profile, m.User), m.Session, m.Date) With {.IsSavedPosts = m.IsSavedPosts} + If MCTOptions.ReplaceUserProfile_Profile Is Nothing And m.IsSavedPosts Then m.UserInfo = user Items(indx) = m _FilesUpdated = True End If diff --git a/SCrawler/Download/Feed/FeedVideo.vb b/SCrawler/Download/Feed/FeedVideo.vb index a64e4ae..eac2c97 100644 --- a/SCrawler/Download/Feed/FeedVideo.vb +++ b/SCrawler/Download/Feed/FeedVideo.vb @@ -176,5 +176,9 @@ Namespace DownloadObjects ErrorsDescriber.Execute(EDP.SendToLog, ex, $"An error occurred while performing action [{ActionName}] on file [{MediaFile}]") End Try End Function + Private Sub MyVideo_DoubleClick(sender As Object, e As EventArgs) Handles MyVideo.DoubleClick + [Stop]() + OnDoubleClick(e) + End Sub End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Download/TDownloader.vb b/SCrawler/Download/TDownloader.vb index c89c07c..8650781 100644 --- a/SCrawler/Download/TDownloader.vb +++ b/SCrawler/Download/TDownloader.vb @@ -39,7 +39,7 @@ Namespace DownloadObjects #End Region Friend ReadOnly User As IUserData Friend ReadOnly Data As UserMedia - Friend ReadOnly UserInfo As UserInfo + Friend UserInfo As UserInfo Friend ReadOnly [Date] As Date Friend Session As Integer Friend IsSavedPosts As Boolean @@ -257,6 +257,13 @@ Namespace DownloadObjects ErrorsDescriber.Execute(EDP.SendToLog, ex, "[DownloadObjects.TDownloader.ClearSessions]") End Try End Sub + Friend Sub ResetSession() + Files.Clear() + _FilesSessionActual = Nothing + _FilesSessionChecked = True + _Session = 0 + _SessionSavedPosts = -1 + End Sub #End Region Friend ReadOnly Property Downloaded As List(Of IUserData) Private ReadOnly NProv As IFormatProvider diff --git a/SCrawler/Editors/GlobalSettingsForm.Designer.vb b/SCrawler/Editors/GlobalSettingsForm.Designer.vb index 087de6a..2a91b26 100644 --- a/SCrawler/Editors/GlobalSettingsForm.Designer.vb +++ b/SCrawler/Editors/GlobalSettingsForm.Designer.vb @@ -179,6 +179,7 @@ Namespace Editors Me.CH_FEED_SHOW_SPEC_MEDIAITEM = New System.Windows.Forms.CheckBox() Me.NUM_FEED_STORE_SESSION_DATA = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.NUM_FEED_SES_CURR_LOAD_LAST = New PersonalUtilities.Forms.Controls.TextBoxExtended() + Me.CH_FEED_ADD_SITE = New System.Windows.Forms.CheckBox() Me.TXT_YTDLP = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_FFMPEG = New PersonalUtilities.Forms.Controls.TextBoxExtended() Me.TXT_CURL = New PersonalUtilities.Forms.Controls.TextBoxExtended() @@ -204,6 +205,7 @@ Namespace Editors Me.TAB_MAIN = New System.Windows.Forms.TabControl() Me.TAB_ENVIR = New System.Windows.Forms.TabPage() Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() + Me.CH_FEED_ADD_TYPE = New System.Windows.Forms.CheckBox() TP_BASIS = New System.Windows.Forms.TableLayoutPanel() TP_IMAGES = New System.Windows.Forms.TableLayoutPanel() TP_FILE_NAME = New System.Windows.Forms.TableLayoutPanel() @@ -949,10 +951,10 @@ Namespace Editors ' Me.CH_FEED_OPEN_LAST_MODE.AutoSize = True Me.CH_FEED_OPEN_LAST_MODE.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_FEED_OPEN_LAST_MODE.Location = New System.Drawing.Point(4, 195) + Me.CH_FEED_OPEN_LAST_MODE.Location = New System.Drawing.Point(4, 247) Me.CH_FEED_OPEN_LAST_MODE.Name = "CH_FEED_OPEN_LAST_MODE" Me.CH_FEED_OPEN_LAST_MODE.Size = New System.Drawing.Size(613, 19) - Me.CH_FEED_OPEN_LAST_MODE.TabIndex = 7 + Me.CH_FEED_OPEN_LAST_MODE.TabIndex = 9 Me.CH_FEED_OPEN_LAST_MODE.Text = "Open last mode (users or subscriptions)" TT_MAIN.SetToolTip(Me.CH_FEED_OPEN_LAST_MODE, "If disabled, the user mode will be used when initializing the feed.") Me.CH_FEED_OPEN_LAST_MODE.UseVisualStyleBackColor = True @@ -1062,10 +1064,10 @@ Namespace Editors ' Me.CH_FEED_UP_FILE_LOC_MOVE.AutoSize = True Me.CH_FEED_UP_FILE_LOC_MOVE.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_FEED_UP_FILE_LOC_MOVE.Location = New System.Drawing.Point(4, 273) + Me.CH_FEED_UP_FILE_LOC_MOVE.Location = New System.Drawing.Point(4, 325) Me.CH_FEED_UP_FILE_LOC_MOVE.Name = "CH_FEED_UP_FILE_LOC_MOVE" Me.CH_FEED_UP_FILE_LOC_MOVE.Size = New System.Drawing.Size(613, 19) - Me.CH_FEED_UP_FILE_LOC_MOVE.TabIndex = 10 + Me.CH_FEED_UP_FILE_LOC_MOVE.TabIndex = 12 Me.CH_FEED_UP_FILE_LOC_MOVE.Text = "Update file location when moved" TT_MAIN.SetToolTip(Me.CH_FEED_UP_FILE_LOC_MOVE, "The file location will be updated in the session data and in the feeds data") Me.CH_FEED_UP_FILE_LOC_MOVE.UseVisualStyleBackColor = True @@ -1611,7 +1613,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(621, 399) + TAB_FEED.Size = New System.Drawing.Size(621, 374) TAB_FEED.TabIndex = 7 TAB_FEED.Text = "Feed" ' @@ -1623,32 +1625,35 @@ Namespace Editors TP_FEED.Controls.Add(TP_FEED_IMG_COUNT, 0, 0) TP_FEED.Controls.Add(Me.CH_FEED_ENDLESS, 0, 3) TP_FEED.Controls.Add(Me.CH_FEED_ADD_SESSION, 0, 4) - TP_FEED.Controls.Add(Me.CH_FEED_ADD_DATE, 0, 5) + TP_FEED.Controls.Add(Me.CH_FEED_ADD_DATE, 0, 7) TP_FEED.Controls.Add(Me.TXT_FEED_CENTER_IMAGE, 0, 1) TP_FEED.Controls.Add(Me.COLORS_FEED, 0, 2) - TP_FEED.Controls.Add(Me.CH_FEED_OPEN_LAST_MODE, 0, 7) - TP_FEED.Controls.Add(Me.CH_FEED_SHOW_FRIENDLY, 0, 8) - TP_FEED.Controls.Add(Me.CH_FEED_SHOW_SPEC_MEDIAITEM, 0, 9) - TP_FEED.Controls.Add(Me.CH_FEED_UP_FILE_LOC_MOVE, 0, 10) - TP_FEED.Controls.Add(TP_FEED_SES, 0, 6) + TP_FEED.Controls.Add(Me.CH_FEED_OPEN_LAST_MODE, 0, 9) + TP_FEED.Controls.Add(Me.CH_FEED_SHOW_FRIENDLY, 0, 10) + TP_FEED.Controls.Add(Me.CH_FEED_SHOW_SPEC_MEDIAITEM, 0, 11) + TP_FEED.Controls.Add(Me.CH_FEED_UP_FILE_LOC_MOVE, 0, 12) + TP_FEED.Controls.Add(TP_FEED_SES, 0, 8) + TP_FEED.Controls.Add(Me.CH_FEED_ADD_SITE, 0, 5) + TP_FEED.Controls.Add(Me.CH_FEED_ADD_TYPE, 0, 6) TP_FEED.Dock = System.Windows.Forms.DockStyle.Fill TP_FEED.Location = New System.Drawing.Point(0, 0) TP_FEED.Name = "TP_FEED" - TP_FEED.RowCount = 12 + TP_FEED.RowCount = 14 TP_FEED.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_FEED.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.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.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.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.Absolute, 25.0!)) TP_FEED.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.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.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.Absolute, 25.0!)) TP_FEED.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) - TP_FEED.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) - TP_FEED.Size = New System.Drawing.Size(621, 399) + TP_FEED.Size = New System.Drawing.Size(621, 374) TP_FEED.TabIndex = 0 ' 'TP_FEED_IMG_COUNT @@ -1726,10 +1731,10 @@ Namespace Editors ' Me.CH_FEED_ADD_DATE.AutoSize = True Me.CH_FEED_ADD_DATE.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_FEED_ADD_DATE.Location = New System.Drawing.Point(4, 140) + Me.CH_FEED_ADD_DATE.Location = New System.Drawing.Point(4, 192) Me.CH_FEED_ADD_DATE.Name = "CH_FEED_ADD_DATE" Me.CH_FEED_ADD_DATE.Size = New System.Drawing.Size(613, 19) - Me.CH_FEED_ADD_DATE.TabIndex = 5 + Me.CH_FEED_ADD_DATE.TabIndex = 7 Me.CH_FEED_ADD_DATE.Text = "Add the date to the post title" Me.CH_FEED_ADD_DATE.UseVisualStyleBackColor = True ' @@ -1769,10 +1774,10 @@ Namespace Editors ' Me.CH_FEED_SHOW_FRIENDLY.AutoSize = True Me.CH_FEED_SHOW_FRIENDLY.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_FEED_SHOW_FRIENDLY.Location = New System.Drawing.Point(4, 221) + Me.CH_FEED_SHOW_FRIENDLY.Location = New System.Drawing.Point(4, 273) Me.CH_FEED_SHOW_FRIENDLY.Name = "CH_FEED_SHOW_FRIENDLY" Me.CH_FEED_SHOW_FRIENDLY.Size = New System.Drawing.Size(613, 19) - Me.CH_FEED_SHOW_FRIENDLY.TabIndex = 8 + Me.CH_FEED_SHOW_FRIENDLY.TabIndex = 10 Me.CH_FEED_SHOW_FRIENDLY.Text = "Show friendly names instead of usernames" Me.CH_FEED_SHOW_FRIENDLY.UseVisualStyleBackColor = True ' @@ -1780,10 +1785,10 @@ Namespace Editors ' Me.CH_FEED_SHOW_SPEC_MEDIAITEM.AutoSize = True Me.CH_FEED_SHOW_SPEC_MEDIAITEM.Dock = System.Windows.Forms.DockStyle.Fill - Me.CH_FEED_SHOW_SPEC_MEDIAITEM.Location = New System.Drawing.Point(4, 247) + Me.CH_FEED_SHOW_SPEC_MEDIAITEM.Location = New System.Drawing.Point(4, 299) Me.CH_FEED_SHOW_SPEC_MEDIAITEM.Name = "CH_FEED_SHOW_SPEC_MEDIAITEM" Me.CH_FEED_SHOW_SPEC_MEDIAITEM.Size = New System.Drawing.Size(613, 19) - Me.CH_FEED_SHOW_SPEC_MEDIAITEM.TabIndex = 9 + Me.CH_FEED_SHOW_SPEC_MEDIAITEM.TabIndex = 11 Me.CH_FEED_SHOW_SPEC_MEDIAITEM.Text = "Show special feeds in media items" Me.CH_FEED_SHOW_SPEC_MEDIAITEM.UseVisualStyleBackColor = True ' @@ -1795,14 +1800,14 @@ Namespace Editors TP_FEED_SES.Controls.Add(Me.NUM_FEED_STORE_SESSION_DATA, 0, 0) TP_FEED_SES.Controls.Add(Me.NUM_FEED_SES_CURR_LOAD_LAST, 1, 0) TP_FEED_SES.Dock = System.Windows.Forms.DockStyle.Fill - TP_FEED_SES.Location = New System.Drawing.Point(1, 163) + TP_FEED_SES.Location = New System.Drawing.Point(1, 215) TP_FEED_SES.Margin = New System.Windows.Forms.Padding(0) TP_FEED_SES.Name = "TP_FEED_SES" TP_FEED_SES.RowCount = 1 TP_FEED_SES.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) TP_FEED_SES.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) TP_FEED_SES.Size = New System.Drawing.Size(619, 28) - TP_FEED_SES.TabIndex = 6 + TP_FEED_SES.TabIndex = 8 ' 'NUM_FEED_STORE_SESSION_DATA ' @@ -1851,6 +1856,17 @@ Namespace Editors Me.NUM_FEED_SES_CURR_LOAD_LAST.TabIndex = 1 Me.NUM_FEED_SES_CURR_LOAD_LAST.Text = "0" ' + 'CH_FEED_ADD_SITE + ' + Me.CH_FEED_ADD_SITE.AutoSize = True + Me.CH_FEED_ADD_SITE.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_FEED_ADD_SITE.Location = New System.Drawing.Point(4, 140) + Me.CH_FEED_ADD_SITE.Name = "CH_FEED_ADD_SITE" + Me.CH_FEED_ADD_SITE.Size = New System.Drawing.Size(613, 19) + Me.CH_FEED_ADD_SITE.TabIndex = 5 + Me.CH_FEED_ADD_SITE.Text = "Add the site name to the post title" + Me.CH_FEED_ADD_SITE.UseVisualStyleBackColor = True + ' 'TAB_NOTIFY ' TAB_NOTIFY.Controls.Add(TP_NOTIFY_MAIN) @@ -2419,7 +2435,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(629, 425) + Me.TAB_MAIN.Size = New System.Drawing.Size(629, 400) Me.TAB_MAIN.TabIndex = 1 ' 'TAB_ENVIR @@ -2437,7 +2453,7 @@ Namespace Editors 'CONTAINER_MAIN.ContentPanel ' Me.CONTAINER_MAIN.ContentPanel.Controls.Add(Me.TAB_MAIN) - Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(629, 425) + Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(629, 400) Me.CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill Me.CONTAINER_MAIN.LeftToolStripPanelVisible = False Me.CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0) @@ -2447,6 +2463,17 @@ Namespace Editors Me.CONTAINER_MAIN.TabIndex = 0 Me.CONTAINER_MAIN.TopToolStripPanelVisible = False ' + 'CH_FEED_ADD_TYPE + ' + Me.CH_FEED_ADD_TYPE.AutoSize = True + Me.CH_FEED_ADD_TYPE.Dock = System.Windows.Forms.DockStyle.Fill + Me.CH_FEED_ADD_TYPE.Location = New System.Drawing.Point(4, 166) + Me.CH_FEED_ADD_TYPE.Name = "CH_FEED_ADD_TYPE" + Me.CH_FEED_ADD_TYPE.Size = New System.Drawing.Size(613, 19) + Me.CH_FEED_ADD_TYPE.TabIndex = 6 + Me.CH_FEED_ADD_TYPE.Text = "Add the file type to the post title" + Me.CH_FEED_ADD_TYPE.UseVisualStyleBackColor = True + ' 'GlobalSettingsForm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -2660,5 +2687,7 @@ Namespace Editors Private WithEvents CH_CHANNELS_USERS_READY_MARK As CheckBox Private WithEvents NUM_FEED_SES_CURR_LOAD_LAST As PersonalUtilities.Forms.Controls.TextBoxExtended Private WithEvents TXT_AUTO_BRUSH_MIN As PersonalUtilities.Forms.Controls.TextBoxExtended + Private WithEvents CH_FEED_ADD_SITE As CheckBox + Private WithEvents CH_FEED_ADD_TYPE As CheckBox End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Editors/GlobalSettingsForm.vb b/SCrawler/Editors/GlobalSettingsForm.vb index 6dd713b..838d512 100644 --- a/SCrawler/Editors/GlobalSettingsForm.vb +++ b/SCrawler/Editors/GlobalSettingsForm.vb @@ -151,6 +151,8 @@ Namespace Editors COLORS_FEED.ColorsSet(.FeedBackColor, .FeedForeColor, SystemColors.Window, SystemColors.WindowText) CH_FEED_ENDLESS.Checked = .FeedEndless CH_FEED_ADD_SESSION.Checked = .FeedAddSessionToCaption + CH_FEED_ADD_SITE.Checked = .FeedAddSiteToCaption + CH_FEED_ADD_TYPE.Checked = .FeedAddTypeToCaption CH_FEED_ADD_DATE.Checked = .FeedAddDateToCaption NUM_FEED_STORE_SESSION_DATA.Checked = .FeedStoreSessionsData NUM_FEED_STORE_SESSION_DATA.Value = .FeedStoredSessionsNumber.Value @@ -361,6 +363,8 @@ Namespace Editors COLORS_FEED.ColorsGet(.FeedBackColor, .FeedForeColor) .FeedEndless.Value = CH_FEED_ENDLESS.Checked .FeedAddSessionToCaption.Value = CH_FEED_ADD_SESSION.Checked + .FeedAddSiteToCaption.Value = CH_FEED_ADD_SITE.Checked + .FeedAddTypeToCaption.Value = CH_FEED_ADD_TYPE.Checked .FeedAddDateToCaption.Value = CH_FEED_ADD_DATE.Checked .FeedStoreSessionsData.Value = NUM_FEED_STORE_SESSION_DATA.Checked .FeedStoredSessionsNumber.Value = NUM_FEED_STORE_SESSION_DATA.Value diff --git a/SCrawler/MainMod.vb b/SCrawler/MainMod.vb index b9ec1d0..60d2d1f 100644 --- a/SCrawler/MainMod.vb +++ b/SCrawler/MainMod.vb @@ -77,6 +77,12 @@ Friend Module MainMod ''' Alt+F1 Friend ReadOnly ShowUsersButtonKey As New PersonalUtilities.Forms.ButtonKey(Keys.F1,, True) Friend ReadOnly DateTimeDefaultProvider As New ADateTime(ADateTime.Formats.BaseDateTime) + Friend Function ToStringDateDef(ByVal _DateN As Date?) As String + Return If(_DateN.HasValue, AConvert(Of String)(_DateN, DateTimeDefaultProvider, String.Empty), String.Empty) + End Function + Friend Function ToStringDateDef(ByVal _Date As Date) As String + Return ToStringDateDef(_DateN:=_Date) + End Function Friend ReadOnly SessionDateTimeProvider As New ADateTime("yyyyMMdd_HHmmss") Friend ReadOnly FeedVideoLengthProvider As New ADateTime("hh\:mm\:ss") With {.TimeParseMode = ADateTime.TimeModes.TimeSpan} Friend ReadOnly LogConnector As New LogHost diff --git a/SCrawler/My Project/AssemblyInfo.vb b/SCrawler/My Project/AssemblyInfo.vb index 50ab392..f00c2f0 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 33db66e..10ad0dd 100644 --- a/SCrawler/SettingsCLS.vb +++ b/SCrawler/SettingsCLS.vb @@ -402,6 +402,8 @@ Friend Class SettingsCLS : Implements IDownloaderSettings, IDisposable FeedForeColor.SetExtended("FeedColorFore",, MyXML, n) FeedEndless = New XMLValue(Of Boolean)("Endless", True, MyXML, n) FeedAddSessionToCaption = New XMLValue(Of Boolean)("AddSessionToCaption", False, MyXML, n) + FeedAddSiteToCaption = New XMLValue(Of Boolean)("AddSiteToCaption", True, MyXML, n) + FeedAddTypeToCaption = New XMLValue(Of Boolean)("AddTypeToCaption", False, MyXML, n) FeedAddDateToCaption = New XMLValue(Of Boolean)("AddDateToCaption", True, MyXML, n) FeedStoreSessionsData = New XMLValue(Of Boolean)("StoreSessionsData", True, MyXML, n) FeedStoredSessionsNumber = New XMLValue(Of Integer)("StoredSessionsNumber", 20, MyXML, n) @@ -1260,6 +1262,8 @@ Friend Class SettingsCLS : Implements IDownloaderSettings, IDisposable Friend ReadOnly Property FeedForeColor As XMLValue(Of Color) Friend ReadOnly Property FeedEndless As XMLValue(Of Boolean) Friend ReadOnly Property FeedAddSessionToCaption As XMLValue(Of Boolean) + Friend ReadOnly Property FeedAddSiteToCaption As XMLValue(Of Boolean) + Friend ReadOnly Property FeedAddTypeToCaption As XMLValue(Of Boolean) Friend ReadOnly Property FeedAddDateToCaption As XMLValue(Of Boolean) Friend ReadOnly Property FeedStoreSessionsData As XMLValue(Of Boolean) Friend ReadOnly Property FeedStoredSessionsNumber As XMLValue(Of Integer)