mirror of
https://github.com/AAndyProgram/SCrawler.git
synced 2026-03-15 00:02:17 +00:00
2023.4.28.0
Plugins IPluginContentProvider: added DownloadSingleObject function; added tokens to GetMedia and Download functions; removed GetSpecialData function Add IDownloadableMedia interface Removed 'Channel' option from all functions and enums ISiteSettings: added GetSingleMediaInstance function ExchangeOptions: removed 'IsChannel' UserMediaTypes: added Audio and AudioPre enums IUserMedia, PluginUserMedia: changed ContentType and DownloadState from integers to their enums SCrawler Add YouTube standalone downloader Add gallery-dl & yt-dlp support Remove 'UserInfo' requirement from 'ProfilesSaved' Update 'SiteSettingsBase' to use domains and Netscape cookies UserDataBase: remove channels; remove old 'Merge' const; standardize SavedPosts file naming; move 'ValidateMD5' function from Twitter to UserDataBase to use it in other UserData classes; add 'DownloadSingleObject' environment for single posts; add validating file extension for m3u8 during download; add reindex of video file during download Rewritten DomainsContainer Create a universal settings form and PSettingsArttribute Gfycat, Imgur: turn these classes into IUserData to download a single object All plugins: update 'GetInstance' function for saved posts; update domains where implemented; remove 'OptionForm' where it exists; update options where they exist; update unix date providers; reconfigure channels where they exist LPSG: fix attachments; update converters and regex Add sites: ThisVid, Mastodon, Pinterest, YouTube, YouTube music Reddit: standardize container parsing for all data types; new channel environment; fix 'ReparseMissing' function; redirect data downloading to the base download function, saved crossposts support Twitter: fixed gif path bug; fixed downloading saved posts PornHub: hide unnecessary errors; photo galleries bug RedGifs: add 'UserAgent' option Added icons to download progress Rename some objects Completely redesigned standalone downloader form and rewritten its environment WebClient2: update to use tokens Labels: update label form (save labels to file only when OK button is clicked); change removing labels.txt from recycle bin to permanent; disable storing label 'NoParsedUser' UserCreatorForm: remove the 'Channel' checkbox and related functions; ability to extract the user's URL from the buffer and apply parameters if found Remove temporary 'EncryptCookies' module MainFrame: added simplified way to create new users (Ctrl+Insert to create a new user with default parameters from clipboard URL); removed SCrawler command line argument "-v" (remove the ability to run SCrawler as video downloader) PropertyValueHost: update for option forms compatibility SettingsHost: removed 'GetSpecialData' fork; added 'GetSingleMediaInstance' fork UserDataHost: update functions with tokens; update events; add 'DownloadSingleObject' function Settings: add the ability to get environment from 4 destinations; add the ability to set the program environment manually; add CMDEncoding; add cache; remove the old function 'RemoveUnusedPlugins'; add 'STDownloader' properties; add YT compatibility; add new notification options; add deleting user settings file when 'SettingsCLS.Dispose()' if where are no users in SCrawler UserFinder: remove old 'Merge' const; remove channel option UserInfo: remove channel option
This commit is contained in:
469
SCrawler.YouTube/Controls/MusicPlaylistsForm.Designer.vb
generated
Normal file
469
SCrawler.YouTube/Controls/MusicPlaylistsForm.Designer.vb
generated
Normal file
@@ -0,0 +1,469 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Namespace API.YouTube.Controls
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Friend Class MusicPlaylistsForm : Inherits System.Windows.Forms.Form
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
Private components As System.ComponentModel.IContainer
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_BUTTONS As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_PLS As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_PLS_BUTTONS As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_PLS_ITEMS As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_SETTINGS As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_FORMATS As System.Windows.Forms.TableLayoutPanel
|
||||
Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MusicPlaylistsForm))
|
||||
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 LBL_FORMAT As System.Windows.Forms.Label
|
||||
Dim TP_LYRICS 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 ActionButton6 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim ActionButton7 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim ActionButton8 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim TT_MAIN As System.Windows.Forms.ToolTip
|
||||
Me.BTT_DOWN = New System.Windows.Forms.Button()
|
||||
Me.BTT_CANCEL = New System.Windows.Forms.Button()
|
||||
Me.SPLITTER_MAIN = New System.Windows.Forms.SplitContainer()
|
||||
Me.LIST_PLAYLISTS = New System.Windows.Forms.CheckedListBox()
|
||||
Me.BTT_PLS_ALL = New System.Windows.Forms.Button()
|
||||
Me.BTT_PLS_NONE = New System.Windows.Forms.Button()
|
||||
Me.LIST_ITEMS = New System.Windows.Forms.CheckedListBox()
|
||||
Me.TXT_FORMATS_ADDIT = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||
Me.CMB_FORMATS = New System.Windows.Forms.ComboBox()
|
||||
Me.TXT_SUBS = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||
Me.CH_DOWN_LYRICS = New System.Windows.Forms.CheckBox()
|
||||
Me.TXT_OUTPUT_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||
TP_MAIN = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_BUTTONS = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_PLS = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_PLS_BUTTONS = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_PLS_ITEMS = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_SETTINGS = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_FORMATS = New System.Windows.Forms.TableLayoutPanel()
|
||||
LBL_FORMAT = New System.Windows.Forms.Label()
|
||||
TP_LYRICS = New System.Windows.Forms.TableLayoutPanel()
|
||||
TT_MAIN = New System.Windows.Forms.ToolTip(Me.components)
|
||||
TP_MAIN.SuspendLayout()
|
||||
TP_BUTTONS.SuspendLayout()
|
||||
CType(Me.SPLITTER_MAIN, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SPLITTER_MAIN.Panel1.SuspendLayout()
|
||||
Me.SPLITTER_MAIN.Panel2.SuspendLayout()
|
||||
Me.SPLITTER_MAIN.SuspendLayout()
|
||||
TP_PLS.SuspendLayout()
|
||||
TP_PLS_BUTTONS.SuspendLayout()
|
||||
TP_PLS_ITEMS.SuspendLayout()
|
||||
TP_SETTINGS.SuspendLayout()
|
||||
TP_FORMATS.SuspendLayout()
|
||||
CType(Me.TXT_FORMATS_ADDIT, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
TP_LYRICS.SuspendLayout()
|
||||
CType(Me.TXT_SUBS, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.TXT_OUTPUT_PATH, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'TP_MAIN
|
||||
'
|
||||
TP_MAIN.ColumnCount = 1
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.Controls.Add(TP_BUTTONS, 0, 2)
|
||||
TP_MAIN.Controls.Add(Me.SPLITTER_MAIN, 0, 1)
|
||||
TP_MAIN.Controls.Add(TP_SETTINGS, 0, 0)
|
||||
TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||
TP_MAIN.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_MAIN.Name = "TP_MAIN"
|
||||
TP_MAIN.RowCount = 3
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 84.0!))
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
TP_MAIN.Size = New System.Drawing.Size(434, 261)
|
||||
TP_MAIN.TabIndex = 0
|
||||
'
|
||||
'TP_BUTTONS
|
||||
'
|
||||
TP_BUTTONS.ColumnCount = 3
|
||||
TP_BUTTONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_BUTTONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100.0!))
|
||||
TP_BUTTONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 100.0!))
|
||||
TP_BUTTONS.Controls.Add(Me.BTT_DOWN, 1, 0)
|
||||
TP_BUTTONS.Controls.Add(Me.BTT_CANCEL, 2, 0)
|
||||
TP_BUTTONS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_BUTTONS.Location = New System.Drawing.Point(0, 236)
|
||||
TP_BUTTONS.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_BUTTONS.Name = "TP_BUTTONS"
|
||||
TP_BUTTONS.RowCount = 1
|
||||
TP_BUTTONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_BUTTONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
TP_BUTTONS.Size = New System.Drawing.Size(434, 25)
|
||||
TP_BUTTONS.TabIndex = 2
|
||||
'
|
||||
'BTT_DOWN
|
||||
'
|
||||
Me.BTT_DOWN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.BTT_DOWN.Location = New System.Drawing.Point(236, 2)
|
||||
Me.BTT_DOWN.Margin = New System.Windows.Forms.Padding(2)
|
||||
Me.BTT_DOWN.Name = "BTT_DOWN"
|
||||
Me.BTT_DOWN.Size = New System.Drawing.Size(96, 21)
|
||||
Me.BTT_DOWN.TabIndex = 0
|
||||
Me.BTT_DOWN.Text = "Download"
|
||||
Me.BTT_DOWN.UseVisualStyleBackColor = True
|
||||
'
|
||||
'BTT_CANCEL
|
||||
'
|
||||
Me.BTT_CANCEL.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
Me.BTT_CANCEL.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.BTT_CANCEL.Location = New System.Drawing.Point(336, 2)
|
||||
Me.BTT_CANCEL.Margin = New System.Windows.Forms.Padding(2)
|
||||
Me.BTT_CANCEL.Name = "BTT_CANCEL"
|
||||
Me.BTT_CANCEL.Size = New System.Drawing.Size(96, 21)
|
||||
Me.BTT_CANCEL.TabIndex = 1
|
||||
Me.BTT_CANCEL.Text = "Cancel"
|
||||
Me.BTT_CANCEL.UseVisualStyleBackColor = True
|
||||
'
|
||||
'SPLITTER_MAIN
|
||||
'
|
||||
Me.SPLITTER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.SPLITTER_MAIN.Location = New System.Drawing.Point(3, 87)
|
||||
Me.SPLITTER_MAIN.Name = "SPLITTER_MAIN"
|
||||
'
|
||||
'SPLITTER_MAIN.Panel1
|
||||
'
|
||||
Me.SPLITTER_MAIN.Panel1.Controls.Add(TP_PLS)
|
||||
Me.SPLITTER_MAIN.Panel1MinSize = 110
|
||||
'
|
||||
'SPLITTER_MAIN.Panel2
|
||||
'
|
||||
Me.SPLITTER_MAIN.Panel2.Controls.Add(TP_PLS_ITEMS)
|
||||
Me.SPLITTER_MAIN.Size = New System.Drawing.Size(428, 146)
|
||||
Me.SPLITTER_MAIN.SplitterDistance = 142
|
||||
Me.SPLITTER_MAIN.TabIndex = 0
|
||||
'
|
||||
'TP_PLS
|
||||
'
|
||||
TP_PLS.ColumnCount = 1
|
||||
TP_PLS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_PLS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||
TP_PLS.Controls.Add(Me.LIST_PLAYLISTS, 0, 0)
|
||||
TP_PLS.Controls.Add(TP_PLS_BUTTONS, 0, 1)
|
||||
TP_PLS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_PLS.Location = New System.Drawing.Point(0, 0)
|
||||
TP_PLS.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_PLS.Name = "TP_PLS"
|
||||
TP_PLS.RowCount = 2
|
||||
TP_PLS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_PLS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
TP_PLS.Size = New System.Drawing.Size(142, 146)
|
||||
TP_PLS.TabIndex = 0
|
||||
'
|
||||
'LIST_PLAYLISTS
|
||||
'
|
||||
Me.LIST_PLAYLISTS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LIST_PLAYLISTS.FormattingEnabled = True
|
||||
Me.LIST_PLAYLISTS.Location = New System.Drawing.Point(3, 3)
|
||||
Me.LIST_PLAYLISTS.Name = "LIST_PLAYLISTS"
|
||||
Me.LIST_PLAYLISTS.Size = New System.Drawing.Size(136, 115)
|
||||
Me.LIST_PLAYLISTS.TabIndex = 0
|
||||
Me.LIST_PLAYLISTS.ThreeDCheckBoxes = True
|
||||
'
|
||||
'TP_PLS_BUTTONS
|
||||
'
|
||||
TP_PLS_BUTTONS.ColumnCount = 3
|
||||
TP_PLS_BUTTONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50.0!))
|
||||
TP_PLS_BUTTONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50.0!))
|
||||
TP_PLS_BUTTONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_PLS_BUTTONS.Controls.Add(Me.BTT_PLS_ALL, 0, 0)
|
||||
TP_PLS_BUTTONS.Controls.Add(Me.BTT_PLS_NONE, 1, 0)
|
||||
TP_PLS_BUTTONS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_PLS_BUTTONS.Location = New System.Drawing.Point(0, 121)
|
||||
TP_PLS_BUTTONS.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_PLS_BUTTONS.Name = "TP_PLS_BUTTONS"
|
||||
TP_PLS_BUTTONS.RowCount = 1
|
||||
TP_PLS_BUTTONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_PLS_BUTTONS.Size = New System.Drawing.Size(142, 25)
|
||||
TP_PLS_BUTTONS.TabIndex = 1
|
||||
'
|
||||
'BTT_PLS_ALL
|
||||
'
|
||||
Me.BTT_PLS_ALL.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.BTT_PLS_ALL.Location = New System.Drawing.Point(2, 2)
|
||||
Me.BTT_PLS_ALL.Margin = New System.Windows.Forms.Padding(2)
|
||||
Me.BTT_PLS_ALL.Name = "BTT_PLS_ALL"
|
||||
Me.BTT_PLS_ALL.Size = New System.Drawing.Size(46, 21)
|
||||
Me.BTT_PLS_ALL.TabIndex = 0
|
||||
Me.BTT_PLS_ALL.Tag = "a"
|
||||
Me.BTT_PLS_ALL.Text = "All"
|
||||
TT_MAIN.SetToolTip(Me.BTT_PLS_ALL, "Select all")
|
||||
Me.BTT_PLS_ALL.UseVisualStyleBackColor = True
|
||||
'
|
||||
'BTT_PLS_NONE
|
||||
'
|
||||
Me.BTT_PLS_NONE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.BTT_PLS_NONE.Location = New System.Drawing.Point(52, 2)
|
||||
Me.BTT_PLS_NONE.Margin = New System.Windows.Forms.Padding(2)
|
||||
Me.BTT_PLS_NONE.Name = "BTT_PLS_NONE"
|
||||
Me.BTT_PLS_NONE.Size = New System.Drawing.Size(46, 21)
|
||||
Me.BTT_PLS_NONE.TabIndex = 1
|
||||
Me.BTT_PLS_NONE.Tag = "n"
|
||||
Me.BTT_PLS_NONE.Text = "None"
|
||||
TT_MAIN.SetToolTip(Me.BTT_PLS_NONE, "Select none")
|
||||
Me.BTT_PLS_NONE.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TP_PLS_ITEMS
|
||||
'
|
||||
TP_PLS_ITEMS.ColumnCount = 1
|
||||
TP_PLS_ITEMS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_PLS_ITEMS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||
TP_PLS_ITEMS.Controls.Add(Me.LIST_ITEMS, 0, 0)
|
||||
TP_PLS_ITEMS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_PLS_ITEMS.Location = New System.Drawing.Point(0, 0)
|
||||
TP_PLS_ITEMS.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_PLS_ITEMS.Name = "TP_PLS_ITEMS"
|
||||
TP_PLS_ITEMS.RowCount = 2
|
||||
TP_PLS_ITEMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_PLS_ITEMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
TP_PLS_ITEMS.Size = New System.Drawing.Size(282, 146)
|
||||
TP_PLS_ITEMS.TabIndex = 1
|
||||
'
|
||||
'LIST_ITEMS
|
||||
'
|
||||
Me.LIST_ITEMS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LIST_ITEMS.FormattingEnabled = True
|
||||
Me.LIST_ITEMS.Location = New System.Drawing.Point(3, 3)
|
||||
Me.LIST_ITEMS.Name = "LIST_ITEMS"
|
||||
Me.LIST_ITEMS.Size = New System.Drawing.Size(276, 115)
|
||||
Me.LIST_ITEMS.TabIndex = 0
|
||||
'
|
||||
'TP_SETTINGS
|
||||
'
|
||||
TP_SETTINGS.ColumnCount = 1
|
||||
TP_SETTINGS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_SETTINGS.Controls.Add(TP_FORMATS, 0, 1)
|
||||
TP_SETTINGS.Controls.Add(TP_LYRICS, 0, 0)
|
||||
TP_SETTINGS.Controls.Add(Me.TXT_OUTPUT_PATH, 0, 2)
|
||||
TP_SETTINGS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_SETTINGS.Location = New System.Drawing.Point(0, 0)
|
||||
TP_SETTINGS.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_SETTINGS.Name = "TP_SETTINGS"
|
||||
TP_SETTINGS.RowCount = 3
|
||||
TP_SETTINGS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!))
|
||||
TP_SETTINGS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!))
|
||||
TP_SETTINGS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333!))
|
||||
TP_SETTINGS.Size = New System.Drawing.Size(434, 84)
|
||||
TP_SETTINGS.TabIndex = 1
|
||||
'
|
||||
'TP_FORMATS
|
||||
'
|
||||
TP_FORMATS.ColumnCount = 3
|
||||
TP_FORMATS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50.0!))
|
||||
TP_FORMATS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 65.0!))
|
||||
TP_FORMATS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_FORMATS.Controls.Add(Me.TXT_FORMATS_ADDIT, 2, 0)
|
||||
TP_FORMATS.Controls.Add(LBL_FORMAT, 0, 0)
|
||||
TP_FORMATS.Controls.Add(Me.CMB_FORMATS, 1, 0)
|
||||
TP_FORMATS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_FORMATS.Location = New System.Drawing.Point(0, 28)
|
||||
TP_FORMATS.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_FORMATS.Name = "TP_FORMATS"
|
||||
TP_FORMATS.RowCount = 1
|
||||
TP_FORMATS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_FORMATS.Size = New System.Drawing.Size(434, 28)
|
||||
TP_FORMATS.TabIndex = 1
|
||||
'
|
||||
'TXT_FORMATS_ADDIT
|
||||
'
|
||||
ActionButton1.BackgroundImage = CType(resources.GetObject("ActionButton1.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton1.Enabled = False
|
||||
ActionButton1.Name = "Open"
|
||||
ActionButton1.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Open
|
||||
ActionButton2.BackgroundImage = CType(resources.GetObject("ActionButton2.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton2.Enabled = False
|
||||
ActionButton2.Name = "Refresh"
|
||||
ActionButton2.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Refresh
|
||||
ActionButton3.BackgroundImage = CType(resources.GetObject("ActionButton3.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton3.Enabled = False
|
||||
ActionButton3.Name = "Clear"
|
||||
ActionButton3.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear
|
||||
Me.TXT_FORMATS_ADDIT.Buttons.Add(ActionButton1)
|
||||
Me.TXT_FORMATS_ADDIT.Buttons.Add(ActionButton2)
|
||||
Me.TXT_FORMATS_ADDIT.Buttons.Add(ActionButton3)
|
||||
Me.TXT_FORMATS_ADDIT.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.CheckBox
|
||||
Me.TXT_FORMATS_ADDIT.CaptionText = "Additional formats"
|
||||
Me.TXT_FORMATS_ADDIT.CaptionToolTipEnabled = True
|
||||
Me.TXT_FORMATS_ADDIT.CaptionToolTipText = "Convert every downloaded track to the formats you choose."
|
||||
Me.TXT_FORMATS_ADDIT.CaptionWidth = 115.0R
|
||||
Me.TXT_FORMATS_ADDIT.ClearTextByButtonClear = False
|
||||
Me.TXT_FORMATS_ADDIT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_FORMATS_ADDIT.Location = New System.Drawing.Point(118, 3)
|
||||
Me.TXT_FORMATS_ADDIT.Name = "TXT_FORMATS_ADDIT"
|
||||
Me.TXT_FORMATS_ADDIT.Size = New System.Drawing.Size(313, 22)
|
||||
Me.TXT_FORMATS_ADDIT.TabIndex = 2
|
||||
Me.TXT_FORMATS_ADDIT.Tag = "a"
|
||||
Me.TXT_FORMATS_ADDIT.TextBoxReadOnly = True
|
||||
'
|
||||
'LBL_FORMAT
|
||||
'
|
||||
LBL_FORMAT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
LBL_FORMAT.Location = New System.Drawing.Point(3, 0)
|
||||
LBL_FORMAT.Margin = New System.Windows.Forms.Padding(3, 0, 0, 0)
|
||||
LBL_FORMAT.Name = "LBL_FORMAT"
|
||||
LBL_FORMAT.Size = New System.Drawing.Size(47, 28)
|
||||
LBL_FORMAT.TabIndex = 0
|
||||
LBL_FORMAT.Text = "Format:"
|
||||
LBL_FORMAT.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
TT_MAIN.SetToolTip(LBL_FORMAT, "Output files format")
|
||||
'
|
||||
'CMB_FORMATS
|
||||
'
|
||||
Me.CMB_FORMATS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.CMB_FORMATS.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.CMB_FORMATS.FormattingEnabled = True
|
||||
Me.CMB_FORMATS.Location = New System.Drawing.Point(53, 3)
|
||||
Me.CMB_FORMATS.Name = "CMB_FORMATS"
|
||||
Me.CMB_FORMATS.Size = New System.Drawing.Size(59, 21)
|
||||
Me.CMB_FORMATS.TabIndex = 1
|
||||
'
|
||||
'TP_LYRICS
|
||||
'
|
||||
TP_LYRICS.ColumnCount = 2
|
||||
TP_LYRICS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 115.0!))
|
||||
TP_LYRICS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_LYRICS.Controls.Add(Me.TXT_SUBS, 1, 0)
|
||||
TP_LYRICS.Controls.Add(Me.CH_DOWN_LYRICS, 0, 0)
|
||||
TP_LYRICS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_LYRICS.Location = New System.Drawing.Point(0, 0)
|
||||
TP_LYRICS.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_LYRICS.Name = "TP_LYRICS"
|
||||
TP_LYRICS.RowCount = 1
|
||||
TP_LYRICS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_LYRICS.Size = New System.Drawing.Size(434, 28)
|
||||
TP_LYRICS.TabIndex = 0
|
||||
'
|
||||
'TXT_SUBS
|
||||
'
|
||||
ActionButton4.BackgroundImage = CType(resources.GetObject("ActionButton4.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton4.Enabled = False
|
||||
ActionButton4.Name = "Open"
|
||||
ActionButton4.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Open
|
||||
ActionButton5.BackgroundImage = CType(resources.GetObject("ActionButton5.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton5.Enabled = False
|
||||
ActionButton5.Name = "Refresh"
|
||||
ActionButton5.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Refresh
|
||||
ActionButton6.BackgroundImage = CType(resources.GetObject("ActionButton6.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton6.Enabled = False
|
||||
ActionButton6.Name = "Clear"
|
||||
ActionButton6.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear
|
||||
Me.TXT_SUBS.Buttons.Add(ActionButton4)
|
||||
Me.TXT_SUBS.Buttons.Add(ActionButton5)
|
||||
Me.TXT_SUBS.Buttons.Add(ActionButton6)
|
||||
Me.TXT_SUBS.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.CheckBox
|
||||
Me.TXT_SUBS.CaptionText = "Additional lyrics"
|
||||
Me.TXT_SUBS.CaptionToolTipEnabled = True
|
||||
Me.TXT_SUBS.CaptionToolTipText = "Convert all downloaded lyrics to the formats you choose."
|
||||
Me.TXT_SUBS.CaptionWidth = 115.0R
|
||||
Me.TXT_SUBS.ClearTextByButtonClear = False
|
||||
Me.TXT_SUBS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_SUBS.Location = New System.Drawing.Point(118, 3)
|
||||
Me.TXT_SUBS.Name = "TXT_SUBS"
|
||||
Me.TXT_SUBS.Size = New System.Drawing.Size(313, 22)
|
||||
Me.TXT_SUBS.TabIndex = 1
|
||||
Me.TXT_SUBS.Tag = "s"
|
||||
Me.TXT_SUBS.TextBoxReadOnly = True
|
||||
'
|
||||
'CH_DOWN_LYRICS
|
||||
'
|
||||
Me.CH_DOWN_LYRICS.AutoSize = True
|
||||
Me.CH_DOWN_LYRICS.CheckAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
Me.CH_DOWN_LYRICS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.CH_DOWN_LYRICS.Location = New System.Drawing.Point(3, 3)
|
||||
Me.CH_DOWN_LYRICS.Name = "CH_DOWN_LYRICS"
|
||||
Me.CH_DOWN_LYRICS.Size = New System.Drawing.Size(109, 22)
|
||||
Me.CH_DOWN_LYRICS.TabIndex = 0
|
||||
Me.CH_DOWN_LYRICS.Text = "Download lyrics"
|
||||
Me.CH_DOWN_LYRICS.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
TT_MAIN.SetToolTip(Me.CH_DOWN_LYRICS, "Download lyrics if available")
|
||||
Me.CH_DOWN_LYRICS.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TXT_OUTPUT_PATH
|
||||
'
|
||||
ActionButton7.BackgroundImage = CType(resources.GetObject("ActionButton7.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton7.Name = "Open"
|
||||
ActionButton7.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Open
|
||||
ActionButton8.BackgroundImage = CType(resources.GetObject("ActionButton8.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton8.Name = "Clear"
|
||||
ActionButton8.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear
|
||||
Me.TXT_OUTPUT_PATH.Buttons.Add(ActionButton7)
|
||||
Me.TXT_OUTPUT_PATH.Buttons.Add(ActionButton8)
|
||||
Me.TXT_OUTPUT_PATH.CaptionText = "Output path"
|
||||
Me.TXT_OUTPUT_PATH.CaptionWidth = 112.0R
|
||||
Me.TXT_OUTPUT_PATH.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_OUTPUT_PATH.Location = New System.Drawing.Point(3, 59)
|
||||
Me.TXT_OUTPUT_PATH.Name = "TXT_OUTPUT_PATH"
|
||||
Me.TXT_OUTPUT_PATH.Size = New System.Drawing.Size(428, 22)
|
||||
Me.TXT_OUTPUT_PATH.TabIndex = 2
|
||||
'
|
||||
'MusicPlaylistsForm
|
||||
'
|
||||
Me.AcceptButton = Me.BTT_DOWN
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.CancelButton = Me.BTT_CANCEL
|
||||
Me.ClientSize = New System.Drawing.Size(434, 261)
|
||||
Me.Controls.Add(TP_MAIN)
|
||||
Me.Icon = Global.SCrawler.My.Resources.SiteYouTube.YouTubeMusicIcon_32
|
||||
Me.KeyPreview = True
|
||||
Me.MinimumSize = New System.Drawing.Size(450, 300)
|
||||
Me.Name = "MusicPlaylistsForm"
|
||||
Me.Text = "Albums"
|
||||
TP_MAIN.ResumeLayout(False)
|
||||
TP_BUTTONS.ResumeLayout(False)
|
||||
Me.SPLITTER_MAIN.Panel1.ResumeLayout(False)
|
||||
Me.SPLITTER_MAIN.Panel2.ResumeLayout(False)
|
||||
CType(Me.SPLITTER_MAIN, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.SPLITTER_MAIN.ResumeLayout(False)
|
||||
TP_PLS.ResumeLayout(False)
|
||||
TP_PLS_BUTTONS.ResumeLayout(False)
|
||||
TP_PLS_ITEMS.ResumeLayout(False)
|
||||
TP_SETTINGS.ResumeLayout(False)
|
||||
TP_FORMATS.ResumeLayout(False)
|
||||
CType(Me.TXT_FORMATS_ADDIT, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
TP_LYRICS.ResumeLayout(False)
|
||||
TP_LYRICS.PerformLayout()
|
||||
CType(Me.TXT_SUBS, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.TXT_OUTPUT_PATH, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Private WithEvents BTT_DOWN As Button
|
||||
Private WithEvents BTT_CANCEL As Button
|
||||
Private WithEvents LIST_PLAYLISTS As CheckedListBox
|
||||
Private WithEvents LIST_ITEMS As CheckedListBox
|
||||
Private WithEvents TXT_SUBS As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||
Private WithEvents BTT_PLS_ALL As Button
|
||||
Private WithEvents BTT_PLS_NONE As Button
|
||||
Private WithEvents TXT_FORMATS_ADDIT As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||
Private WithEvents CMB_FORMATS As ComboBox
|
||||
Private WithEvents SPLITTER_MAIN As SplitContainer
|
||||
Private WithEvents CH_DOWN_LYRICS As CheckBox
|
||||
Private WithEvents TXT_OUTPUT_PATH As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||
End Class
|
||||
End Namespace
|
||||
243
SCrawler.YouTube/Controls/MusicPlaylistsForm.resx
Normal file
243
SCrawler.YouTube/Controls/MusicPlaylistsForm.resx
Normal file
@@ -0,0 +1,243 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="TP_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_BUTTONS.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_PLS.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_PLS_BUTTONS.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TT_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TT_MAIN.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="TP_PLS_ITEMS.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_SETTINGS.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_FORMATS.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="ActionButton1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
|
||||
WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
|
||||
aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
|
||||
5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
|
||||
vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
|
||||
cMaRN0UdBBkAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton2.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
|
||||
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElE
|
||||
QVQ4T2P4//8/QczOJyyqHpzfiE0OQwAZC8iqszAzs7CJ69o4BR768V/W2jcGXQ0KB4aFNS3dDQtnrbCb
|
||||
ePCK48wTN1wXXXzge/jXf/clV55zC4hIIatF0cjIyMikElzc57z0wX+XHd/+2+//99/ywP//xlu//tdb
|
||||
+eK/4Zp3/1WTOhYzARViNUAluKjTdf37/0ZTTn9TbdhwXblhwwW1/qOP1Ja9+K8w+95/6cm3/6v2Xvkv
|
||||
qKjniGGAoIqRpW3/4e8S9uGdzFz82gwMDFxAzCxm4ZegtuLDf+VJ1/8rZM25IqLvnM/CximCYYCic1QN
|
||||
v7x2JIwPwyrJ3XNUylddE9G2TWNmZOBDl4czmJiZMSRBmFdSyYyJgUEQmxwIYxWEYXZBCUls4sgYq6CA
|
||||
prWNbtG8nXKeaVPR5XiVjSxEzf0yYXy4BBMLO6eQjoOXZvrkbbazrv53Xf/2v4CSbjBMXkhBl1/CMyNZ
|
||||
qWnvGy5pNQ+YONwAfjXzAOupl/47LLr333L50/96q9/8l23YdES6cO5KuYqVW+R7Tj6SnfP0v4hryjyY
|
||||
HhQDmFjYeHVKFp7WX/Xuv9Kq9/+Vd/z7r7rv/3+l7f//y676DEwDN/9L+BVvYkKLCTgDhNkkVUyVlr74
|
||||
qbbz73/VOTc/qsy89kWx+9h7qbQpJwS1bbOAscGGrB6EUTggLOqf16C55ft/HlnNAFZOXgVWdi4FRgYG
|
||||
VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton3.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="LBL_FORMAT.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_LYRICS.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<data name="ActionButton4.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
|
||||
WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
|
||||
aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
|
||||
5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
|
||||
vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
|
||||
cMaRN0UdBBkAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton5.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
|
||||
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElE
|
||||
QVQ4T2P4//8/QczOJyyqHpzfiE0OQwAZC8iqszAzs7CJ69o4BR768V/W2jcGXQ0KB4aFNS3dDQtnrbCb
|
||||
ePCK48wTN1wXXXzge/jXf/clV55zC4hIIatF0cjIyMikElzc57z0wX+XHd/+2+//99/ywP//xlu//tdb
|
||||
+eK/4Zp3/1WTOhYzARViNUAluKjTdf37/0ZTTn9TbdhwXblhwwW1/qOP1Ja9+K8w+95/6cm3/6v2Xvkv
|
||||
qKjniGGAoIqRpW3/4e8S9uGdzFz82gwMDFxAzCxm4ZegtuLDf+VJ1/8rZM25IqLvnM/CximCYYCic1QN
|
||||
v7x2JIwPwyrJ3XNUylddE9G2TWNmZOBDl4czmJiZMSRBmFdSyYyJgUEQmxwIYxWEYXZBCUls4sgYq6CA
|
||||
prWNbtG8nXKeaVPR5XiVjSxEzf0yYXy4BBMLO6eQjoOXZvrkbbazrv53Xf/2v4CSbjBMXkhBl1/CMyNZ
|
||||
qWnvGy5pNQ+YONwAfjXzAOupl/47LLr333L50/96q9/8l23YdES6cO5KuYqVW+R7Tj6SnfP0v4hryjyY
|
||||
HhQDmFjYeHVKFp7WX/Xuv9Kq9/+Vd/z7r7rv/3+l7f//y676DEwDN/9L+BVvYkKLCTgDhNkkVUyVlr74
|
||||
qbbz73/VOTc/qsy89kWx+9h7qbQpJwS1bbOAscGGrB6EUTggLOqf16C55ft/HlnNAFZOXgVWdi4FRgYG
|
||||
VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton6.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton7.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
|
||||
WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
|
||||
aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
|
||||
5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
|
||||
vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
|
||||
cMaRN0UdBBkAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton8.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
262
SCrawler.YouTube/Controls/MusicPlaylistsForm.vb
Normal file
262
SCrawler.YouTube/Controls/MusicPlaylistsForm.vb
Normal file
@@ -0,0 +1,262 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Imports System.ComponentModel
|
||||
Imports SCrawler.API.YouTube.Objects
|
||||
Imports PersonalUtilities.Forms
|
||||
Imports PersonalUtilities.Forms.Controls
|
||||
Imports PersonalUtilities.Forms.Controls.Base
|
||||
Imports PersonalUtilities.Functions.XML
|
||||
Imports PersonalUtilities.Functions.XML.Base
|
||||
Imports ADB = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons
|
||||
Namespace API.YouTube.Controls
|
||||
Friend Class MusicPlaylistsForm : Implements IDesignXMLContainer
|
||||
#Region "Declarations"
|
||||
Private MyView As FormView
|
||||
Friend Property DesignXML As EContainer Implements IDesignXMLContainer.DesignXML
|
||||
Private Property DesignXMLNodes As String() Implements IDesignXMLContainer.DesignXMLNodes
|
||||
Private Property DesignXMLNodeName As String Implements IDesignXMLContainer.DesignXMLNodeName
|
||||
Private ReadOnly MyContainer As IYouTubeMediaContainer
|
||||
Private Initializing As Boolean = True
|
||||
Private ReadOnly Property Current As IYouTubeMediaContainer
|
||||
Get
|
||||
With MyContainer
|
||||
If .ObjectType = Base.YouTubeMediaType.Channel Then
|
||||
If _LatestSelected.ValueBetween(0, .Count - 1) Then Return .Elements(_LatestSelected)
|
||||
Else
|
||||
Return .Self
|
||||
End If
|
||||
End With
|
||||
Return Nothing
|
||||
End Get
|
||||
End Property
|
||||
#End Region
|
||||
#Region "Initializer"
|
||||
Friend Sub New(ByVal Container As IYouTubeMediaContainer)
|
||||
InitializeComponent()
|
||||
MyContainer = Container
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Form handlers"
|
||||
Private Sub MusicPlaylistsForm_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
If Not DesignXML Is Nothing Then
|
||||
MyView = New FormView(Me)
|
||||
MyView.Import()
|
||||
MyView.SetFormSize()
|
||||
End If
|
||||
|
||||
CMB_FORMATS.Items.AddRange(AvailableAudioFormats)
|
||||
If MyYouTubeSettings.PlaylistFormSplitterDistance > 0 Then SPLITTER_MAIN.SplitterDistancePercentageSet(MyYouTubeSettings.PlaylistFormSplitterDistance)
|
||||
|
||||
With MyContainer
|
||||
CH_DOWN_LYRICS.Checked = Not .OutputSubtitlesFormat.IsEmptyString
|
||||
Dim i%
|
||||
If Not .OutputAudioCodec.IsEmptyString Then
|
||||
i = AvailableAudioFormats.ListIndexOf(Function(ff) ff.StringToLower = .OutputAudioCodec.StringToLower)
|
||||
If i >= 0 Then CMB_FORMATS.SelectedIndex = i
|
||||
End If
|
||||
If CMB_FORMATS.SelectedIndex = -1 Then
|
||||
Dim oac$ = MyYouTubeSettings.DefaultAudioCodecMusic.Value.IfNullOrEmpty("mp3").StringToLower
|
||||
i = AvailableAudioFormats.ListIndexOf(Function(ff) ff.StringToLower = oac)
|
||||
If i >= 0 Then CMB_FORMATS.SelectedIndex = i Else CMB_FORMATS.SelectedIndex = 0
|
||||
End If
|
||||
|
||||
If .ObjectType = Base.YouTubeMediaType.Channel Then
|
||||
If .HasElements Then
|
||||
For Each elem In .Elements : LIST_PLAYLISTS.Items.Add(elem, elem.CheckState) : Next
|
||||
End If
|
||||
ElseIf .ObjectType = Base.YouTubeMediaType.PlayList Then
|
||||
LIST_PLAYLISTS.Items.Add(.Self, .CheckState)
|
||||
Else
|
||||
Throw New InvalidOperationException($"The object type '{ .ObjectType}' is incompatible with 'MusicPlaylistsForm'.")
|
||||
End If
|
||||
LIST_PLAYLISTS.SelectedIndex = 0
|
||||
|
||||
TXT_OUTPUT_PATH.Text = MyYouTubeSettings.OutputPath.Value
|
||||
|
||||
If Not .UserTitle.IsEmptyString Then
|
||||
Text = .UserTitle
|
||||
ElseIf Not .PlaylistTitle.IsEmptyString Then
|
||||
Text = .PlaylistTitle
|
||||
End If
|
||||
|
||||
UpdateSizeText()
|
||||
End With
|
||||
RefillAddit()
|
||||
Initializing = False
|
||||
End Sub
|
||||
Private Sub MusicPlaylistsForm_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
||||
MyYouTubeSettings.PlaylistFormSplitterDistance.Value = SPLITTER_MAIN.SplitterDistancePercentageGet
|
||||
MyView.DisposeIfReady()
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Form text"
|
||||
Private _InitialFormText As String = String.Empty
|
||||
Private Sub UpdateSizeText()
|
||||
If _InitialFormText.IsEmptyString Then _InitialFormText = Text
|
||||
Text = $"{_InitialFormText} ({MyContainer.SizeStr})"
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Settings"
|
||||
Private Sub TXT_SUBS_ActionOnButtonClick(ByVal Sender As ActionButton, ByVal e As ActionButtonEventArgs) Handles TXT_SUBS.ActionOnButtonClick, TXT_FORMATS_ADDIT.ActionOnButtonClick
|
||||
Dim isLyrics As Boolean = DirectCast(e.AssociatedControl, Control).Tag = "s"
|
||||
With DirectCast(MyContainer, YouTubeMediaContainerBase)
|
||||
Select Case Sender.DefaultButton
|
||||
Case ADB.Open
|
||||
Using f As New SimpleListForm(Of String)(IIf(isLyrics, AvailableSubtitlesFormats, AvailableAudioFormats)) With {
|
||||
.DesignXML = DesignXML,
|
||||
.DesignXMLNodeName = SimpleArraysFormNode,
|
||||
.FormText = DirectCast(e.AssociatedControl, TextBoxExtended).CaptionText,
|
||||
.Icon = My.Resources.SiteYouTube.YouTubeMusicIcon_32,
|
||||
.Mode = SimpleListFormModes.CheckedItems
|
||||
}
|
||||
f.DataSelected.ListAddList(IIf(isLyrics, .PostProcessing_OutputSubtitlesFormats, .PostProcessing_OutputAudioFormats))
|
||||
If f.ShowDialog = DialogResult.OK Then
|
||||
If isLyrics Then
|
||||
.PostProcessing_OutputSubtitlesFormats.Clear()
|
||||
.PostProcessing_OutputSubtitlesFormats.ListAddList(f.DataResult)
|
||||
Else
|
||||
.PostProcessing_OutputAudioFormats.Clear()
|
||||
.PostProcessing_OutputAudioFormats.ListAddList(f.DataResult)
|
||||
End If
|
||||
RefillAddit()
|
||||
End If
|
||||
End Using
|
||||
Case ADB.Refresh
|
||||
If isLyrics Then
|
||||
.PostProcessing_OutputSubtitlesFormats_Reset()
|
||||
Else
|
||||
.PostProcessing_OutputAudioFormats_Reset()
|
||||
End If
|
||||
RefillAddit()
|
||||
Case ADB.Clear
|
||||
If isLyrics Then
|
||||
.PostProcessing_OutputSubtitlesFormats.Clear()
|
||||
Else
|
||||
.PostProcessing_OutputAudioFormats.Clear()
|
||||
End If
|
||||
RefillAddit()
|
||||
End Select
|
||||
End With
|
||||
End Sub
|
||||
Private Sub RefillAddit()
|
||||
With DirectCast(MyContainer, YouTubeMediaContainerBase)
|
||||
TXT_SUBS.Text = .PostProcessing_OutputSubtitlesFormats.ListToString
|
||||
TXT_FORMATS_ADDIT.Text = .PostProcessing_OutputAudioFormats.ListToString
|
||||
End With
|
||||
End Sub
|
||||
Private Sub TXT_OUTPUT_PATH_ActionOnButtonClick(ByVal Sender As ActionButton, ByVal e As ActionButtonEventArgs) Handles TXT_OUTPUT_PATH.ActionOnButtonClick
|
||||
If Sender.DefaultButton = ADB.Open Then
|
||||
Dim f As SFile = SFile.SelectPath(TXT_OUTPUT_PATH.Text, "Select files destination", EDP.ReturnValue)
|
||||
If Not f.IsEmptyString Then TXT_OUTPUT_PATH.Text = f
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Lists' handlers"
|
||||
Private _LatestSelected As Integer = -1
|
||||
Private Sub LIST_PLAYLISTS_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LIST_PLAYLISTS.SelectedIndexChanged
|
||||
Dim i% = LIST_PLAYLISTS.SelectedIndex
|
||||
If i >= 0 Then
|
||||
_LatestSelected = i
|
||||
LIST_ITEMS.Items.Clear()
|
||||
With DirectCast(LIST_PLAYLISTS.SelectedItem, IYouTubeMediaContainer)
|
||||
If .HasElements Then
|
||||
For Each elem In .Elements : LIST_ITEMS.Items.Add(elem, elem.Checked) : Next
|
||||
End If
|
||||
End With
|
||||
End If
|
||||
End Sub
|
||||
Private _CheckHandlersSuspended As Boolean = False
|
||||
Private Sub LIST_PLAYLISTS_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles LIST_PLAYLISTS.ItemCheck
|
||||
If Not Initializing And Not _CheckHandlersSuspended Then
|
||||
_CheckHandlersSuspended = True
|
||||
|
||||
Dim checked As Boolean = Not e.NewValue = CheckState.Unchecked
|
||||
|
||||
Dim current As IYouTubeMediaContainer = Me.Current
|
||||
If Not current Is Nothing Then
|
||||
With current
|
||||
.Checked = checked
|
||||
If LIST_ITEMS.Items.Count > 0 Then
|
||||
_ListCheckHandlersSuspended = True
|
||||
For i% = 0 To .Count - 1
|
||||
If i.ValueBetween(0, LIST_ITEMS.Items.Count - 1) Then LIST_ITEMS.SetItemChecked(i, checked)
|
||||
Next
|
||||
_ListCheckHandlersSuspended = False
|
||||
End If
|
||||
If LIST_PLAYLISTS.Items.Count.ValueBetween(0, _LatestSelected) Then LIST_PLAYLISTS.SetItemChecked(_LatestSelected, checked)
|
||||
End With
|
||||
UpdateSizeText()
|
||||
End If
|
||||
|
||||
_CheckHandlersSuspended = False
|
||||
End If
|
||||
End Sub
|
||||
Private _ListCheckHandlersSuspended As Boolean = False
|
||||
Private Sub LIST_ITEMS_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles LIST_ITEMS.ItemCheck
|
||||
If Not Initializing Then
|
||||
Dim current As IYouTubeMediaContainer = Me.Current
|
||||
If Not current Is Nothing Then
|
||||
With current
|
||||
If e.Index.ValueBetween(0, .Count - 1) Then
|
||||
.Elements(e.Index).Checked = e.NewValue
|
||||
If Not _ListCheckHandlersSuspended And _LatestSelected.ValueBetween(0, LIST_PLAYLISTS.Items.Count - 1) Then
|
||||
Dim checked As Boolean = .Elements(e.Index).Checked
|
||||
_CheckHandlersSuspended = True
|
||||
If .Elements.All(Function(ee) ee.Checked = checked) Then
|
||||
LIST_PLAYLISTS.SetItemChecked(_LatestSelected, checked)
|
||||
Else
|
||||
LIST_PLAYLISTS.SetItemCheckState(_LatestSelected, CheckState.Indeterminate)
|
||||
End If
|
||||
_CheckHandlersSuspended = False
|
||||
LIST_PLAYLISTS.Refresh()
|
||||
UpdateSizeText()
|
||||
End If
|
||||
End If
|
||||
End With
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Selection buttons"
|
||||
Private Sub BTT_PLS_Click(sender As Object, e As EventArgs) Handles BTT_PLS_ALL.Click, BTT_PLS_NONE.Click
|
||||
Dim checked As Boolean = DirectCast(sender, Button).Tag = "a"
|
||||
_CheckHandlersSuspended = True
|
||||
If LIST_PLAYLISTS.Items.Count > 0 Then
|
||||
For i% = 0 To LIST_PLAYLISTS.Items.Count - 1 : LIST_PLAYLISTS.SetItemChecked(i, checked) : Next
|
||||
End If
|
||||
MyContainer.Checked = checked
|
||||
If MyContainer.Count > 1 Then MyContainer.Elements.ForEach(Sub(ee) ee.Checked = checked)
|
||||
_CheckHandlersSuspended = False
|
||||
UpdateSizeText()
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Ok, Cancel"
|
||||
Private Sub BTT_DOWN_Click(sender As Object, e As EventArgs) Handles BTT_DOWN.Click
|
||||
If TXT_OUTPUT_PATH.IsEmptyString Then
|
||||
MsgBoxE({"The output path cannot be null.", "Download music"}, vbCritical)
|
||||
Else
|
||||
With DirectCast(MyContainer, YouTubeMediaContainerBase)
|
||||
.OutputSubtitlesFormat = IIf(CH_DOWN_LYRICS.Checked, "LRC", String.Empty)
|
||||
If Not TXT_SUBS.Checked Then .PostProcessing_OutputSubtitlesFormats.Clear()
|
||||
.OutputAudioCodec = CMB_FORMATS.Text
|
||||
If Not TXT_FORMATS_ADDIT.Checked Then .PostProcessing_OutputAudioFormats.Clear()
|
||||
.File = TXT_OUTPUT_PATH.Text.CSFileP
|
||||
If MyYouTubeSettings.OutputPathAutoChange Then MyYouTubeSettings.OutputPath.Value = .File
|
||||
End With
|
||||
DialogResult = DialogResult.OK
|
||||
Close()
|
||||
End If
|
||||
End Sub
|
||||
Private Sub BTT_CANCEL_Click(sender As Object, e As EventArgs) Handles BTT_CANCEL.Click
|
||||
DialogResult = DialogResult.Cancel
|
||||
Close()
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
94
SCrawler.YouTube/Controls/ParsingProgressForm.Designer.vb
generated
Normal file
94
SCrawler.YouTube/Controls/ParsingProgressForm.Designer.vb
generated
Normal file
@@ -0,0 +1,94 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Namespace API.YouTube.Controls
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Public Class ParsingProgressForm : Inherits System.Windows.Forms.Form
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
Private components As System.ComponentModel.IContainer
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel
|
||||
Me.PR_MAIN = New System.Windows.Forms.ProgressBar()
|
||||
Me.LBL_MAIN = New System.Windows.Forms.Label()
|
||||
TP_MAIN = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_MAIN.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'TP_MAIN
|
||||
'
|
||||
TP_MAIN.ColumnCount = 1
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.Controls.Add(Me.PR_MAIN, 0, 0)
|
||||
TP_MAIN.Controls.Add(Me.LBL_MAIN, 0, 1)
|
||||
TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||
TP_MAIN.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_MAIN.Name = "TP_MAIN"
|
||||
TP_MAIN.RowCount = 2
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
TP_MAIN.Size = New System.Drawing.Size(334, 56)
|
||||
TP_MAIN.TabIndex = 0
|
||||
'
|
||||
'PR_MAIN
|
||||
'
|
||||
Me.PR_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.PR_MAIN.Location = New System.Drawing.Point(3, 3)
|
||||
Me.PR_MAIN.Name = "PR_MAIN"
|
||||
Me.PR_MAIN.Size = New System.Drawing.Size(328, 25)
|
||||
Me.PR_MAIN.TabIndex = 0
|
||||
'
|
||||
'LBL_MAIN
|
||||
'
|
||||
Me.LBL_MAIN.AutoSize = True
|
||||
Me.LBL_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_MAIN.Location = New System.Drawing.Point(3, 31)
|
||||
Me.LBL_MAIN.Name = "LBL_MAIN"
|
||||
Me.LBL_MAIN.Size = New System.Drawing.Size(328, 25)
|
||||
Me.LBL_MAIN.TabIndex = 1
|
||||
Me.LBL_MAIN.TextAlign = System.Drawing.ContentAlignment.TopCenter
|
||||
'
|
||||
'ParsingProgressForm
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(334, 56)
|
||||
Me.ControlBox = False
|
||||
Me.Controls.Add(TP_MAIN)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow
|
||||
Me.KeyPreview = True
|
||||
Me.MaximizeBox = False
|
||||
Me.MaximumSize = New System.Drawing.Size(350, 95)
|
||||
Me.MinimizeBox = False
|
||||
Me.MinimumSize = New System.Drawing.Size(350, 95)
|
||||
Me.Name = "ParsingProgressForm"
|
||||
Me.ShowIcon = False
|
||||
Me.ShowInTaskbar = False
|
||||
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
|
||||
Me.Text = "Parsing progress"
|
||||
Me.TopMost = True
|
||||
TP_MAIN.ResumeLayout(False)
|
||||
TP_MAIN.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Private WithEvents PR_MAIN As ProgressBar
|
||||
Private WithEvents LBL_MAIN As Label
|
||||
End Class
|
||||
End Namespace
|
||||
123
SCrawler.YouTube/Controls/ParsingProgressForm.resx
Normal file
123
SCrawler.YouTube/Controls/ParsingProgressForm.resx
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="TP_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
</root>
|
||||
48
SCrawler.YouTube/Controls/ParsingProgressForm.vb
Normal file
48
SCrawler.YouTube/Controls/ParsingProgressForm.vb
Normal file
@@ -0,0 +1,48 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Imports System.Threading
|
||||
Imports PersonalUtilities.Forms.Toolbars
|
||||
Namespace API.YouTube.Controls
|
||||
Public Class ParsingProgressForm
|
||||
Public ReadOnly Property MyProgress As MyProgress
|
||||
Private ReadOnly TokenSource As CancellationTokenSource
|
||||
Public ReadOnly Property Token As CancellationToken
|
||||
Get
|
||||
Return TokenSource.Token
|
||||
End Get
|
||||
End Property
|
||||
Public Sub New()
|
||||
InitializeComponent()
|
||||
MyProgress = New MyProgress(PR_MAIN, LBL_MAIN, "Data parsing in progress") With {.ResetProgressOnMaximumChanges = False}
|
||||
TokenSource = New CancellationTokenSource
|
||||
End Sub
|
||||
Public Sub SetInitialValues(ByVal Count As Integer, ByVal Info As String)
|
||||
With MyProgress
|
||||
.Maximum = Count
|
||||
.Visible = True
|
||||
.Perform(0.5)
|
||||
.Value = 0
|
||||
.InformationTemporary = Info
|
||||
End With
|
||||
End Sub
|
||||
Private _KeyDownDisabled As Boolean = False
|
||||
Private Sub ParsingProgressForm_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
|
||||
If e.KeyCode = Keys.Escape AndAlso Not _KeyDownDisabled AndAlso MsgBoxE({"Data parsing in progress." & vbCr &
|
||||
"Are you sure you want to stop parsing and cancel the operation?",
|
||||
"Stop parsing"}, vbExclamation + vbYesNo) = vbYes Then
|
||||
_KeyDownDisabled = True
|
||||
TokenSource.Cancel()
|
||||
End If
|
||||
End Sub
|
||||
Private Sub ParsingProgressForm_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
|
||||
MyProgress.Dispose()
|
||||
TokenSource.Dispose()
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
171
SCrawler.YouTube/Controls/PlayListParserForm.Designer.vb
generated
Normal file
171
SCrawler.YouTube/Controls/PlayListParserForm.Designer.vb
generated
Normal file
@@ -0,0 +1,171 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Namespace API.YouTube.Controls
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Friend Class PlayListParserForm : Inherits System.Windows.Forms.Form
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
Private components As System.ComponentModel.IContainer
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel
|
||||
Dim FRM_IN As System.Windows.Forms.GroupBox
|
||||
Dim FRM_OUT As System.Windows.Forms.GroupBox
|
||||
Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(PlayListParserForm))
|
||||
Dim CONTAINER_MAIN As System.Windows.Forms.ToolStripContainer
|
||||
Dim TT_MAIN As System.Windows.Forms.ToolTip
|
||||
Me.TXT_IN = New System.Windows.Forms.RichTextBox()
|
||||
Me.TXT_OUT = New System.Windows.Forms.RichTextBox()
|
||||
Me.TXT_LIMIT = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||
TP_MAIN = New System.Windows.Forms.TableLayoutPanel()
|
||||
FRM_IN = New System.Windows.Forms.GroupBox()
|
||||
FRM_OUT = New System.Windows.Forms.GroupBox()
|
||||
CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer()
|
||||
TT_MAIN = New System.Windows.Forms.ToolTip(Me.components)
|
||||
TP_MAIN.SuspendLayout()
|
||||
FRM_IN.SuspendLayout()
|
||||
FRM_OUT.SuspendLayout()
|
||||
CType(Me.TXT_LIMIT, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CONTAINER_MAIN.ContentPanel.SuspendLayout()
|
||||
CONTAINER_MAIN.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'TP_MAIN
|
||||
'
|
||||
TP_MAIN.ColumnCount = 1
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.Controls.Add(FRM_IN, 0, 1)
|
||||
TP_MAIN.Controls.Add(FRM_OUT, 0, 2)
|
||||
TP_MAIN.Controls.Add(Me.TXT_LIMIT, 0, 0)
|
||||
TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||
TP_MAIN.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_MAIN.Name = "TP_MAIN"
|
||||
TP_MAIN.RowCount = 3
|
||||
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, 50.0!))
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
TP_MAIN.Size = New System.Drawing.Size(384, 261)
|
||||
TP_MAIN.TabIndex = 0
|
||||
'
|
||||
'FRM_IN
|
||||
'
|
||||
FRM_IN.Controls.Add(Me.TXT_IN)
|
||||
FRM_IN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
FRM_IN.Location = New System.Drawing.Point(3, 31)
|
||||
FRM_IN.Name = "FRM_IN"
|
||||
FRM_IN.Size = New System.Drawing.Size(378, 110)
|
||||
FRM_IN.TabIndex = 0
|
||||
FRM_IN.TabStop = False
|
||||
FRM_IN.Text = "In"
|
||||
TT_MAIN.SetToolTip(FRM_IN, "In your browser's DevTools, find the page starting with the following URL and cop" &
|
||||
"y the response text into this window." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "https://music.youtube.com/youtubei/v1/bro" &
|
||||
"wse?key=")
|
||||
'
|
||||
'TXT_IN
|
||||
'
|
||||
Me.TXT_IN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_IN.Location = New System.Drawing.Point(3, 16)
|
||||
Me.TXT_IN.Name = "TXT_IN"
|
||||
Me.TXT_IN.Size = New System.Drawing.Size(372, 91)
|
||||
Me.TXT_IN.TabIndex = 0
|
||||
Me.TXT_IN.Text = ""
|
||||
'
|
||||
'FRM_OUT
|
||||
'
|
||||
FRM_OUT.Controls.Add(Me.TXT_OUT)
|
||||
FRM_OUT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
FRM_OUT.Location = New System.Drawing.Point(3, 147)
|
||||
FRM_OUT.Name = "FRM_OUT"
|
||||
FRM_OUT.Size = New System.Drawing.Size(378, 111)
|
||||
FRM_OUT.TabIndex = 1
|
||||
FRM_OUT.TabStop = False
|
||||
FRM_OUT.Text = "Out"
|
||||
'
|
||||
'TXT_OUT
|
||||
'
|
||||
Me.TXT_OUT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_OUT.Location = New System.Drawing.Point(3, 16)
|
||||
Me.TXT_OUT.Name = "TXT_OUT"
|
||||
Me.TXT_OUT.Size = New System.Drawing.Size(372, 92)
|
||||
Me.TXT_OUT.TabIndex = 0
|
||||
Me.TXT_OUT.Text = ""
|
||||
'
|
||||
'TXT_LIMIT
|
||||
'
|
||||
ActionButton1.BackgroundImage = CType(resources.GetObject("ActionButton1.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton1.Name = "Clear"
|
||||
ActionButton1.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear
|
||||
Me.TXT_LIMIT.Buttons.Add(ActionButton1)
|
||||
Me.TXT_LIMIT.CaptionText = "Remove"
|
||||
Me.TXT_LIMIT.CaptionToolTipEnabled = True
|
||||
Me.TXT_LIMIT.CaptionToolTipText = "Remove playlists starts with..."
|
||||
Me.TXT_LIMIT.CaptionWidth = 50.0R
|
||||
Me.TXT_LIMIT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_LIMIT.Location = New System.Drawing.Point(3, 3)
|
||||
Me.TXT_LIMIT.Name = "TXT_LIMIT"
|
||||
Me.TXT_LIMIT.PlaceholderEnabled = True
|
||||
Me.TXT_LIMIT.PlaceholderText = "e.g. ABCDE"
|
||||
Me.TXT_LIMIT.Size = New System.Drawing.Size(378, 22)
|
||||
Me.TXT_LIMIT.TabIndex = 2
|
||||
'
|
||||
'CONTAINER_MAIN
|
||||
'
|
||||
'
|
||||
'CONTAINER_MAIN.ContentPanel
|
||||
'
|
||||
CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN)
|
||||
CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(384, 261)
|
||||
CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
CONTAINER_MAIN.LeftToolStripPanelVisible = False
|
||||
CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||
CONTAINER_MAIN.Name = "CONTAINER_MAIN"
|
||||
CONTAINER_MAIN.RightToolStripPanelVisible = False
|
||||
CONTAINER_MAIN.Size = New System.Drawing.Size(384, 261)
|
||||
CONTAINER_MAIN.TabIndex = 0
|
||||
CONTAINER_MAIN.TopToolStripPanelVisible = False
|
||||
'
|
||||
'PlayListParserForm
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(384, 261)
|
||||
Me.Controls.Add(CONTAINER_MAIN)
|
||||
Me.Icon = Global.SCrawler.My.Resources.SiteYouTube.YouTubeMusicIcon_32
|
||||
Me.KeyPreview = True
|
||||
Me.MinimizeBox = False
|
||||
Me.MinimumSize = New System.Drawing.Size(400, 300)
|
||||
Me.Name = "PlayListParserForm"
|
||||
Me.ShowInTaskbar = False
|
||||
Me.Text = "Playlist parser"
|
||||
TP_MAIN.ResumeLayout(False)
|
||||
FRM_IN.ResumeLayout(False)
|
||||
FRM_OUT.ResumeLayout(False)
|
||||
CType(Me.TXT_LIMIT, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CONTAINER_MAIN.ContentPanel.ResumeLayout(False)
|
||||
CONTAINER_MAIN.ResumeLayout(False)
|
||||
CONTAINER_MAIN.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Private WithEvents TXT_IN As RichTextBox
|
||||
Private WithEvents TXT_OUT As RichTextBox
|
||||
Private WithEvents TXT_LIMIT As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||
End Class
|
||||
End Namespace
|
||||
147
SCrawler.YouTube/Controls/PlayListParserForm.resx
Normal file
147
SCrawler.YouTube/Controls/PlayListParserForm.resx
Normal file
@@ -0,0 +1,147 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="TP_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="FRM_IN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TT_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TT_MAIN.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="FRM_OUT.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="ActionButton1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="CONTAINER_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
</root>
|
||||
60
SCrawler.YouTube/Controls/PlayListParserForm.vb
Normal file
60
SCrawler.YouTube/Controls/PlayListParserForm.vb
Normal file
@@ -0,0 +1,60 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Imports PersonalUtilities.Forms
|
||||
Imports PersonalUtilities.Functions.XML
|
||||
Imports PersonalUtilities.Functions.XML.Base
|
||||
Imports PersonalUtilities.Functions.RegularExpressions
|
||||
Namespace API.YouTube.Controls
|
||||
Friend Class PlayListParserForm : Implements IDesignXMLContainer
|
||||
Private WithEvents MyDefs As DefaultFormOptions
|
||||
Friend Property DesignXML As EContainer Implements IDesignXMLContainer.DesignXML
|
||||
Private Property DesignXMLNodes As String() Implements IDesignXMLContainer.DesignXMLNodes
|
||||
Private Property DesignXMLNodeName As String Implements IDesignXMLContainer.DesignXMLNodeName
|
||||
Friend ReadOnly Property PlayLists As List(Of String)
|
||||
Get
|
||||
If Not TXT_OUT.Text.IsEmptyString Then
|
||||
Return TXT_OUT.Lines.ToList
|
||||
Else
|
||||
Return New List(Of String)
|
||||
End If
|
||||
End Get
|
||||
End Property
|
||||
Friend Sub New()
|
||||
InitializeComponent()
|
||||
MyDefs = New DefaultFormOptions(Me)
|
||||
End Sub
|
||||
Private Sub MyForm_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
With MyDefs
|
||||
.MyViewInitialize()
|
||||
.AddOkCancelToolbar()
|
||||
.EndLoaderOperations()
|
||||
End With
|
||||
End Sub
|
||||
Private Sub UpdatePlaylists(sender As Object, e As EventArgs) Handles TXT_IN.TextChanged, TXT_LIMIT.ActionOnTextChanged
|
||||
Try
|
||||
If Not TXT_IN.Text.IsEmptyString Then
|
||||
Dim l As List(Of String) = ListAddList(Of String)(Nothing, RegexReplace(TXT_IN.Text, RParams.DMS("playlistId"": ""([^""]+)""", 1,
|
||||
RegexReturn.List, EDP.ReturnValue)),
|
||||
LAP.NotContainsOnly, EDP.ReturnValue)
|
||||
If Not TXT_LIMIT.Text.IsEmptyString And l.ListExists Then l.RemoveAll(Function(id) id.StringToLower.StartsWith(TXT_LIMIT.Text.ToLower))
|
||||
If l.ListExists Then
|
||||
TXT_OUT.Text = l.Select(Function(id) $"https://music.youtube.com/playlist?list={id}").ListToString(vbNewLine, EDP.ReturnValue)
|
||||
Else
|
||||
TXT_OUT.Text = String.Empty
|
||||
End If
|
||||
Else
|
||||
TXT_OUT.Text = String.Empty
|
||||
End If
|
||||
Catch ex As Exception
|
||||
TXT_OUT.Text = String.Empty
|
||||
ErrorsDescriber.Execute(EDP.LogMessageValue, ex, "[PlayListParserForm.UpdatePlaylists]")
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
128
SCrawler.YouTube/Controls/PlaylistArrayForm.Designer.vb
generated
Normal file
128
SCrawler.YouTube/Controls/PlaylistArrayForm.Designer.vb
generated
Normal file
@@ -0,0 +1,128 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Namespace API.YouTube.Controls
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Friend Class PlaylistArrayForm : Inherits System.Windows.Forms.Form
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
Private components As System.ComponentModel.IContainer
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Dim CONTAINER_MAIN As System.Windows.Forms.ToolStripContainer
|
||||
Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel
|
||||
Dim FRM_PLS As System.Windows.Forms.GroupBox
|
||||
Me.CH_PLS_ONE = New System.Windows.Forms.CheckBox()
|
||||
Me.TXT_URLS = New System.Windows.Forms.RichTextBox()
|
||||
CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer()
|
||||
TP_MAIN = New System.Windows.Forms.TableLayoutPanel()
|
||||
FRM_PLS = New System.Windows.Forms.GroupBox()
|
||||
CONTAINER_MAIN.ContentPanel.SuspendLayout()
|
||||
CONTAINER_MAIN.SuspendLayout()
|
||||
TP_MAIN.SuspendLayout()
|
||||
FRM_PLS.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'CONTAINER_MAIN
|
||||
'
|
||||
'
|
||||
'CONTAINER_MAIN.ContentPanel
|
||||
'
|
||||
CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN)
|
||||
CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(384, 311)
|
||||
CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
CONTAINER_MAIN.LeftToolStripPanelVisible = False
|
||||
CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||
CONTAINER_MAIN.Name = "CONTAINER_MAIN"
|
||||
CONTAINER_MAIN.RightToolStripPanelVisible = False
|
||||
CONTAINER_MAIN.Size = New System.Drawing.Size(384, 311)
|
||||
CONTAINER_MAIN.TabIndex = 0
|
||||
CONTAINER_MAIN.TopToolStripPanelVisible = False
|
||||
'
|
||||
'TP_MAIN
|
||||
'
|
||||
TP_MAIN.ColumnCount = 1
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||
TP_MAIN.Controls.Add(Me.CH_PLS_ONE, 0, 0)
|
||||
TP_MAIN.Controls.Add(FRM_PLS, 0, 1)
|
||||
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 = 2
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.Size = New System.Drawing.Size(384, 311)
|
||||
TP_MAIN.TabIndex = 0
|
||||
'
|
||||
'CH_PLS_ONE
|
||||
'
|
||||
Me.CH_PLS_ONE.AutoSize = True
|
||||
Me.CH_PLS_ONE.Checked = True
|
||||
Me.CH_PLS_ONE.CheckState = System.Windows.Forms.CheckState.Checked
|
||||
Me.CH_PLS_ONE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.CH_PLS_ONE.Location = New System.Drawing.Point(3, 3)
|
||||
Me.CH_PLS_ONE.Name = "CH_PLS_ONE"
|
||||
Me.CH_PLS_ONE.Size = New System.Drawing.Size(378, 19)
|
||||
Me.CH_PLS_ONE.TabIndex = 1
|
||||
Me.CH_PLS_ONE.Text = "Playlists / Albums by one artist"
|
||||
Me.CH_PLS_ONE.UseVisualStyleBackColor = True
|
||||
'
|
||||
'FRM_PLS
|
||||
'
|
||||
FRM_PLS.Controls.Add(Me.TXT_URLS)
|
||||
FRM_PLS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
FRM_PLS.Location = New System.Drawing.Point(3, 28)
|
||||
FRM_PLS.Name = "FRM_PLS"
|
||||
FRM_PLS.Size = New System.Drawing.Size(378, 280)
|
||||
FRM_PLS.TabIndex = 0
|
||||
FRM_PLS.TabStop = False
|
||||
FRM_PLS.Text = "URLs (new line as delimiter); Ctrl+O to parse playlists from response"
|
||||
'
|
||||
'TXT_URLS
|
||||
'
|
||||
Me.TXT_URLS.DetectUrls = False
|
||||
Me.TXT_URLS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_URLS.Location = New System.Drawing.Point(3, 16)
|
||||
Me.TXT_URLS.Name = "TXT_URLS"
|
||||
Me.TXT_URLS.Size = New System.Drawing.Size(372, 261)
|
||||
Me.TXT_URLS.TabIndex = 0
|
||||
Me.TXT_URLS.Text = ""
|
||||
'
|
||||
'PlaylistArrayForm
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(384, 311)
|
||||
Me.Controls.Add(CONTAINER_MAIN)
|
||||
Me.Icon = Global.SCrawler.My.Resources.SiteYouTube.YouTubeMusicIcon_32
|
||||
Me.KeyPreview = True
|
||||
Me.MinimumSize = New System.Drawing.Size(400, 350)
|
||||
Me.Name = "PlaylistArrayForm"
|
||||
Me.Text = "Playlists / Albums"
|
||||
CONTAINER_MAIN.ContentPanel.ResumeLayout(False)
|
||||
CONTAINER_MAIN.ResumeLayout(False)
|
||||
CONTAINER_MAIN.PerformLayout()
|
||||
TP_MAIN.ResumeLayout(False)
|
||||
TP_MAIN.PerformLayout()
|
||||
FRM_PLS.ResumeLayout(False)
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Private WithEvents CH_PLS_ONE As CheckBox
|
||||
Private WithEvents TXT_URLS As RichTextBox
|
||||
End Class
|
||||
End Namespace
|
||||
129
SCrawler.YouTube/Controls/PlaylistArrayForm.resx
Normal file
129
SCrawler.YouTube/Controls/PlaylistArrayForm.resx
Normal file
@@ -0,0 +1,129 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="CONTAINER_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="FRM_PLS.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
</root>
|
||||
54
SCrawler.YouTube/Controls/PlaylistArrayForm.vb
Normal file
54
SCrawler.YouTube/Controls/PlaylistArrayForm.vb
Normal file
@@ -0,0 +1,54 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Imports PersonalUtilities.Forms
|
||||
Imports PersonalUtilities.Functions.XML
|
||||
Imports PersonalUtilities.Functions.XML.Base
|
||||
Namespace API.YouTube.Controls
|
||||
Friend Class PlaylistArrayForm : Implements IDesignXMLContainer
|
||||
Private WithEvents MyDefs As DefaultFormOptions
|
||||
Friend Property DesignXML As EContainer Implements IDesignXMLContainer.DesignXML
|
||||
Private Property DesignXMLNodes As String() Implements IDesignXMLContainer.DesignXMLNodes
|
||||
Private Property DesignXMLNodeName As String Implements IDesignXMLContainer.DesignXMLNodeName
|
||||
Friend ReadOnly Property URLs As List(Of String)
|
||||
Get
|
||||
If Not TXT_URLS.Text.IsEmptyString Then
|
||||
Return ListAddList(Nothing, TXT_URLS.Text.StringFormatLines.StringToList(Of String)(vbNewLine),
|
||||
LAP.NotContainsOnly, EDP.ReturnValue, CType(Function(Input$) Input.StringTrim, Func(Of Object, Object))).ListIfNothing
|
||||
Else
|
||||
Return New List(Of String)
|
||||
End If
|
||||
End Get
|
||||
End Property
|
||||
Friend ReadOnly Property IsOneArtist As Boolean
|
||||
Get
|
||||
Return CH_PLS_ONE.Checked
|
||||
End Get
|
||||
End Property
|
||||
Friend Sub New()
|
||||
InitializeComponent()
|
||||
MyDefs = New DefaultFormOptions(Me)
|
||||
End Sub
|
||||
Private Sub PlaylistArrayForm_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
With MyDefs
|
||||
.MyViewInitialize()
|
||||
.AddOkCancelToolbar()
|
||||
.EndLoaderOperations()
|
||||
End With
|
||||
End Sub
|
||||
Private Sub PlaylistArrayForm_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
|
||||
If e.KeyCode = Keys.O And e.Control Then
|
||||
Using f As New PlayListParserForm With {.DesignXML = DesignXML}
|
||||
f.ShowDialog()
|
||||
If f.DialogResult = DialogResult.OK Then TXT_URLS.Text = f.PlayLists.ListToString(vbNewLine, EDP.ReturnValue)
|
||||
End Using
|
||||
e.Handled = True
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
132
SCrawler.YouTube/Controls/VideoOption.Designer.vb
generated
Normal file
132
SCrawler.YouTube/Controls/VideoOption.Designer.vb
generated
Normal file
@@ -0,0 +1,132 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Namespace API.YouTube.Controls
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Friend Class VideoOption : Inherits System.Windows.Forms.UserControl
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
Private components As System.ComponentModel.IContainer
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel
|
||||
Me.OPT_CHECKED = New System.Windows.Forms.RadioButton()
|
||||
Me.LBL_DEFINITION_INFO = New System.Windows.Forms.Label()
|
||||
Me.LBL_DEFINITION = New System.Windows.Forms.Label()
|
||||
Me.LBL_CODECS = New System.Windows.Forms.Label()
|
||||
Me.LBL_SIZE = New System.Windows.Forms.Label()
|
||||
TP_MAIN = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_MAIN.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'TP_MAIN
|
||||
'
|
||||
TP_MAIN.ColumnCount = 5
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36.0!))
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 110.0!))
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 58.0!))
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 71.0!))
|
||||
TP_MAIN.Controls.Add(Me.OPT_CHECKED, 0, 0)
|
||||
TP_MAIN.Controls.Add(Me.LBL_DEFINITION_INFO, 1, 0)
|
||||
TP_MAIN.Controls.Add(Me.LBL_DEFINITION, 2, 0)
|
||||
TP_MAIN.Controls.Add(Me.LBL_CODECS, 3, 0)
|
||||
TP_MAIN.Controls.Add(Me.LBL_SIZE, 4, 0)
|
||||
TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||
TP_MAIN.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_MAIN.Name = "TP_MAIN"
|
||||
TP_MAIN.RowCount = 1
|
||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_MAIN.Size = New System.Drawing.Size(459, 30)
|
||||
TP_MAIN.TabIndex = 0
|
||||
'
|
||||
'OPT_CHECKED
|
||||
'
|
||||
Me.OPT_CHECKED.AutoSize = True
|
||||
Me.OPT_CHECKED.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
Me.OPT_CHECKED.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.OPT_CHECKED.Location = New System.Drawing.Point(3, 3)
|
||||
Me.OPT_CHECKED.Name = "OPT_CHECKED"
|
||||
Me.OPT_CHECKED.Size = New System.Drawing.Size(30, 24)
|
||||
Me.OPT_CHECKED.TabIndex = 0
|
||||
Me.OPT_CHECKED.TabStop = True
|
||||
Me.OPT_CHECKED.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
Me.OPT_CHECKED.UseVisualStyleBackColor = True
|
||||
'
|
||||
'LBL_DEFINITION_INFO
|
||||
'
|
||||
Me.LBL_DEFINITION_INFO.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_DEFINITION_INFO.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.LBL_DEFINITION_INFO.Location = New System.Drawing.Point(39, 0)
|
||||
Me.LBL_DEFINITION_INFO.Name = "LBL_DEFINITION_INFO"
|
||||
Me.LBL_DEFINITION_INFO.Size = New System.Drawing.Size(104, 30)
|
||||
Me.LBL_DEFINITION_INFO.TabIndex = 1
|
||||
Me.LBL_DEFINITION_INFO.Text = "Ultra High Definition"
|
||||
Me.LBL_DEFINITION_INFO.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||
'
|
||||
'LBL_DEFINITION
|
||||
'
|
||||
Me.LBL_DEFINITION.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_DEFINITION.Font = New System.Drawing.Font("Arial", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.LBL_DEFINITION.Location = New System.Drawing.Point(149, 0)
|
||||
Me.LBL_DEFINITION.Name = "LBL_DEFINITION"
|
||||
Me.LBL_DEFINITION.Size = New System.Drawing.Size(52, 30)
|
||||
Me.LBL_DEFINITION.TabIndex = 2
|
||||
Me.LBL_DEFINITION.Text = "1080p"
|
||||
Me.LBL_DEFINITION.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||
'
|
||||
'LBL_CODECS
|
||||
'
|
||||
Me.LBL_CODECS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_CODECS.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.LBL_CODECS.Location = New System.Drawing.Point(207, 0)
|
||||
Me.LBL_CODECS.Name = "LBL_CODECS"
|
||||
Me.LBL_CODECS.Size = New System.Drawing.Size(178, 30)
|
||||
Me.LBL_CODECS.TabIndex = 3
|
||||
Me.LBL_CODECS.Text = "MKV - VP9 - Opus"
|
||||
Me.LBL_CODECS.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'LBL_SIZE
|
||||
'
|
||||
Me.LBL_SIZE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_SIZE.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.LBL_SIZE.Location = New System.Drawing.Point(391, 0)
|
||||
Me.LBL_SIZE.Name = "LBL_SIZE"
|
||||
Me.LBL_SIZE.Size = New System.Drawing.Size(65, 30)
|
||||
Me.LBL_SIZE.TabIndex = 4
|
||||
Me.LBL_SIZE.Text = "1 062 MB"
|
||||
Me.LBL_SIZE.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'VideoOption
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(TP_MAIN)
|
||||
Me.Name = "VideoOption"
|
||||
Me.Size = New System.Drawing.Size(459, 30)
|
||||
TP_MAIN.ResumeLayout(False)
|
||||
TP_MAIN.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Private WithEvents OPT_CHECKED As RadioButton
|
||||
Private WithEvents LBL_DEFINITION_INFO As Label
|
||||
Private WithEvents LBL_DEFINITION As Label
|
||||
Private WithEvents LBL_CODECS As Label
|
||||
Private WithEvents LBL_SIZE As Label
|
||||
End Class
|
||||
End Namespace
|
||||
123
SCrawler.YouTube/Controls/VideoOption.resx
Normal file
123
SCrawler.YouTube/Controls/VideoOption.resx
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="TP_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
</root>
|
||||
87
SCrawler.YouTube/Controls/VideoOption.vb
Normal file
87
SCrawler.YouTube/Controls/VideoOption.vb
Normal file
@@ -0,0 +1,87 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Imports System.ComponentModel
|
||||
Imports SCrawler.API.YouTube.Base
|
||||
Namespace API.YouTube.Controls
|
||||
<DefaultEvent("CheckedChanged"), DesignTimeVisible(False), ToolboxItem(False)>
|
||||
Friend Class VideoOption : Implements ISupportInitialize
|
||||
Friend Event CheckedChanged As EventHandler
|
||||
<Browsable(False)> Friend Property MyMedia As MediaObject
|
||||
<Browsable(False)> Friend Property Checked As Boolean
|
||||
Get
|
||||
Return OPT_CHECKED.Checked
|
||||
End Get
|
||||
Set(ByVal _Checked As Boolean)
|
||||
OPT_CHECKED.Checked = _Checked
|
||||
End Set
|
||||
End Property
|
||||
Friend Sub New()
|
||||
InitializeComponent()
|
||||
End Sub
|
||||
Friend Sub New(ByVal m As MediaObject, Optional ByVal SelectedAudio As MediaObject = Nothing)
|
||||
Me.New
|
||||
Const d$ = " " & ChrW(183) & " "
|
||||
MyMedia = m
|
||||
If m.Type = Plugin.UserMediaTypes.Audio Then
|
||||
If m.Bitrate >= 320 Then
|
||||
LBL_DEFINITION_INFO.Text = "High Quality"
|
||||
ElseIf m.Bitrate >= 190 Then
|
||||
LBL_DEFINITION_INFO.Text = "Medium Quality"
|
||||
Else
|
||||
LBL_DEFINITION_INFO.Text = "Low Quality"
|
||||
End If
|
||||
LBL_DEFINITION.Text = $"{m.Bitrate}k"
|
||||
LBL_CODECS.Text = $"{m.Extension} {d} {m.Codec} {d} {m.Bitrate}k"
|
||||
Else
|
||||
If m.Height >= 1440 Then
|
||||
LBL_DEFINITION_INFO.Text = "Ultra High Definition"
|
||||
ElseIf m.Height >= 720 Then
|
||||
LBL_DEFINITION_INFO.Text = "High Definition"
|
||||
ElseIf m.Height >= 480 Then
|
||||
LBL_DEFINITION_INFO.Text = "Medium Definition"
|
||||
ElseIf m.Height >= 360 Then
|
||||
LBL_DEFINITION_INFO.Text = "Normal Definition"
|
||||
Else
|
||||
LBL_DEFINITION_INFO.Text = "Low Definition"
|
||||
End If
|
||||
LBL_DEFINITION.Text = $"{m.Height}p"
|
||||
LBL_CODECS.Text = $"{m.Extension.StringToUpper}{d}{m.Codec.StringToUpper}{d}{m.FPS}fps{d}{m.Bitrate}k"
|
||||
If Not SelectedAudio.ID.IsEmptyString Then LBL_CODECS.Text &= $" / {SelectedAudio.Extension}{d}{SelectedAudio.Codec}{d}{SelectedAudio.Bitrate}k"
|
||||
End If
|
||||
|
||||
Dim sv% = m.Size / 1024
|
||||
If sv >= 1000 Then
|
||||
LBL_SIZE.Text = AConvert(Of String)(sv / 1024, VideoSizeProvider)
|
||||
LBL_SIZE.Text &= " GB"
|
||||
Else
|
||||
LBL_SIZE.Text = AConvert(Of String)(sv, VideoSizeProvider)
|
||||
LBL_SIZE.Text &= " MB"
|
||||
End If
|
||||
End Sub
|
||||
Private Sub OPT_CHECKED_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_CHECKED.CheckedChanged
|
||||
RaiseEvent CheckedChanged(Me, e)
|
||||
End Sub
|
||||
Private Sub Labels_Click(sender As Object, e As EventArgs) Handles LBL_DEFINITION_INFO.Click, LBL_DEFINITION.Click, LBL_CODECS.Click, LBL_SIZE.Click
|
||||
OPT_CHECKED.Checked = True
|
||||
End Sub
|
||||
Private Sub BindedControl_CheckedChanged(sender As Object, e As EventArgs)
|
||||
If Not sender Is Nothing AndAlso Not sender Is Me AndAlso DirectCast(sender, VideoOption).Checked Then Checked = False
|
||||
End Sub
|
||||
Private Sub BeginInit() Implements ISupportInitialize.BeginInit
|
||||
End Sub
|
||||
Private Sub EndInit() Implements ISupportInitialize.EndInit
|
||||
If Not Parent Is Nothing AndAlso Parent.Controls.Count > 0 Then
|
||||
For Each cnt As Control In Parent.Controls
|
||||
If TypeOf cnt Is VideoOption And Not cnt Is Me Then _
|
||||
AddHandler DirectCast(cnt, VideoOption).CheckedChanged, AddressOf BindedControl_CheckedChanged
|
||||
Next
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
749
SCrawler.YouTube/Controls/VideoOptionsForm.Designer.vb
generated
Normal file
749
SCrawler.YouTube/Controls/VideoOptionsForm.Designer.vb
generated
Normal file
@@ -0,0 +1,749 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Namespace API.YouTube.Controls
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Friend Class VideoOptionsForm : Inherits System.Windows.Forms.Form
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
Private components As System.ComponentModel.IContainer
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim TP_HEADER As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_HEADER_INFO As System.Windows.Forms.TableLayoutPanel
|
||||
Dim ICON_CLOCK As System.Windows.Forms.PictureBox
|
||||
Dim ICON_LINK As System.Windows.Forms.PictureBox
|
||||
Dim TP_FOOTER As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_DESTINATION As System.Windows.Forms.TableLayoutPanel
|
||||
Dim TP_OK_CANCEL As System.Windows.Forms.TableLayoutPanel
|
||||
Dim LB_SEP_1 As System.Windows.Forms.Label
|
||||
Dim LB_SEP_2 As System.Windows.Forms.Label
|
||||
Dim TP_WHAT As System.Windows.Forms.TableLayoutPanel
|
||||
Dim LBL_WHAT As System.Windows.Forms.Label
|
||||
Dim LBL_FORMAT As System.Windows.Forms.Label
|
||||
Dim LBL_SUBS_FORMAT As System.Windows.Forms.Label
|
||||
Dim TT_MAIN As System.Windows.Forms.ToolTip
|
||||
Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(VideoOptionsForm))
|
||||
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 ActionButton4 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim ActionButton5 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim ActionButton6 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim ActionButton7 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim ActionButton8 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Dim ActionButton9 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||
Me.ICON_VIDEO = New System.Windows.Forms.PictureBox()
|
||||
Me.LBL_TITLE = New System.Windows.Forms.Label()
|
||||
Me.TP_HEADER_INFO_2 = New System.Windows.Forms.TableLayoutPanel()
|
||||
Me.LBL_TIME = New System.Windows.Forms.Label()
|
||||
Me.LBL_URL = New System.Windows.Forms.LinkLabel()
|
||||
Me.TXT_FILE = New System.Windows.Forms.TextBox()
|
||||
Me.BTT_BROWSE = New System.Windows.Forms.Button()
|
||||
Me.BTT_DOWN = New System.Windows.Forms.Button()
|
||||
Me.BTT_CANCEL = New System.Windows.Forms.Button()
|
||||
Me.OPT_VIDEO = New System.Windows.Forms.RadioButton()
|
||||
Me.OPT_AUDIO = New System.Windows.Forms.RadioButton()
|
||||
Me.LBL_AUDIO_CODEC = New System.Windows.Forms.Label()
|
||||
Me.TP_HEADER_BASE = New System.Windows.Forms.TableLayoutPanel()
|
||||
Me.TP_SUBS = New System.Windows.Forms.TableLayoutPanel()
|
||||
Me.TXT_SUBS = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||
Me.CMB_SUBS_FORMAT = New System.Windows.Forms.ComboBox()
|
||||
Me.TP_MAIN = New System.Windows.Forms.TableLayoutPanel()
|
||||
Me.TP_OPTIONS = New System.Windows.Forms.TableLayoutPanel()
|
||||
Me.CMB_FORMAT = New System.Windows.Forms.ComboBox()
|
||||
Me.CMB_AUDIO_CODEC = New System.Windows.Forms.ComboBox()
|
||||
Me.NUM_RES = New System.Windows.Forms.NumericUpDown()
|
||||
Me.TP_CONTROLS = New System.Windows.Forms.TableLayoutPanel()
|
||||
Me.TXT_SUBS_ADDIT = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||
TP_HEADER = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_HEADER_INFO = New System.Windows.Forms.TableLayoutPanel()
|
||||
ICON_CLOCK = New System.Windows.Forms.PictureBox()
|
||||
ICON_LINK = New System.Windows.Forms.PictureBox()
|
||||
TP_FOOTER = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_DESTINATION = New System.Windows.Forms.TableLayoutPanel()
|
||||
TP_OK_CANCEL = New System.Windows.Forms.TableLayoutPanel()
|
||||
LB_SEP_1 = New System.Windows.Forms.Label()
|
||||
LB_SEP_2 = New System.Windows.Forms.Label()
|
||||
TP_WHAT = New System.Windows.Forms.TableLayoutPanel()
|
||||
LBL_WHAT = New System.Windows.Forms.Label()
|
||||
LBL_FORMAT = New System.Windows.Forms.Label()
|
||||
LBL_SUBS_FORMAT = New System.Windows.Forms.Label()
|
||||
TT_MAIN = New System.Windows.Forms.ToolTip(Me.components)
|
||||
TP_HEADER.SuspendLayout()
|
||||
CType(Me.ICON_VIDEO, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
TP_HEADER_INFO.SuspendLayout()
|
||||
Me.TP_HEADER_INFO_2.SuspendLayout()
|
||||
CType(ICON_CLOCK, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(ICON_LINK, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
TP_FOOTER.SuspendLayout()
|
||||
TP_DESTINATION.SuspendLayout()
|
||||
TP_OK_CANCEL.SuspendLayout()
|
||||
TP_WHAT.SuspendLayout()
|
||||
Me.TP_HEADER_BASE.SuspendLayout()
|
||||
Me.TP_SUBS.SuspendLayout()
|
||||
CType(Me.TXT_SUBS, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.TP_MAIN.SuspendLayout()
|
||||
Me.TP_OPTIONS.SuspendLayout()
|
||||
CType(Me.NUM_RES, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.TXT_SUBS_ADDIT, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.TXT_EXTRA_AUDIO_FORMATS, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'TP_HEADER
|
||||
'
|
||||
TP_HEADER.BackColor = System.Drawing.SystemColors.Window
|
||||
TP_HEADER.ColumnCount = 2
|
||||
TP_HEADER.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 130.0!))
|
||||
TP_HEADER.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_HEADER.Controls.Add(Me.ICON_VIDEO, 0, 0)
|
||||
TP_HEADER.Controls.Add(TP_HEADER_INFO, 1, 0)
|
||||
TP_HEADER.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_HEADER.Location = New System.Drawing.Point(1, 1)
|
||||
TP_HEADER.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_HEADER.Name = "TP_HEADER"
|
||||
TP_HEADER.RowCount = 1
|
||||
TP_HEADER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_HEADER.Size = New System.Drawing.Size(599, 63)
|
||||
TP_HEADER.TabIndex = 0
|
||||
'
|
||||
'ICON_VIDEO
|
||||
'
|
||||
Me.ICON_VIDEO.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
|
||||
Me.ICON_VIDEO.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.ICON_VIDEO.Location = New System.Drawing.Point(1, 1)
|
||||
Me.ICON_VIDEO.Margin = New System.Windows.Forms.Padding(1)
|
||||
Me.ICON_VIDEO.Name = "ICON_VIDEO"
|
||||
Me.ICON_VIDEO.Size = New System.Drawing.Size(128, 61)
|
||||
Me.ICON_VIDEO.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||
Me.ICON_VIDEO.TabIndex = 0
|
||||
Me.ICON_VIDEO.TabStop = False
|
||||
'
|
||||
'TP_HEADER_INFO
|
||||
'
|
||||
TP_HEADER_INFO.ColumnCount = 1
|
||||
TP_HEADER_INFO.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_HEADER_INFO.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||
TP_HEADER_INFO.Controls.Add(Me.LBL_TITLE, 0, 0)
|
||||
TP_HEADER_INFO.Controls.Add(Me.TP_HEADER_INFO_2, 0, 1)
|
||||
TP_HEADER_INFO.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_HEADER_INFO.Location = New System.Drawing.Point(130, 0)
|
||||
TP_HEADER_INFO.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_HEADER_INFO.Name = "TP_HEADER_INFO"
|
||||
TP_HEADER_INFO.RowCount = 2
|
||||
TP_HEADER_INFO.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
TP_HEADER_INFO.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
TP_HEADER_INFO.Size = New System.Drawing.Size(469, 63)
|
||||
TP_HEADER_INFO.TabIndex = 0
|
||||
'
|
||||
'LBL_TITLE
|
||||
'
|
||||
Me.LBL_TITLE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_TITLE.Font = New System.Drawing.Font("Arial", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.LBL_TITLE.Location = New System.Drawing.Point(3, 0)
|
||||
Me.LBL_TITLE.Name = "LBL_TITLE"
|
||||
Me.LBL_TITLE.Size = New System.Drawing.Size(463, 31)
|
||||
Me.LBL_TITLE.TabIndex = 0
|
||||
Me.LBL_TITLE.Text = "Video title"
|
||||
Me.LBL_TITLE.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||
'
|
||||
'TP_HEADER_INFO_2
|
||||
'
|
||||
Me.TP_HEADER_INFO_2.ColumnCount = 4
|
||||
Me.TP_HEADER_INFO_2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
Me.TP_HEADER_INFO_2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 62.0!))
|
||||
Me.TP_HEADER_INFO_2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
Me.TP_HEADER_INFO_2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_HEADER_INFO_2.Controls.Add(ICON_CLOCK, 0, 0)
|
||||
Me.TP_HEADER_INFO_2.Controls.Add(Me.LBL_TIME, 1, 0)
|
||||
Me.TP_HEADER_INFO_2.Controls.Add(ICON_LINK, 2, 0)
|
||||
Me.TP_HEADER_INFO_2.Controls.Add(Me.LBL_URL, 3, 0)
|
||||
Me.TP_HEADER_INFO_2.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TP_HEADER_INFO_2.Location = New System.Drawing.Point(0, 31)
|
||||
Me.TP_HEADER_INFO_2.Margin = New System.Windows.Forms.Padding(0)
|
||||
Me.TP_HEADER_INFO_2.Name = "TP_HEADER_INFO_2"
|
||||
Me.TP_HEADER_INFO_2.RowCount = 1
|
||||
Me.TP_HEADER_INFO_2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_HEADER_INFO_2.Size = New System.Drawing.Size(469, 32)
|
||||
Me.TP_HEADER_INFO_2.TabIndex = 1
|
||||
'
|
||||
'ICON_CLOCK
|
||||
'
|
||||
ICON_CLOCK.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
|
||||
ICON_CLOCK.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
ICON_CLOCK.Image = Global.SCrawler.My.Resources.Resources.ClockPic_16
|
||||
ICON_CLOCK.Location = New System.Drawing.Point(3, 3)
|
||||
ICON_CLOCK.Name = "ICON_CLOCK"
|
||||
ICON_CLOCK.Size = New System.Drawing.Size(19, 26)
|
||||
ICON_CLOCK.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||
ICON_CLOCK.TabIndex = 0
|
||||
ICON_CLOCK.TabStop = False
|
||||
'
|
||||
'LBL_TIME
|
||||
'
|
||||
Me.LBL_TIME.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_TIME.Font = New System.Drawing.Font("Arial", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.LBL_TIME.ForeColor = System.Drawing.SystemColors.ControlDarkDark
|
||||
Me.LBL_TIME.Location = New System.Drawing.Point(28, 0)
|
||||
Me.LBL_TIME.Name = "LBL_TIME"
|
||||
Me.LBL_TIME.Size = New System.Drawing.Size(56, 32)
|
||||
Me.LBL_TIME.TabIndex = 0
|
||||
Me.LBL_TIME.Text = "00:00:00"
|
||||
Me.LBL_TIME.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
'
|
||||
'ICON_LINK
|
||||
'
|
||||
ICON_LINK.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
|
||||
ICON_LINK.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
ICON_LINK.Image = Global.SCrawler.My.Resources.Resources.LinkPic_32
|
||||
ICON_LINK.Location = New System.Drawing.Point(90, 3)
|
||||
ICON_LINK.Name = "ICON_LINK"
|
||||
ICON_LINK.Size = New System.Drawing.Size(19, 26)
|
||||
ICON_LINK.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||
ICON_LINK.TabIndex = 2
|
||||
ICON_LINK.TabStop = False
|
||||
'
|
||||
'LBL_URL
|
||||
'
|
||||
Me.LBL_URL.AutoSize = True
|
||||
Me.LBL_URL.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_URL.Font = New System.Drawing.Font("Arial", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.LBL_URL.LinkColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(192, Byte), Integer))
|
||||
Me.LBL_URL.Location = New System.Drawing.Point(115, 0)
|
||||
Me.LBL_URL.Name = "LBL_URL"
|
||||
Me.LBL_URL.Size = New System.Drawing.Size(351, 32)
|
||||
Me.LBL_URL.TabIndex = 1
|
||||
Me.LBL_URL.TabStop = True
|
||||
Me.LBL_URL.Text = "https://www.youtube.com/watch?v=abcdefghijk"
|
||||
Me.LBL_URL.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||
'
|
||||
'TP_FOOTER
|
||||
'
|
||||
TP_FOOTER.ColumnCount = 1
|
||||
TP_FOOTER.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_FOOTER.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||
TP_FOOTER.Controls.Add(TP_DESTINATION, 0, 0)
|
||||
TP_FOOTER.Controls.Add(TP_OK_CANCEL, 0, 1)
|
||||
TP_FOOTER.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_FOOTER.Location = New System.Drawing.Point(6, 215)
|
||||
TP_FOOTER.Margin = New System.Windows.Forms.Padding(6, 3, 6, 3)
|
||||
TP_FOOTER.Name = "TP_FOOTER"
|
||||
TP_FOOTER.RowCount = 2
|
||||
TP_FOOTER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
TP_FOOTER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
TP_FOOTER.Size = New System.Drawing.Size(589, 52)
|
||||
TP_FOOTER.TabIndex = 5
|
||||
'
|
||||
'TP_DESTINATION
|
||||
'
|
||||
TP_DESTINATION.ColumnCount = 2
|
||||
TP_DESTINATION.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_DESTINATION.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
TP_DESTINATION.Controls.Add(Me.TXT_FILE, 0, 0)
|
||||
TP_DESTINATION.Controls.Add(Me.BTT_BROWSE, 1, 0)
|
||||
TP_DESTINATION.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_DESTINATION.Location = New System.Drawing.Point(0, 0)
|
||||
TP_DESTINATION.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_DESTINATION.Name = "TP_DESTINATION"
|
||||
TP_DESTINATION.RowCount = 1
|
||||
TP_DESTINATION.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_DESTINATION.Size = New System.Drawing.Size(589, 26)
|
||||
TP_DESTINATION.TabIndex = 0
|
||||
'
|
||||
'TXT_FILE
|
||||
'
|
||||
Me.TXT_FILE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_FILE.Location = New System.Drawing.Point(3, 3)
|
||||
Me.TXT_FILE.Name = "TXT_FILE"
|
||||
Me.TXT_FILE.Size = New System.Drawing.Size(503, 20)
|
||||
Me.TXT_FILE.TabIndex = 0
|
||||
Me.TXT_FILE.WordWrap = False
|
||||
'
|
||||
'BTT_BROWSE
|
||||
'
|
||||
Me.BTT_BROWSE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.BTT_BROWSE.Location = New System.Drawing.Point(512, 2)
|
||||
Me.BTT_BROWSE.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
|
||||
Me.BTT_BROWSE.Name = "BTT_BROWSE"
|
||||
Me.BTT_BROWSE.Size = New System.Drawing.Size(74, 22)
|
||||
Me.BTT_BROWSE.TabIndex = 1
|
||||
Me.BTT_BROWSE.Text = "Browse"
|
||||
TT_MAIN.SetToolTip(Me.BTT_BROWSE, "Choose an output file")
|
||||
Me.BTT_BROWSE.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TP_OK_CANCEL
|
||||
'
|
||||
TP_OK_CANCEL.ColumnCount = 3
|
||||
TP_OK_CANCEL.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_OK_CANCEL.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
TP_OK_CANCEL.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
TP_OK_CANCEL.Controls.Add(Me.BTT_DOWN, 1, 0)
|
||||
TP_OK_CANCEL.Controls.Add(Me.BTT_CANCEL, 2, 0)
|
||||
TP_OK_CANCEL.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_OK_CANCEL.Location = New System.Drawing.Point(0, 26)
|
||||
TP_OK_CANCEL.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_OK_CANCEL.Name = "TP_OK_CANCEL"
|
||||
TP_OK_CANCEL.RowCount = 1
|
||||
TP_OK_CANCEL.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_OK_CANCEL.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26.0!))
|
||||
TP_OK_CANCEL.Size = New System.Drawing.Size(589, 26)
|
||||
TP_OK_CANCEL.TabIndex = 1
|
||||
'
|
||||
'BTT_DOWN
|
||||
'
|
||||
Me.BTT_DOWN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.BTT_DOWN.Location = New System.Drawing.Point(432, 2)
|
||||
Me.BTT_DOWN.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
|
||||
Me.BTT_DOWN.Name = "BTT_DOWN"
|
||||
Me.BTT_DOWN.Size = New System.Drawing.Size(74, 22)
|
||||
Me.BTT_DOWN.TabIndex = 0
|
||||
Me.BTT_DOWN.Text = "Download"
|
||||
Me.BTT_DOWN.UseVisualStyleBackColor = True
|
||||
'
|
||||
'BTT_CANCEL
|
||||
'
|
||||
Me.BTT_CANCEL.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
Me.BTT_CANCEL.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.BTT_CANCEL.Location = New System.Drawing.Point(512, 2)
|
||||
Me.BTT_CANCEL.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
|
||||
Me.BTT_CANCEL.Name = "BTT_CANCEL"
|
||||
Me.BTT_CANCEL.Size = New System.Drawing.Size(74, 22)
|
||||
Me.BTT_CANCEL.TabIndex = 1
|
||||
Me.BTT_CANCEL.Text = "Cancel"
|
||||
Me.BTT_CANCEL.UseVisualStyleBackColor = True
|
||||
'
|
||||
'LB_SEP_1
|
||||
'
|
||||
LB_SEP_1.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
LB_SEP_1.BackColor = System.Drawing.SystemColors.ControlDark
|
||||
LB_SEP_1.Location = New System.Drawing.Point(6, 179)
|
||||
LB_SEP_1.Margin = New System.Windows.Forms.Padding(6, 0, 6, 0)
|
||||
LB_SEP_1.Name = "LB_SEP_1"
|
||||
LB_SEP_1.Size = New System.Drawing.Size(589, 1)
|
||||
LB_SEP_1.TabIndex = 3
|
||||
'
|
||||
'LB_SEP_2
|
||||
'
|
||||
LB_SEP_2.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
LB_SEP_2.BackColor = System.Drawing.SystemColors.ControlDark
|
||||
LB_SEP_2.Location = New System.Drawing.Point(6, 209)
|
||||
LB_SEP_2.Margin = New System.Windows.Forms.Padding(6, 0, 6, 0)
|
||||
LB_SEP_2.Name = "LB_SEP_2"
|
||||
LB_SEP_2.Size = New System.Drawing.Size(589, 1)
|
||||
LB_SEP_2.TabIndex = 5
|
||||
'
|
||||
'TP_WHAT
|
||||
'
|
||||
TP_WHAT.ColumnCount = 3
|
||||
TP_WHAT.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 65.0!))
|
||||
TP_WHAT.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
TP_WHAT.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
TP_WHAT.Controls.Add(LBL_WHAT, 0, 0)
|
||||
TP_WHAT.Controls.Add(Me.OPT_VIDEO, 1, 0)
|
||||
TP_WHAT.Controls.Add(Me.OPT_AUDIO, 2, 0)
|
||||
TP_WHAT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
TP_WHAT.Location = New System.Drawing.Point(0, 0)
|
||||
TP_WHAT.Margin = New System.Windows.Forms.Padding(0)
|
||||
TP_WHAT.Name = "TP_WHAT"
|
||||
TP_WHAT.RowCount = 1
|
||||
TP_WHAT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
TP_WHAT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||
TP_WHAT.Size = New System.Drawing.Size(189, 28)
|
||||
TP_WHAT.TabIndex = 0
|
||||
'
|
||||
'LBL_WHAT
|
||||
'
|
||||
LBL_WHAT.AutoSize = True
|
||||
LBL_WHAT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
LBL_WHAT.Location = New System.Drawing.Point(3, 0)
|
||||
LBL_WHAT.Name = "LBL_WHAT"
|
||||
LBL_WHAT.Size = New System.Drawing.Size(59, 28)
|
||||
LBL_WHAT.TabIndex = 4
|
||||
LBL_WHAT.Text = "Download"
|
||||
LBL_WHAT.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'OPT_VIDEO
|
||||
'
|
||||
Me.OPT_VIDEO.AutoSize = True
|
||||
Me.OPT_VIDEO.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.OPT_VIDEO.Location = New System.Drawing.Point(68, 3)
|
||||
Me.OPT_VIDEO.Name = "OPT_VIDEO"
|
||||
Me.OPT_VIDEO.Size = New System.Drawing.Size(56, 22)
|
||||
Me.OPT_VIDEO.TabIndex = 0
|
||||
Me.OPT_VIDEO.TabStop = True
|
||||
Me.OPT_VIDEO.Text = "Video"
|
||||
Me.OPT_VIDEO.UseVisualStyleBackColor = True
|
||||
'
|
||||
'OPT_AUDIO
|
||||
'
|
||||
Me.OPT_AUDIO.AutoSize = True
|
||||
Me.OPT_AUDIO.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.OPT_AUDIO.Location = New System.Drawing.Point(130, 3)
|
||||
Me.OPT_AUDIO.Name = "OPT_AUDIO"
|
||||
Me.OPT_AUDIO.Size = New System.Drawing.Size(56, 22)
|
||||
Me.OPT_AUDIO.TabIndex = 1
|
||||
Me.OPT_AUDIO.TabStop = True
|
||||
Me.OPT_AUDIO.Text = "Audio"
|
||||
Me.OPT_AUDIO.UseVisualStyleBackColor = True
|
||||
'
|
||||
'LBL_FORMAT
|
||||
'
|
||||
LBL_FORMAT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
LBL_FORMAT.Location = New System.Drawing.Point(192, 0)
|
||||
LBL_FORMAT.Name = "LBL_FORMAT"
|
||||
LBL_FORMAT.Size = New System.Drawing.Size(74, 28)
|
||||
LBL_FORMAT.TabIndex = 4
|
||||
LBL_FORMAT.Text = "Format:"
|
||||
LBL_FORMAT.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
TT_MAIN.SetToolTip(LBL_FORMAT, "Output Video Format")
|
||||
'
|
||||
'LBL_SUBS_FORMAT
|
||||
'
|
||||
LBL_SUBS_FORMAT.AutoSize = True
|
||||
LBL_SUBS_FORMAT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
LBL_SUBS_FORMAT.Location = New System.Drawing.Point(432, 0)
|
||||
LBL_SUBS_FORMAT.Name = "LBL_SUBS_FORMAT"
|
||||
LBL_SUBS_FORMAT.Size = New System.Drawing.Size(74, 28)
|
||||
LBL_SUBS_FORMAT.TabIndex = 2
|
||||
LBL_SUBS_FORMAT.Text = "Format:"
|
||||
LBL_SUBS_FORMAT.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
TT_MAIN.SetToolTip(LBL_SUBS_FORMAT, "Output Subtitles Format")
|
||||
'
|
||||
'LBL_AUDIO_CODEC
|
||||
'
|
||||
Me.LBL_AUDIO_CODEC.AutoSize = True
|
||||
Me.LBL_AUDIO_CODEC.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.LBL_AUDIO_CODEC.Location = New System.Drawing.Point(432, 0)
|
||||
Me.LBL_AUDIO_CODEC.Name = "LBL_AUDIO_CODEC"
|
||||
Me.LBL_AUDIO_CODEC.Size = New System.Drawing.Size(74, 28)
|
||||
Me.LBL_AUDIO_CODEC.TabIndex = 5
|
||||
Me.LBL_AUDIO_CODEC.Text = "Audio Codec"
|
||||
Me.LBL_AUDIO_CODEC.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
TT_MAIN.SetToolTip(Me.LBL_AUDIO_CODEC, "Output Audio Codec")
|
||||
'
|
||||
'TP_HEADER_BASE
|
||||
'
|
||||
Me.TP_HEADER_BASE.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single]
|
||||
Me.TP_HEADER_BASE.ColumnCount = 1
|
||||
Me.TP_HEADER_BASE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_HEADER_BASE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||
Me.TP_HEADER_BASE.Controls.Add(TP_HEADER, 0, 0)
|
||||
Me.TP_HEADER_BASE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TP_HEADER_BASE.Location = New System.Drawing.Point(0, 0)
|
||||
Me.TP_HEADER_BASE.Margin = New System.Windows.Forms.Padding(0)
|
||||
Me.TP_HEADER_BASE.Name = "TP_HEADER_BASE"
|
||||
Me.TP_HEADER_BASE.RowCount = 1
|
||||
Me.TP_HEADER_BASE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_HEADER_BASE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 64.0!))
|
||||
Me.TP_HEADER_BASE.Size = New System.Drawing.Size(601, 65)
|
||||
Me.TP_HEADER_BASE.TabIndex = 6
|
||||
'
|
||||
'TP_SUBS
|
||||
'
|
||||
Me.TP_SUBS.ColumnCount = 3
|
||||
Me.TP_SUBS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_SUBS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
Me.TP_SUBS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
Me.TP_SUBS.Controls.Add(Me.TXT_SUBS, 0, 0)
|
||||
Me.TP_SUBS.Controls.Add(LBL_SUBS_FORMAT, 1, 0)
|
||||
Me.TP_SUBS.Controls.Add(Me.CMB_SUBS_FORMAT, 2, 0)
|
||||
Me.TP_SUBS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TP_SUBS.Location = New System.Drawing.Point(6, 93)
|
||||
Me.TP_SUBS.Margin = New System.Windows.Forms.Padding(6, 0, 6, 0)
|
||||
Me.TP_SUBS.Name = "TP_SUBS"
|
||||
Me.TP_SUBS.RowCount = 1
|
||||
Me.TP_SUBS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_SUBS.Size = New System.Drawing.Size(589, 28)
|
||||
Me.TP_SUBS.TabIndex = 2
|
||||
'
|
||||
'TXT_SUBS
|
||||
'
|
||||
ActionButton1.BackgroundImage = CType(resources.GetObject("ActionButton1.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton1.Name = "Open"
|
||||
ActionButton1.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Open
|
||||
ActionButton1.ToolTipText = "Choose subtitles"
|
||||
ActionButton2.BackgroundImage = CType(resources.GetObject("ActionButton2.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton2.Name = "Refresh"
|
||||
ActionButton2.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Refresh
|
||||
ActionButton2.ToolTipText = "Reset subtitles to initial selected"
|
||||
ActionButton3.BackgroundImage = CType(resources.GetObject("ActionButton3.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton3.Name = "Clear"
|
||||
ActionButton3.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear
|
||||
ActionButton3.ToolTipText = "Clear subtitles selection (don't download subtitles)"
|
||||
Me.TXT_SUBS.Buttons.Add(ActionButton1)
|
||||
Me.TXT_SUBS.Buttons.Add(ActionButton2)
|
||||
Me.TXT_SUBS.Buttons.Add(ActionButton3)
|
||||
Me.TXT_SUBS.CaptionText = "Subtitles"
|
||||
Me.TXT_SUBS.CaptionToolTipEnabled = True
|
||||
Me.TXT_SUBS.CaptionToolTipText = "The selected subtitles will also be downloaded"
|
||||
Me.TXT_SUBS.CaptionWidth = 60.0R
|
||||
Me.TXT_SUBS.ClearTextByButtonClear = False
|
||||
Me.TXT_SUBS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_SUBS.Location = New System.Drawing.Point(3, 3)
|
||||
Me.TXT_SUBS.Name = "TXT_SUBS"
|
||||
Me.TXT_SUBS.Size = New System.Drawing.Size(423, 22)
|
||||
Me.TXT_SUBS.TabIndex = 0
|
||||
Me.TXT_SUBS.TextBoxReadOnly = True
|
||||
'
|
||||
'CMB_SUBS_FORMAT
|
||||
'
|
||||
Me.CMB_SUBS_FORMAT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.CMB_SUBS_FORMAT.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.CMB_SUBS_FORMAT.FormattingEnabled = True
|
||||
Me.CMB_SUBS_FORMAT.Location = New System.Drawing.Point(512, 3)
|
||||
Me.CMB_SUBS_FORMAT.Name = "CMB_SUBS_FORMAT"
|
||||
Me.CMB_SUBS_FORMAT.Size = New System.Drawing.Size(74, 21)
|
||||
Me.CMB_SUBS_FORMAT.TabIndex = 1
|
||||
'
|
||||
'TP_MAIN
|
||||
'
|
||||
Me.TP_MAIN.ColumnCount = 1
|
||||
Me.TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_MAIN.Controls.Add(Me.TP_HEADER_BASE, 0, 0)
|
||||
Me.TP_MAIN.Controls.Add(TP_FOOTER, 0, 8)
|
||||
Me.TP_MAIN.Controls.Add(Me.TP_OPTIONS, 0, 1)
|
||||
Me.TP_MAIN.Controls.Add(Me.TP_CONTROLS, 0, 6)
|
||||
Me.TP_MAIN.Controls.Add(LB_SEP_1, 0, 5)
|
||||
Me.TP_MAIN.Controls.Add(LB_SEP_2, 0, 7)
|
||||
Me.TP_MAIN.Controls.Add(Me.TP_SUBS, 0, 2)
|
||||
Me.TP_MAIN.Controls.Add(Me.TXT_SUBS_ADDIT, 0, 3)
|
||||
Me.TP_MAIN.Controls.Add(Me.TXT_EXTRA_AUDIO_FORMATS, 0, 4)
|
||||
Me.TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TP_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||
Me.TP_MAIN.Name = "TP_MAIN"
|
||||
Me.TP_MAIN.RowCount = 10
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 65.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 5.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 5.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 58.0!))
|
||||
Me.TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle())
|
||||
Me.TP_MAIN.Size = New System.Drawing.Size(601, 271)
|
||||
Me.TP_MAIN.TabIndex = 0
|
||||
'
|
||||
'TP_OPTIONS
|
||||
'
|
||||
Me.TP_OPTIONS.ColumnCount = 6
|
||||
Me.TP_OPTIONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_OPTIONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
Me.TP_OPTIONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
Me.TP_OPTIONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
Me.TP_OPTIONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
Me.TP_OPTIONS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!))
|
||||
Me.TP_OPTIONS.Controls.Add(LBL_FORMAT, 1, 0)
|
||||
Me.TP_OPTIONS.Controls.Add(TP_WHAT, 0, 0)
|
||||
Me.TP_OPTIONS.Controls.Add(Me.CMB_FORMAT, 2, 0)
|
||||
Me.TP_OPTIONS.Controls.Add(Me.LBL_AUDIO_CODEC, 4, 0)
|
||||
Me.TP_OPTIONS.Controls.Add(Me.CMB_AUDIO_CODEC, 5, 0)
|
||||
Me.TP_OPTIONS.Controls.Add(Me.NUM_RES, 3, 0)
|
||||
Me.TP_OPTIONS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TP_OPTIONS.Location = New System.Drawing.Point(6, 65)
|
||||
Me.TP_OPTIONS.Margin = New System.Windows.Forms.Padding(6, 0, 6, 0)
|
||||
Me.TP_OPTIONS.Name = "TP_OPTIONS"
|
||||
Me.TP_OPTIONS.RowCount = 1
|
||||
Me.TP_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_OPTIONS.Size = New System.Drawing.Size(589, 28)
|
||||
Me.TP_OPTIONS.TabIndex = 1
|
||||
'
|
||||
'CMB_FORMAT
|
||||
'
|
||||
Me.CMB_FORMAT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.CMB_FORMAT.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.CMB_FORMAT.FormattingEnabled = True
|
||||
Me.CMB_FORMAT.Location = New System.Drawing.Point(272, 3)
|
||||
Me.CMB_FORMAT.Name = "CMB_FORMAT"
|
||||
Me.CMB_FORMAT.Size = New System.Drawing.Size(74, 21)
|
||||
Me.CMB_FORMAT.TabIndex = 1
|
||||
'
|
||||
'CMB_AUDIO_CODEC
|
||||
'
|
||||
Me.CMB_AUDIO_CODEC.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.CMB_AUDIO_CODEC.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.CMB_AUDIO_CODEC.FormattingEnabled = True
|
||||
Me.CMB_AUDIO_CODEC.Location = New System.Drawing.Point(512, 3)
|
||||
Me.CMB_AUDIO_CODEC.Name = "CMB_AUDIO_CODEC"
|
||||
Me.CMB_AUDIO_CODEC.Size = New System.Drawing.Size(74, 21)
|
||||
Me.CMB_AUDIO_CODEC.TabIndex = 3
|
||||
'
|
||||
'NUM_RES
|
||||
'
|
||||
Me.NUM_RES.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.NUM_RES.Location = New System.Drawing.Point(352, 3)
|
||||
Me.NUM_RES.Maximum = New Decimal(New Integer() {10000, 0, 0, 0})
|
||||
Me.NUM_RES.Minimum = New Decimal(New Integer() {1, 0, 0, -2147483648})
|
||||
Me.NUM_RES.Name = "NUM_RES"
|
||||
Me.NUM_RES.Size = New System.Drawing.Size(74, 20)
|
||||
Me.NUM_RES.TabIndex = 2
|
||||
Me.NUM_RES.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
|
||||
Me.NUM_RES.Value = New Decimal(New Integer() {1080, 0, 0, 0})
|
||||
'
|
||||
'TP_CONTROLS
|
||||
'
|
||||
Me.TP_CONTROLS.ColumnCount = 1
|
||||
Me.TP_CONTROLS.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_CONTROLS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TP_CONTROLS.Location = New System.Drawing.Point(3, 182)
|
||||
Me.TP_CONTROLS.Margin = New System.Windows.Forms.Padding(3, 0, 3, 0)
|
||||
Me.TP_CONTROLS.Name = "TP_CONTROLS"
|
||||
Me.TP_CONTROLS.RowCount = 1
|
||||
Me.TP_CONTROLS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||
Me.TP_CONTROLS.Size = New System.Drawing.Size(595, 25)
|
||||
Me.TP_CONTROLS.TabIndex = 0
|
||||
'
|
||||
'TXT_SUBS_ADDIT
|
||||
'
|
||||
ActionButton4.BackgroundImage = CType(resources.GetObject("ActionButton4.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton4.Enabled = False
|
||||
ActionButton4.Name = "Open"
|
||||
ActionButton4.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Open
|
||||
ActionButton4.ToolTipText = "Choose additional formats"
|
||||
ActionButton5.BackgroundImage = CType(resources.GetObject("ActionButton5.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton5.Enabled = False
|
||||
ActionButton5.Name = "Refresh"
|
||||
ActionButton5.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Refresh
|
||||
ActionButton5.ToolTipText = "Fill in additional formats from the defaults"
|
||||
ActionButton6.BackgroundImage = CType(resources.GetObject("ActionButton6.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton6.Enabled = False
|
||||
ActionButton6.Name = "Clear"
|
||||
ActionButton6.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear
|
||||
ActionButton6.ToolTipText = "Remove all additional formats"
|
||||
Me.TXT_SUBS_ADDIT.Buttons.Add(ActionButton4)
|
||||
Me.TXT_SUBS_ADDIT.Buttons.Add(ActionButton5)
|
||||
Me.TXT_SUBS_ADDIT.Buttons.Add(ActionButton6)
|
||||
Me.TXT_SUBS_ADDIT.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.CheckBox
|
||||
Me.TXT_SUBS_ADDIT.CaptionText = "Additional subtitle formats"
|
||||
Me.TXT_SUBS_ADDIT.CaptionToolTipEnabled = True
|
||||
Me.TXT_SUBS_ADDIT.CaptionToolTipText = "Subtitles will be downloaded in 'SRT' format and converted to additional formats"
|
||||
Me.TXT_SUBS_ADDIT.CaptionWidth = 150.0R
|
||||
Me.TXT_SUBS_ADDIT.ClearTextByButtonClear = False
|
||||
Me.TXT_SUBS_ADDIT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_SUBS_ADDIT.Location = New System.Drawing.Point(6, 124)
|
||||
Me.TXT_SUBS_ADDIT.Margin = New System.Windows.Forms.Padding(6, 3, 6, 3)
|
||||
Me.TXT_SUBS_ADDIT.Name = "TXT_SUBS_ADDIT"
|
||||
Me.TXT_SUBS_ADDIT.Size = New System.Drawing.Size(589, 22)
|
||||
Me.TXT_SUBS_ADDIT.TabIndex = 3
|
||||
Me.TXT_SUBS_ADDIT.Tag = "s"
|
||||
Me.TXT_SUBS_ADDIT.TextBoxReadOnly = True
|
||||
'
|
||||
'TXT_EXTRA_AUDIO_FORMATS
|
||||
'
|
||||
ActionButton7.BackgroundImage = CType(resources.GetObject("ActionButton7.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton7.Enabled = False
|
||||
ActionButton7.Name = "Open"
|
||||
ActionButton7.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Open
|
||||
ActionButton7.ToolTipText = "Choose additional formats"
|
||||
ActionButton8.BackgroundImage = CType(resources.GetObject("ActionButton8.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton8.Enabled = False
|
||||
ActionButton8.Name = "Refresh"
|
||||
ActionButton8.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Refresh
|
||||
ActionButton8.ToolTipText = "Fill in additional formats from the defaults"
|
||||
ActionButton9.BackgroundImage = CType(resources.GetObject("ActionButton9.BackgroundImage"), System.Drawing.Image)
|
||||
ActionButton9.Enabled = False
|
||||
ActionButton9.Name = "Clear"
|
||||
ActionButton9.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear
|
||||
ActionButton9.ToolTipText = "Choose additional formats"
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Buttons.Add(ActionButton7)
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Buttons.Add(ActionButton8)
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Buttons.Add(ActionButton9)
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.CheckBox
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.CaptionText = "Additional audio formats"
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.CaptionToolTipEnabled = True
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.CaptionWidth = 150.0R
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.ClearTextByButtonClear = False
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Location = New System.Drawing.Point(6, 152)
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Margin = New System.Windows.Forms.Padding(6, 3, 6, 3)
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Name = "TXT_EXTRA_AUDIO_FORMATS"
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Size = New System.Drawing.Size(589, 22)
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.TabIndex = 4
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.Tag = "a"
|
||||
Me.TXT_EXTRA_AUDIO_FORMATS.TextBoxReadOnly = True
|
||||
'
|
||||
'VideoOptionsForm
|
||||
'
|
||||
Me.AcceptButton = Me.BTT_DOWN
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.CancelButton = Me.BTT_CANCEL
|
||||
Me.ClientSize = New System.Drawing.Size(601, 271)
|
||||
Me.Controls.Add(Me.TP_MAIN)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
|
||||
Me.Icon = Global.SCrawler.My.Resources.SiteYouTube.YouTubeIcon_32
|
||||
Me.KeyPreview = True
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "VideoOptionsForm"
|
||||
Me.ShowInTaskbar = False
|
||||
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
|
||||
Me.Text = "Download video"
|
||||
TP_HEADER.ResumeLayout(False)
|
||||
CType(Me.ICON_VIDEO, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
TP_HEADER_INFO.ResumeLayout(False)
|
||||
Me.TP_HEADER_INFO_2.ResumeLayout(False)
|
||||
Me.TP_HEADER_INFO_2.PerformLayout()
|
||||
CType(ICON_CLOCK, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(ICON_LINK, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
TP_FOOTER.ResumeLayout(False)
|
||||
TP_DESTINATION.ResumeLayout(False)
|
||||
TP_DESTINATION.PerformLayout()
|
||||
TP_OK_CANCEL.ResumeLayout(False)
|
||||
TP_WHAT.ResumeLayout(False)
|
||||
TP_WHAT.PerformLayout()
|
||||
Me.TP_HEADER_BASE.ResumeLayout(False)
|
||||
Me.TP_SUBS.ResumeLayout(False)
|
||||
Me.TP_SUBS.PerformLayout()
|
||||
CType(Me.TXT_SUBS, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.TP_MAIN.ResumeLayout(False)
|
||||
Me.TP_OPTIONS.ResumeLayout(False)
|
||||
Me.TP_OPTIONS.PerformLayout()
|
||||
CType(Me.NUM_RES, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.TXT_SUBS_ADDIT, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.TXT_EXTRA_AUDIO_FORMATS, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
Private WithEvents ICON_VIDEO As PictureBox
|
||||
Private WithEvents LBL_TITLE As Label
|
||||
Private WithEvents LBL_TIME As Label
|
||||
Private WithEvents LBL_URL As LinkLabel
|
||||
Private WithEvents TP_OPTIONS As TableLayoutPanel
|
||||
Private WithEvents LBL_AUDIO_CODEC As Label
|
||||
Private WithEvents TP_SUBS As TableLayoutPanel
|
||||
Private WithEvents NUM_RES As NumericUpDown
|
||||
Private WithEvents TP_HEADER_BASE As TableLayoutPanel
|
||||
Private WithEvents TP_CONTROLS As TableLayoutPanel
|
||||
Private WithEvents TP_MAIN As TableLayoutPanel
|
||||
Private WithEvents CMB_AUDIO_CODEC As ComboBox
|
||||
Private WithEvents OPT_VIDEO As RadioButton
|
||||
Private WithEvents OPT_AUDIO As RadioButton
|
||||
Private WithEvents CMB_FORMAT As ComboBox
|
||||
Private WithEvents TXT_SUBS As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||
Private WithEvents CMB_SUBS_FORMAT As ComboBox
|
||||
Private WithEvents TXT_SUBS_ADDIT As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||
Private WithEvents TXT_EXTRA_AUDIO_FORMATS As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||
Private WithEvents TXT_FILE As TextBox
|
||||
Private WithEvents BTT_BROWSE As Button
|
||||
Private WithEvents BTT_DOWN As Button
|
||||
Private WithEvents BTT_CANCEL As Button
|
||||
Private WithEvents TP_HEADER_INFO_2 As TableLayoutPanel
|
||||
End Class
|
||||
End Namespace
|
||||
271
SCrawler.YouTube/Controls/VideoOptionsForm.resx
Normal file
271
SCrawler.YouTube/Controls/VideoOptionsForm.resx
Normal file
@@ -0,0 +1,271 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="TP_HEADER.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_HEADER_INFO.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="ICON_CLOCK.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="ICON_LINK.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_FOOTER.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_DESTINATION.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TT_MAIN.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TT_MAIN.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="TP_OK_CANCEL.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="LB_SEP_1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="LB_SEP_2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="TP_WHAT.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="LBL_WHAT.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="LBL_FORMAT.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="LBL_SUBS_FORMAT.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="ActionButton1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
|
||||
WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
|
||||
aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
|
||||
5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
|
||||
vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
|
||||
cMaRN0UdBBkAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton2.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
|
||||
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElE
|
||||
QVQ4T2P4//8/QczOJyyqHpzfiE0OQwAZC8iqszAzs7CJ69o4BR768V/W2jcGXQ0KB4aFNS3dDQtnrbCb
|
||||
ePCK48wTN1wXXXzge/jXf/clV55zC4hIIatF0cjIyMikElzc57z0wX+XHd/+2+//99/ywP//xlu//tdb
|
||||
+eK/4Zp3/1WTOhYzARViNUAluKjTdf37/0ZTTn9TbdhwXblhwwW1/qOP1Ja9+K8w+95/6cm3/6v2Xvkv
|
||||
qKjniGGAoIqRpW3/4e8S9uGdzFz82gwMDFxAzCxm4ZegtuLDf+VJ1/8rZM25IqLvnM/CximCYYCic1QN
|
||||
v7x2JIwPwyrJ3XNUylddE9G2TWNmZOBDl4czmJiZMSRBmFdSyYyJgUEQmxwIYxWEYXZBCUls4sgYq6CA
|
||||
prWNbtG8nXKeaVPR5XiVjSxEzf0yYXy4BBMLO6eQjoOXZvrkbbazrv53Xf/2v4CSbjBMXkhBl1/CMyNZ
|
||||
qWnvGy5pNQ+YONwAfjXzAOupl/47LLr333L50/96q9/8l23YdES6cO5KuYqVW+R7Tj6SnfP0v4hryjyY
|
||||
HhQDmFjYeHVKFp7WX/Xuv9Kq9/+Vd/z7r7rv/3+l7f//y676DEwDN/9L+BVvYkKLCTgDhNkkVUyVlr74
|
||||
qbbz73/VOTc/qsy89kWx+9h7qbQpJwS1bbOAscGGrB6EUTggLOqf16C55ft/HlnNAFZOXgVWdi4FRgYG
|
||||
VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton3.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton4.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
|
||||
WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
|
||||
aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
|
||||
5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
|
||||
vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
|
||||
cMaRN0UdBBkAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton5.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
|
||||
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElE
|
||||
QVQ4T2P4//8/QczOJyyqHpzfiE0OQwAZC8iqszAzs7CJ69o4BR768V/W2jcGXQ0KB4aFNS3dDQtnrbCb
|
||||
ePCK48wTN1wXXXzge/jXf/clV55zC4hIIatF0cjIyMikElzc57z0wX+XHd/+2+//99/ywP//xlu//tdb
|
||||
+eK/4Zp3/1WTOhYzARViNUAluKjTdf37/0ZTTn9TbdhwXblhwwW1/qOP1Ja9+K8w+95/6cm3/6v2Xvkv
|
||||
qKjniGGAoIqRpW3/4e8S9uGdzFz82gwMDFxAzCxm4ZegtuLDf+VJ1/8rZM25IqLvnM/CximCYYCic1QN
|
||||
v7x2JIwPwyrJ3XNUylddE9G2TWNmZOBDl4czmJiZMSRBmFdSyYyJgUEQmxwIYxWEYXZBCUls4sgYq6CA
|
||||
prWNbtG8nXKeaVPR5XiVjSxEzf0yYXy4BBMLO6eQjoOXZvrkbbazrv53Xf/2v4CSbjBMXkhBl1/CMyNZ
|
||||
qWnvGy5pNQ+YONwAfjXzAOupl/47LLr333L50/96q9/8l23YdES6cO5KuYqVW+R7Tj6SnfP0v4hryjyY
|
||||
HhQDmFjYeHVKFp7WX/Xuv9Kq9/+Vd/z7r7rv/3+l7f//y676DEwDN/9L+BVvYkKLCTgDhNkkVUyVlr74
|
||||
qbbz73/VOTc/qsy89kWx+9h7qbQpJwS1bbOAscGGrB6EUTggLOqf16C55ft/HlnNAFZOXgVWdi4FRgYG
|
||||
VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton6.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton7.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
|
||||
WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
|
||||
aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
|
||||
5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
|
||||
vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
|
||||
cMaRN0UdBBkAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton8.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
|
||||
JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElE
|
||||
QVQ4T2P4//8/QczOJyyqHpzfiE0OQwAZC8iqszAzs7CJ69o4BR768V/W2jcGXQ0KB4aFNS3dDQtnrbCb
|
||||
ePCK48wTN1wXXXzge/jXf/clV55zC4hIIatF0cjIyMikElzc57z0wX+XHd/+2+//99/ywP//xlu//tdb
|
||||
+eK/4Zp3/1WTOhYzARViNUAluKjTdf37/0ZTTn9TbdhwXblhwwW1/qOP1Ja9+K8w+95/6cm3/6v2Xvkv
|
||||
qKjniGGAoIqRpW3/4e8S9uGdzFz82gwMDFxAzCxm4ZegtuLDf+VJ1/8rZM25IqLvnM/CximCYYCic1QN
|
||||
v7x2JIwPwyrJ3XNUylddE9G2TWNmZOBDl4czmJiZMSRBmFdSyYyJgUEQmxwIYxWEYXZBCUls4sgYq6CA
|
||||
prWNbtG8nXKeaVPR5XiVjSxEzf0yYXy4BBMLO6eQjoOXZvrkbbazrv53Xf/2v4CSbjBMXkhBl1/CMyNZ
|
||||
qWnvGy5pNQ+YONwAfjXzAOupl/47LLr333L50/96q9/8l23YdES6cO5KuYqVW+R7Tj6SnfP0v4hryjyY
|
||||
HhQDmFjYeHVKFp7WX/Xuv9Kq9/+Vd/z7r7rv/3+l7f//y676DEwDN/9L+BVvYkKLCTgDhNkkVUyVlr74
|
||||
qbbz73/VOTc/qsy89kWx+9h7qbQpJwS1bbOAscGGrB6EUTggLOqf16C55ft/HlnNAFZOXgVWdi4FRgYG
|
||||
VnR1MIwhwMTCyqEQ37qEmZVDFF0OE/9nAACtFF4Ey6OP+wAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ActionButton9.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
474
SCrawler.YouTube/Controls/VideoOptionsForm.vb
Normal file
474
SCrawler.YouTube/Controls/VideoOptionsForm.vb
Normal file
@@ -0,0 +1,474 @@
|
||||
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
||||
' This program is free software: you can redistribute it and/or modify
|
||||
' it under the terms of the GNU General Public License as published by
|
||||
' the Free Software Foundation, either version 3 of the License, or
|
||||
' (at your option) any later version.
|
||||
'
|
||||
' This program is distributed in the hope that it will be useful,
|
||||
' but WITHOUT ANY WARRANTY
|
||||
Imports System.ComponentModel
|
||||
Imports PersonalUtilities.Forms
|
||||
Imports PersonalUtilities.Forms.Controls
|
||||
Imports PersonalUtilities.Forms.Controls.Base
|
||||
Imports PersonalUtilities.Functions.XML
|
||||
Imports PersonalUtilities.Functions.XML.Base
|
||||
Imports PersonalUtilities.Tools
|
||||
Imports SCrawler.API.YouTube.Base
|
||||
Imports SCrawler.API.YouTube.Objects
|
||||
Imports SCrawler.DownloadObjects.STDownloader
|
||||
Imports UMTypes = SCrawler.Plugin.UserMediaTypes
|
||||
Imports ADB = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons
|
||||
Namespace API.YouTube.Controls
|
||||
Friend Class VideoOptionsForm : Implements IDesignXMLContainer
|
||||
#Region "Declarations"
|
||||
Private MyView As FormView
|
||||
Friend Property DesignXML As EContainer Implements IDesignXMLContainer.DesignXML
|
||||
Private Property DesignXMLNodes As String() Implements IDesignXMLContainer.DesignXMLNodes
|
||||
Private Property DesignXMLNodeName As String Implements IDesignXMLContainer.DesignXMLNodeName
|
||||
Private Const ControlsRow As Integer = 6
|
||||
Private ReadOnly Property CNT_PROCESSOR As TableControlsProcessor
|
||||
Friend Property MyContainer As YouTubeMediaContainerBase
|
||||
Private Initialization As Boolean = True
|
||||
Private ReadOnly IsSavedObject As Boolean
|
||||
#End Region
|
||||
#Region "Initializers"
|
||||
Friend Sub New(ByVal Container As YouTubeMediaContainerBase, Optional ByVal IsSavedObject As Boolean = False)
|
||||
InitializeComponent()
|
||||
MyContainer = Container
|
||||
CNT_PROCESSOR = New TableControlsProcessor(TP_CONTROLS)
|
||||
Me.IsSavedObject = IsSavedObject
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Form handlers"
|
||||
Private Sub VideoOptionsForm_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
If Not DesignXML Is Nothing Then
|
||||
MyView = New FormView(Me) With {.LocationOnly = True}
|
||||
MyView.Import()
|
||||
MyView.SetFormSize()
|
||||
End If
|
||||
|
||||
If Not MyContainer Is Nothing Then
|
||||
With MyContainer
|
||||
Dim i%
|
||||
Dim arr$() = Nothing
|
||||
Dim arrComparer As New FComparer(Of String)(Function(x, y) x.ToLower = y.ToLower)
|
||||
Dim setDef As Action(Of ComboBox, String) =
|
||||
Sub(ByVal cmb As ComboBox, ByVal compValue As String)
|
||||
i = -1
|
||||
If Not compValue.IsEmptyString Then i = arr.ListIndexOf(compValue, arrComparer, EDP.ReturnValue)
|
||||
If i >= 0 Then cmb.SelectedIndex = i Else cmb.SelectedIndex = 0
|
||||
End Sub
|
||||
Dim __audioOnly As Boolean = False
|
||||
Dim __optionValue$
|
||||
|
||||
If .HasElements Then
|
||||
Text = "Playlist"
|
||||
If Not .PlaylistTitle.IsEmptyString Or Not .Title.IsEmptyString Then Text &= $" - { .PlaylistTitle.IfNullOrEmpty(.Title)}"
|
||||
TP_MAIN.Controls.Remove(TP_HEADER_BASE)
|
||||
TP_MAIN.RowStyles(0).Height = 0
|
||||
Dim def% = If(IsSavedObject, .ArrayMaxResolution, MyYouTubeSettings.DefaultVideoDefinition.Value)
|
||||
If IsSavedObject Then
|
||||
__audioOnly = def = -2
|
||||
If def <= 0 Then def = MyYouTubeSettings.DefaultVideoDefinition
|
||||
Else
|
||||
If Not def.ValueBetween(-1, 10000) Then def = 1080
|
||||
End If
|
||||
NUM_RES.Value = def
|
||||
Else
|
||||
TP_OPTIONS.Controls.Remove(NUM_RES)
|
||||
TP_OPTIONS.ColumnStyles(3).Width = 0
|
||||
Dim img As Image = Nothing
|
||||
Dim imgUrl$ = .ThumbnailUrlMedia
|
||||
If Not imgUrl.IsEmptyString Then
|
||||
img = ImageRenderer.GetImage(SFile.GetBytesFromNet(imgUrl, EDP.ReturnValue), EDP.ReturnValue)
|
||||
If Not img Is Nothing Then ICON_VIDEO.Image = img : ICON_VIDEO.InitialImage = img
|
||||
End If
|
||||
LBL_TITLE.Text = .Title
|
||||
LBL_TIME.Text = AConvert(Of String)(.Duration, TimeToStringProvider, String.Empty)
|
||||
TP_HEADER_INFO_2.ColumnStyles(1).Width = MeasureTextDefault(LBL_TIME.Text, LBL_TIME.Font).Width + PaddingE.GetOf({LBL_TIME}).Horizontal
|
||||
TP_HEADER_INFO_2.Refresh()
|
||||
LBL_URL.Text = .URL
|
||||
End If
|
||||
|
||||
If .IsMusic Or __audioOnly Then
|
||||
OPT_AUDIO.Checked = True
|
||||
Else
|
||||
OPT_VIDEO.Checked = True
|
||||
End If
|
||||
CMB_FORMAT.Enabled = OPT_VIDEO.Checked
|
||||
|
||||
arr = AvailableVideoFormats
|
||||
CMB_FORMAT.Items.AddRange(arr)
|
||||
If IsSavedObject Then
|
||||
__optionValue = .OutputVideoExtension.IfNullOrEmpty(MyYouTubeSettings.DefaultVideoFormat.Value)
|
||||
Else
|
||||
__optionValue = MyYouTubeSettings.DefaultVideoFormat.Value
|
||||
End If
|
||||
setDef(CMB_FORMAT, __optionValue)
|
||||
|
||||
arr = AvailableAudioFormats
|
||||
CMB_AUDIO_CODEC.Items.AddRange(arr)
|
||||
If IsSavedObject Then
|
||||
__optionValue = .OutputAudioCodec.IfNullOrEmpty(IIf(.IsMusic, MyYouTubeSettings.DefaultAudioCodecMusic.Value, MyYouTubeSettings.DefaultAudioCodec.Value))
|
||||
Else
|
||||
__optionValue = IIf(.IsMusic, MyYouTubeSettings.DefaultAudioCodecMusic.Value, MyYouTubeSettings.DefaultAudioCodec.Value)
|
||||
End If
|
||||
setDef(CMB_AUDIO_CODEC, __optionValue)
|
||||
|
||||
arr = AvailableSubtitlesFormats
|
||||
CMB_SUBS_FORMAT.Items.AddRange(arr)
|
||||
If IsSavedObject Then
|
||||
__optionValue = .OutputSubtitlesFormat.IfNullOrEmpty(IIf(.IsMusic, "LRC", MyYouTubeSettings.DefaultSubtitlesFormat.Value))
|
||||
Else
|
||||
__optionValue = IIf(.IsMusic, "LRC", MyYouTubeSettings.DefaultSubtitlesFormat.Value)
|
||||
End If
|
||||
setDef(CMB_SUBS_FORMAT, __optionValue)
|
||||
|
||||
TP_SUBS.Enabled = .Subtitles.Count > 0
|
||||
TXT_SUBS_ADDIT.Enabled = .Subtitles.Count > 0
|
||||
RefillTextBoxes()
|
||||
TXT_SUBS_ADDIT.Checked = .PostProcessing_OutputSubtitlesFormats.Count > 0
|
||||
TXT_EXTRA_AUDIO_FORMATS.Checked = .PostProcessing_OutputAudioFormats.Count > 0
|
||||
TXT_FILE.Text = .File
|
||||
RefillList()
|
||||
If OPT_VIDEO.Checked Then
|
||||
ChangeFileExtension(CMB_FORMAT.Text)
|
||||
Else
|
||||
If .HasElements Then NUM_RES.Enabled = False
|
||||
ChangeFileExtension(CMB_AUDIO_CODEC.Text)
|
||||
End If
|
||||
End With
|
||||
End If
|
||||
Initialization = False
|
||||
End Sub
|
||||
Private Sub VideoOptionsForm_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
||||
MyView.DisposeIfReady()
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Refill"
|
||||
Private Sub RefillList()
|
||||
Dim i%
|
||||
Dim h% = -1
|
||||
Dim rh% = IIf(MyContainer.HasElements, 60, 25)
|
||||
Dim s As New Size(Width, h)
|
||||
Dim CalculateSize As Action(Of Integer) =
|
||||
Sub(ByVal InitHeight As Integer)
|
||||
With TP_MAIN.RowStyles(ControlsRow) : .SizeType = SizeType.Absolute : .Height = InitHeight : End With
|
||||
s.Height = InitHeight
|
||||
For ii% = 0 To TP_MAIN.RowStyles.Count - 1
|
||||
If Not ii = ControlsRow And TP_MAIN.RowStyles(ii).SizeType = SizeType.Absolute Then s.Height += TP_MAIN.RowStyles(ii).Height
|
||||
Next
|
||||
s.Height += PaddingE.GetOf({TP_MAIN}).Vertical(TP_MAIN.RowStyles.Count - 3 - IIf(MyContainer.HasElements, 1, 0))
|
||||
End Sub
|
||||
Dim __contentType As UMTypes = IIf(OPT_VIDEO.Checked, UMTypes.Video, UMTypes.Audio)
|
||||
With TP_CONTROLS
|
||||
If .Controls.Count > 0 Then
|
||||
For Each cnt As Control In .Controls : cnt.Dispose() : Next
|
||||
.Controls.Clear()
|
||||
End If
|
||||
.RowStyles.Clear()
|
||||
.RowCount = 0
|
||||
End With
|
||||
With MyContainer
|
||||
Dim audio As MediaObject = Nothing
|
||||
If __contentType = UMTypes.Video Then audio = .SelectedAudio
|
||||
Dim data As IEnumerable(Of Control)
|
||||
|
||||
If .HasElements Then
|
||||
data = .Elements.Select(Function(ee) New MediaItem(ee) With {.Dock = DockStyle.Fill, .Checked = ee.Checked, .IgnoreDownloadState = True})
|
||||
Else
|
||||
data = (From m As MediaObject In .Self.MediaObjects
|
||||
Where m.Type = __contentType
|
||||
Select New VideoOption(m, audio) With {.Dock = DockStyle.Fill, .Checked = m.Index = MyContainer.SelectedVideoIndex})
|
||||
End If
|
||||
|
||||
If data.ListExists Then
|
||||
With TP_CONTROLS
|
||||
With .RowStyles
|
||||
.Clear()
|
||||
For i = 0 To data.Count - 1 : .Add(New RowStyle(SizeType.Absolute, rh)) : Next
|
||||
.Add(New RowStyle(SizeType.AutoSize))
|
||||
End With
|
||||
.RowCount = .RowStyles.Count
|
||||
For i = 0 To data.Count - 1 : .Controls.Add(data(i), 0, i) : Next
|
||||
.Controls.Cast(Of Control).ToList.ForEach(Sub(ByVal d As Control)
|
||||
DirectCast(d, ISupportInitialize).EndInit()
|
||||
If MyContainer.HasElements Then
|
||||
With DirectCast(d, MediaItem)
|
||||
AddHandler .CheckedChanged, AddressOf MediaItem_CheckedChanged
|
||||
AddHandler .Click, AddressOf CNT_PROCESSOR.MediaItem_Click
|
||||
AddHandler .KeyDown, AddressOf CNT_PROCESSOR.MediaItem_KeyDown
|
||||
End With
|
||||
End If
|
||||
End Sub)
|
||||
If MyContainer.HasElements Then
|
||||
If .Controls.Count > 0 Then
|
||||
Dim cIndx% = 0
|
||||
Dim c As Color
|
||||
For Each cnt As MediaItem In .Controls
|
||||
cIndx += 1
|
||||
If (cIndx Mod 2) = 0 Then c = SystemColors.ControlLight Else c = SystemColors.Window
|
||||
cnt.BackColor = c
|
||||
Next
|
||||
End If
|
||||
Else
|
||||
If Not data.ListExists(Function(d As VideoOption) d.Checked) Then
|
||||
If MyYouTubeSettings.DefaultVideoDefinition > 0 Then
|
||||
For Each cnt As VideoOption In .Controls
|
||||
If cnt.MyMedia.Height <= MyYouTubeSettings.DefaultVideoDefinition Then cnt.Checked = True : Exit For
|
||||
Next
|
||||
Else
|
||||
DirectCast(.Controls(0), VideoOption).Checked = True
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End With
|
||||
|
||||
h = data.Count * rh + PaddingE.GetOf({TP_CONTROLS}).Vertical(1.5)
|
||||
CalculateSize(h)
|
||||
Dim hh% = Screen.PrimaryScreen.WorkingArea.Height - 20
|
||||
If s.Height > hh Then
|
||||
h = 5 * rh + PaddingE.GetOf({TP_CONTROLS}).Vertical(1.5)
|
||||
CalculateSize(h)
|
||||
With TP_CONTROLS
|
||||
.AutoSizeMode = AutoSizeMode.GrowAndShrink
|
||||
.AutoScroll = True
|
||||
Dim p As Padding = .Padding
|
||||
p.Right += 3
|
||||
.Padding = p
|
||||
.VerticalScroll.Visible = True
|
||||
.VerticalScroll.Enabled = True
|
||||
.HorizontalScroll.Visible = False
|
||||
.HorizontalScroll.Enabled = False
|
||||
End With
|
||||
End If
|
||||
|
||||
With TP_CONTROLS
|
||||
.PerformLayout()
|
||||
.Select()
|
||||
If .Controls.Count > 0 Then .Controls(0).Focus()
|
||||
End With
|
||||
End If
|
||||
End With
|
||||
|
||||
If s.Height = -1 Then s.Height = rh
|
||||
MaximumSize = Nothing
|
||||
MinimumSize = Nothing
|
||||
Size = s
|
||||
MinimumSize = Size
|
||||
MaximumSize = Size
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Media items' handlers"
|
||||
Private Sub MediaItem_CheckedChanged(ByVal Sender As MediaItem, ByVal Container As IYouTubeMediaContainer)
|
||||
ControlInvokeFast(TP_CONTROLS, Sub() Container.Checked = Sender.Checked, EDP.None)
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "OK, Cancel"
|
||||
Private Sub BTT_DOWN_Click(sender As Object, e As EventArgs) Handles BTT_DOWN.Click
|
||||
Try
|
||||
Dim f As SFile
|
||||
If MyContainer.HasElements Then
|
||||
f = TXT_FILE.Text.CSFileP
|
||||
Else
|
||||
f = TXT_FILE.Text
|
||||
End If
|
||||
If f.IsEmptyString Then Throw New ArgumentNullException("File", "The output file cannot be null")
|
||||
With MyContainer
|
||||
.OutputVideoExtension = CMB_FORMAT.Text.StringToLower
|
||||
.OutputAudioCodec = CMB_AUDIO_CODEC.Text.StringToLower
|
||||
.OutputSubtitlesFormat = CMB_SUBS_FORMAT.Text.StringToLower
|
||||
|
||||
If Not .HasElements Then
|
||||
Dim cntIndex% = -1
|
||||
With TP_CONTROLS.Controls
|
||||
If .Count > 0 Then
|
||||
For Each cnt As VideoOption In .Self
|
||||
If cnt.Checked Then cntIndex = cnt.MyMedia.Index : Exit For
|
||||
Next
|
||||
End If
|
||||
End With
|
||||
If cntIndex = -1 Then Throw New ArgumentOutOfRangeException("Download option", "What to download is not selected")
|
||||
If OPT_VIDEO.Checked Then
|
||||
.SelectedVideoIndex = cntIndex
|
||||
Else
|
||||
.SelectedVideoIndex = -1
|
||||
.SelectedAudioIndex = cntIndex
|
||||
End If
|
||||
.File = f
|
||||
.FileSetManually = True
|
||||
.UpdateInfoFields()
|
||||
'#If DEBUG Then
|
||||
' Debug.WriteLine(.Command(False))
|
||||
'#End If
|
||||
Else
|
||||
If OPT_AUDIO.Checked Then
|
||||
.SetMaxResolution(-2)
|
||||
Else
|
||||
.SetMaxResolution(NUM_RES.Value)
|
||||
End If
|
||||
.File = f
|
||||
End If
|
||||
End With
|
||||
|
||||
If MyYouTubeSettings.OutputPathAutoChange Then MyYouTubeSettings.OutputPath.Value = f
|
||||
|
||||
DialogResult = DialogResult.OK
|
||||
Close()
|
||||
Catch ex As Exception
|
||||
ErrorsDescriber.Execute(EDP.SendToLog + EDP.ShowMainMsg, ex, $"Download {IIf(MyContainer.HasElements, "playlist", "video")}")
|
||||
End Try
|
||||
End Sub
|
||||
Private Sub BTT_CANCEL_Click(sender As Object, e As EventArgs) Handles BTT_CANCEL.Click
|
||||
DialogResult = DialogResult.Cancel
|
||||
Close()
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Controls' handlers"
|
||||
#Region "Header"
|
||||
Private Sub LBL_URL_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LBL_URL.LinkClicked
|
||||
If Not LBL_URL.Text.IsEmptyString Then
|
||||
Try : Process.Start(LBL_URL.Text) : Catch : End Try
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Settings"
|
||||
Private Sub OPT_VIDEO_AUDIO_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_VIDEO.CheckedChanged, OPT_AUDIO.CheckedChanged
|
||||
If Not Initialization Then
|
||||
CMB_FORMAT.Enabled = OPT_VIDEO.Checked
|
||||
If MyContainer.HasElements Then
|
||||
NUM_RES.Enabled = OPT_VIDEO.Checked
|
||||
Else
|
||||
RefillList()
|
||||
If OPT_VIDEO.Checked Then
|
||||
ChangeFileExtension(CMB_FORMAT.Text)
|
||||
Else
|
||||
ChangeFileExtension(CMB_AUDIO_CODEC.Text)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
Private Sub CMB_FORMAT_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CMB_FORMAT.SelectedIndexChanged
|
||||
If Not Initialization AndAlso OPT_VIDEO.Checked Then ChangeFileExtension(CMB_FORMAT.Text)
|
||||
End Sub
|
||||
Private Sub CMB_AUDIO_CODEC_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CMB_AUDIO_CODEC.SelectedIndexChanged
|
||||
If Not Initialization AndAlso OPT_AUDIO.Checked Then ChangeFileExtension(CMB_AUDIO_CODEC.Text)
|
||||
End Sub
|
||||
Private Sub ChangeFileExtension(ByVal NewExt As String)
|
||||
If Not MyContainer.HasElements Then
|
||||
Dim f As SFile = TXT_FILE.Text
|
||||
f.Extension = NewExt.StringToLower
|
||||
TXT_FILE.Text = f
|
||||
End If
|
||||
End Sub
|
||||
Private Sub TXT_SUBS_ActionOnButtonClick(ByVal Sender As ActionButton, ByVal e As ActionButtonEventArgs) Handles TXT_SUBS.ActionOnButtonClick
|
||||
Select Case Sender.DefaultButton
|
||||
Case ADB.Open
|
||||
If MyContainer.Subtitles.Count > 0 Then
|
||||
Using f As New SimpleListForm(Of String)(MyContainer.Subtitles.Select(Function(s) s.Name)) With {
|
||||
.DesignXML = DesignXML,
|
||||
.DesignXMLNodeName = SimpleArraysFormNode,
|
||||
.Mode = SimpleListFormModes.CheckedItems,
|
||||
.FormText = "Subtitles"
|
||||
}
|
||||
With MyContainer
|
||||
If .SubtitlesSelectedIndexes.Count > 0 Then f.DataSelectedIndexes.AddRange(.SubtitlesSelectedIndexes)
|
||||
If f.ShowDialog() = DialogResult.OK Then
|
||||
.SubtitlesSelectedIndexes.Clear()
|
||||
If f.DataResultIndexes.Count > 0 Then .SubtitlesSelectedIndexes.AddRange(f.DataResultIndexes)
|
||||
RefillTextBoxes()
|
||||
End If
|
||||
End With
|
||||
End Using
|
||||
End If
|
||||
Case ADB.Refresh
|
||||
MyContainer.SubtitlesSelectedIndexesReset()
|
||||
RefillTextBoxes()
|
||||
Case ADB.Clear
|
||||
MyContainer.SubtitlesSelectedIndexes.Clear()
|
||||
RefillTextBoxes()
|
||||
End Select
|
||||
End Sub
|
||||
Private Sub CONTROLS_ADDIT_ActionOnButtonClick(ByVal Sender As ActionButton, ByVal e As ActionButtonEventArgs) Handles TXT_SUBS_ADDIT.ActionOnButtonClick,
|
||||
TXT_EXTRA_AUDIO_FORMATS.ActionOnButtonClick
|
||||
Dim isSubs As Boolean = CStr(DirectCast(e.AssociatedControl, TextBoxExtended).Tag) = "s"
|
||||
Select Case Sender.DefaultButton
|
||||
Case ADB.Open
|
||||
Using f As New SimpleListForm(Of String)(If(isSubs, AvailableSubtitlesFormats, AvailableAudioFormats)) With {
|
||||
.DesignXML = DesignXML,
|
||||
.DesignXMLNodeName = SimpleArraysFormNode,
|
||||
.Mode = SimpleListFormModes.CheckedItems,
|
||||
.FormText = DirectCast(e.AssociatedControl, TextBoxExtended).CaptionText
|
||||
}
|
||||
With MyContainer
|
||||
With If(isSubs, .PostProcessing_OutputSubtitlesFormats, .PostProcessing_OutputAudioFormats)
|
||||
If .Self.Count > 0 Then f.DataSelected.AddRange(.Self)
|
||||
If f.ShowDialog() = DialogResult.OK Then
|
||||
.Self.Clear()
|
||||
If f.DataResultIndexes.Count > 0 Then .Self.AddRange(f.DataResult)
|
||||
DirectCast(e.AssociatedControl, TextBoxExtended).Text = .ListToString
|
||||
RefillTextBoxes()
|
||||
End If
|
||||
End With
|
||||
End With
|
||||
End Using
|
||||
Case ADB.Refresh
|
||||
If isSubs Then
|
||||
MyContainer.PostProcessing_OutputSubtitlesFormats_Reset()
|
||||
Else
|
||||
MyContainer.PostProcessing_OutputAudioFormats_Reset()
|
||||
End If
|
||||
RefillTextBoxes()
|
||||
Case ADB.Clear
|
||||
If isSubs Then
|
||||
MyContainer.PostProcessing_OutputSubtitlesFormats.Clear()
|
||||
Else
|
||||
MyContainer.PostProcessing_OutputAudioFormats.Clear()
|
||||
End If
|
||||
RefillTextBoxes()
|
||||
End Select
|
||||
End Sub
|
||||
#End Region
|
||||
#Region "Footer"
|
||||
Private Sub BTT_BROWSE_Click(sender As Object, e As EventArgs) Handles BTT_BROWSE.Click
|
||||
Dim f As SFile
|
||||
#Disable Warning BC40000
|
||||
If MyContainer.HasElements Then
|
||||
f = TXT_FILE.Text.CSFileP
|
||||
f = SFile.SelectPath(f, "Select the destination of the video files", EDP.ReturnValue)
|
||||
Else
|
||||
f = TXT_FILE.Text
|
||||
Dim sPattern$ = $"Video|{AvailableVideoFormats.Select(Function(vf) $"*.{vf.ToLower}").ListToString(";")}" &
|
||||
$"|Audio|{AvailableAudioFormats.Select(Function(af) $"*.{af.ToLower}").ListToString(";")}" &
|
||||
"|All Files|*.*"
|
||||
f = SFile.SaveAs(f, "Select the destination of the video file",,, sPattern, EDP.ReturnValue)
|
||||
End If
|
||||
#Enable Warning
|
||||
If Not f.IsEmptyString Then TXT_FILE.Text = f
|
||||
End Sub
|
||||
#End Region
|
||||
#End Region
|
||||
#Region "Functions"
|
||||
Private Sub RefillTextBoxes()
|
||||
With MyContainer
|
||||
If .SubtitlesSelectedIndexes.Count > 0 Then
|
||||
TXT_SUBS.Text = ListAddList(Nothing, .Subtitles.Select(Function(s, i) If(.SubtitlesSelectedIndexes.Contains(i), s.ID, String.Empty)),
|
||||
LAP.NotContainsOnly, EDP.ReturnValue).ListToString(",")
|
||||
Else
|
||||
TXT_SUBS.Clear()
|
||||
End If
|
||||
If .PostProcessing_OutputSubtitlesFormats.Count > 0 Then
|
||||
TXT_SUBS_ADDIT.Text = .PostProcessing_OutputSubtitlesFormats.ListToString
|
||||
Else
|
||||
TXT_SUBS_ADDIT.Clear()
|
||||
End If
|
||||
If .PostProcessing_OutputAudioFormats.Count > 0 Then
|
||||
TXT_EXTRA_AUDIO_FORMATS.Text = .PostProcessing_OutputAudioFormats.ListToString
|
||||
Else
|
||||
TXT_EXTRA_AUDIO_FORMATS.Clear()
|
||||
End If
|
||||
End With
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
Reference in New Issue
Block a user