mirror of
https://github.com/AAndyProgram/SCrawler.git
synced 2026-03-14 15:52:18 +00:00
1.0.0.4
Add full channel support, make ready for download prop available for collections and multiusers Fixed imgur pics compatibility Updated abstract classes and functions for channels compatibility
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
# 1.0.0.4
|
||||||
|
|
||||||
|
- Added
|
||||||
|
- Full channels support (you can now add channel (subreddit) for standard download)
|
||||||
|
- ```Ready for download``` now available for collections and can be changed for multiple user
|
||||||
|
- Fixed
|
||||||
|
- Images hosted on Imgur won't download
|
||||||
|
|
||||||
# 1.0.0.3
|
# 1.0.0.3
|
||||||
|
|
||||||
- Fixed
|
- Fixed
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Enjoying the tool? Considering adding to my coffee fund :)
|
|||||||
[](https://ko-fi.com/andyprogram)
|
[](https://ko-fi.com/andyprogram)
|
||||||
|
|
||||||
# What can program do:
|
# What can program do:
|
||||||
- Download pictures and videos from users' profiles:
|
- Download pictures and videos from users' profiles and subreddits:
|
||||||
- Reddit images;
|
- Reddit images;
|
||||||
- Reddit galleries of images;
|
- Reddit galleries of images;
|
||||||
- Redgifs hosted videos (https://www.redgifs.com/);
|
- Redgifs hosted videos (https://www.redgifs.com/);
|
||||||
@@ -47,10 +47,13 @@ Just add user profile and press ```Start downloading``` button.
|
|||||||
Users can be added by patterns:
|
Users can be added by patterns:
|
||||||
- https://twitter.com/SomeUserName
|
- https://twitter.com/SomeUserName
|
||||||
- https://reddit.com/user/SomeUserName
|
- https://reddit.com/user/SomeUserName
|
||||||
|
- https://reddit.com/r/SomeSubredditName
|
||||||
- u/SomeUserName
|
- u/SomeUserName
|
||||||
|
- r/SomeSubredditName
|
||||||
- SomeUserName (in this case you must to choose user site)
|
- SomeUserName (in this case you must to choose user site)
|
||||||
|
- SomeSubredditName
|
||||||
|
|
||||||
More about users adding [here](https://github.com/AAndyProgram/SCrawler/wiki/Users)
|
More about users and subreddits adding [here](https://github.com/AAndyProgram/SCrawler/wiki/Users)
|
||||||
|
|
||||||
**Full guide you can find [here](https://github.com/AAndyProgram/SCrawler/wiki)**
|
**Full guide you can find [here](https://github.com/AAndyProgram/SCrawler/wiki)**
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ Namespace API.Base
|
|||||||
#End Region
|
#End Region
|
||||||
#Region "XML Declarations"
|
#Region "XML Declarations"
|
||||||
Private Const Name_Site As String = "Site"
|
Private Const Name_Site As String = "Site"
|
||||||
|
Private Const Name_IsChannel As String = "IsChannel"
|
||||||
Private Const Name_UserName As String = "UserName"
|
Private Const Name_UserName As String = "UserName"
|
||||||
Private Const Name_FriendlyName As String = "FriendlyName"
|
Private Const Name_FriendlyName As String = "FriendlyName"
|
||||||
Private Const Name_UserID As String = "UserID"
|
Private Const Name_UserID As String = "UserID"
|
||||||
@@ -131,7 +132,7 @@ Namespace API.Base
|
|||||||
Protected Function GetNullPicture(ByVal MaxHeigh As XML.Base.XMLValue(Of Integer)) As Bitmap
|
Protected Function GetNullPicture(ByVal MaxHeigh As XML.Base.XMLValue(Of Integer)) As Bitmap
|
||||||
Return New Bitmap(CInt(DivideWithZeroChecking(MaxHeigh.Value, 100) * 75), MaxHeigh.Value)
|
Return New Bitmap(CInt(DivideWithZeroChecking(MaxHeigh.Value, 100) * 75), MaxHeigh.Value)
|
||||||
End Function
|
End Function
|
||||||
Private Function GetPicture(Optional ByVal ReturnNullImageOnNothing As Boolean = True) As Image
|
Protected Function GetPicture(Optional ByVal ReturnNullImageOnNothing As Boolean = True) As Image
|
||||||
Dim f As SFile = Nothing
|
Dim f As SFile = Nothing
|
||||||
Dim p As UserImage = Nothing
|
Dim p As UserImage = Nothing
|
||||||
Dim DelPath As Boolean = True
|
Dim DelPath As Boolean = True
|
||||||
@@ -234,7 +235,7 @@ BlockNullPicture:
|
|||||||
#Region "Downloading params"
|
#Region "Downloading params"
|
||||||
Protected _DataLoaded As Boolean = False
|
Protected _DataLoaded As Boolean = False
|
||||||
Protected _DataParsed As Boolean = False
|
Protected _DataParsed As Boolean = False
|
||||||
Friend Property ReadyForDownload As Boolean = True Implements IUserData.ReadyForDownload
|
Friend Overridable Property ReadyForDownload As Boolean = True Implements IUserData.ReadyForDownload
|
||||||
Friend Property DownloadImages As Boolean = True Implements IUserData.DownloadImages
|
Friend Property DownloadImages As Boolean = True Implements IUserData.DownloadImages
|
||||||
Friend Property DownloadVideos As Boolean = True Implements IUserData.DownloadVideos
|
Friend Property DownloadVideos As Boolean = True Implements IUserData.DownloadVideos
|
||||||
#End Region
|
#End Region
|
||||||
@@ -409,7 +410,12 @@ BlockNullPicture:
|
|||||||
''' <exception cref="ArgumentOutOfRangeException"></exception>
|
''' <exception cref="ArgumentOutOfRangeException"></exception>
|
||||||
Friend Overloads Shared Function GetInstance(ByVal u As UserInfo, Optional ByVal _LoadUserInformation As Boolean = True) As IUserData
|
Friend Overloads Shared Function GetInstance(ByVal u As UserInfo, Optional ByVal _LoadUserInformation As Boolean = True) As IUserData
|
||||||
Select Case u.Site
|
Select Case u.Site
|
||||||
Case Sites.Reddit : Return New Reddit.UserData(u, _LoadUserInformation)
|
Case Sites.Reddit
|
||||||
|
If u.IsChannel Then
|
||||||
|
Return New Reddit.Channel(u, _LoadUserInformation)
|
||||||
|
Else
|
||||||
|
Return New Reddit.UserData(u, _LoadUserInformation)
|
||||||
|
End If
|
||||||
Case Sites.Twitter : Return New Twitter.UserData(u, _LoadUserInformation)
|
Case Sites.Twitter : Return New Twitter.UserData(u, _LoadUserInformation)
|
||||||
Case Else : Throw New ArgumentOutOfRangeException("Site", $"Site [{u.Site}] information does not recognized by loader")
|
Case Else : Throw New ArgumentOutOfRangeException("Site", $"Site [{u.Site}] information does not recognized by loader")
|
||||||
End Select
|
End Select
|
||||||
@@ -560,7 +566,7 @@ BlockNullPicture:
|
|||||||
Try
|
Try
|
||||||
Dim URL$ = String.Empty
|
Dim URL$ = String.Empty
|
||||||
Select Case Site
|
Select Case Site
|
||||||
Case Sites.Reddit : URL = $"https://www.reddit.com/user/{Name}/"
|
Case Sites.Reddit : URL = $"https://www.reddit.com/{IIf(IsChannel, "r", "user")}/{Name}/"
|
||||||
Case Sites.Twitter : URL = $"https://twitter.com/{Name}"
|
Case Sites.Twitter : URL = $"https://twitter.com/{Name}"
|
||||||
Case Else : MsgBoxE($"Site [{Site}] opening does not implemented", MsgBoxStyle.Exclamation)
|
Case Else : MsgBoxE($"Site [{Site}] opening does not implemented", MsgBoxStyle.Exclamation)
|
||||||
End Select
|
End Select
|
||||||
@@ -640,7 +646,7 @@ BlockNullPicture:
|
|||||||
DownloadTopCount = Nothing
|
DownloadTopCount = Nothing
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub UpdateDataFiles()
|
Protected Sub UpdateDataFiles()
|
||||||
If Not User.File.IsEmptyString Then
|
If Not User.File.IsEmptyString Then
|
||||||
MyFileData = User.File
|
MyFileData = User.File
|
||||||
MyFileData.Name &= "_Data"
|
MyFileData.Name &= "_Data"
|
||||||
@@ -680,32 +686,38 @@ BlockNullPicture:
|
|||||||
#End Region
|
#End Region
|
||||||
#Region "Delete, Move, Merge"
|
#Region "Delete, Move, Merge"
|
||||||
Friend Overridable Function Delete() As Integer Implements IUserData.Delete
|
Friend Overridable Function Delete() As Integer Implements IUserData.Delete
|
||||||
|
Return DeleteF(Me)
|
||||||
|
End Function
|
||||||
|
Friend Function DeleteF(ByVal Instance As IUserData) As Integer
|
||||||
Dim f As SFile = SFile.GetPath(MyFile.CutPath.Path)
|
Dim f As SFile = SFile.GetPath(MyFile.CutPath.Path)
|
||||||
If f.Exists(SFO.Path, False) AndAlso f.Delete(SFO.Path, False, False) Then
|
If f.Exists(SFO.Path, False) AndAlso f.Delete(SFO.Path, False, False) Then
|
||||||
ImageHandler(Me, False)
|
ImageHandler(Me, False)
|
||||||
Settings.UsersList.Remove(User)
|
Settings.UsersList.Remove(User)
|
||||||
Settings.UpdateUsersList()
|
Settings.UpdateUsersList()
|
||||||
Settings.Users.Remove(Me)
|
Settings.Users.Remove(Instance)
|
||||||
Downloader.UserRemove(Me)
|
Downloader.UserRemove(Instance)
|
||||||
Dispose(True)
|
Dispose(True)
|
||||||
Return 1
|
Return 1
|
||||||
Else
|
Else
|
||||||
Return 0
|
Return 0
|
||||||
End If
|
End If
|
||||||
End Function
|
End Function
|
||||||
Friend Overridable Function MoveFiles(ByVal __CollectionName As String, ByVal _MergeData As Boolean) As Boolean Implements IUserData.MoveFiles
|
Friend Overridable Function MoveFiles(ByVal __CollectionName As String) As Boolean Implements IUserData.MoveFiles
|
||||||
|
Return MoveFilesF(Me, __CollectionName)
|
||||||
|
End Function
|
||||||
|
Friend Function MoveFilesF(ByRef Instance As IUserData, ByVal __CollectionName As String) As Boolean
|
||||||
Dim UserBefore As UserInfo = User
|
Dim UserBefore As UserInfo = User
|
||||||
Dim Removed As Boolean = True
|
Dim Removed As Boolean = True
|
||||||
Dim _TurnBack As Boolean = False
|
Dim _TurnBack As Boolean = False
|
||||||
Try
|
Try
|
||||||
Dim f As SFile
|
Dim f As SFile
|
||||||
If IncludedInCollection Then
|
If IncludedInCollection Then
|
||||||
Settings.Users.Add(Me)
|
Settings.Users.Add(Instance)
|
||||||
Removed = False
|
Removed = False
|
||||||
User.CollectionName = String.Empty
|
User.CollectionName = String.Empty
|
||||||
User.IncludedInCollection = False
|
User.IncludedInCollection = False
|
||||||
Else
|
Else
|
||||||
Settings.Users.Remove(Me)
|
Settings.Users.Remove(Instance)
|
||||||
Removed = True
|
Removed = True
|
||||||
User.CollectionName = __CollectionName
|
User.CollectionName = __CollectionName
|
||||||
User.IncludedInCollection = True
|
User.IncludedInCollection = True
|
||||||
@@ -720,7 +732,7 @@ BlockNullPicture:
|
|||||||
"Destination directory is not empty!"}, MsgBoxStyle.Exclamation,,, {"Delete", "Cancel"}) = 1 Then
|
"Destination directory is not empty!"}, MsgBoxStyle.Exclamation,,, {"Delete", "Cancel"}) = 1 Then
|
||||||
MsgBoxE("Operation canceled", MsgBoxStyle.Exclamation)
|
MsgBoxE("Operation canceled", MsgBoxStyle.Exclamation)
|
||||||
User = UserBefore
|
User = UserBefore
|
||||||
If Removed Then Settings.Users.Add(Me) Else Settings.Users.Remove(Me)
|
If Removed Then Settings.Users.Add(Instance) Else Settings.Users.Remove(Instance)
|
||||||
_TurnBack = False
|
_TurnBack = False
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
@@ -736,7 +748,7 @@ BlockNullPicture:
|
|||||||
ErrorsDescriber.Execute(EDP.LogMessageValue, ex, "Files moving error")
|
ErrorsDescriber.Execute(EDP.LogMessageValue, ex, "Files moving error")
|
||||||
User = UserBefore
|
User = UserBefore
|
||||||
If _TurnBack Then
|
If _TurnBack Then
|
||||||
If Removed Then Settings.Users.Add(Me) Else Settings.Users.Remove(Me)
|
If Removed Then Settings.Users.Add(Instance) Else Settings.Users.Remove(Instance)
|
||||||
End If
|
End If
|
||||||
Return False
|
Return False
|
||||||
End Try
|
End Try
|
||||||
@@ -783,6 +795,8 @@ BlockNullPicture:
|
|||||||
End If
|
End If
|
||||||
UpdateUserInformation()
|
UpdateUserInformation()
|
||||||
End If
|
End If
|
||||||
|
Catch ioex As InvalidOperationException When ioex.HelpLink = 1
|
||||||
|
MsgBoxE(ioex.Message, vbCritical)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
LogError(ex, "[UserDataBase.MergeData]")
|
LogError(ex, "[UserDataBase.MergeData]")
|
||||||
End Try
|
End Try
|
||||||
@@ -872,7 +886,11 @@ BlockNullPicture:
|
|||||||
Return OutValue
|
Return OutValue
|
||||||
End Function
|
End Function
|
||||||
Friend Overridable Function CompareTo(ByVal Obj As Object) As Integer Implements IComparable.CompareTo
|
Friend Overridable Function CompareTo(ByVal Obj As Object) As Integer Implements IComparable.CompareTo
|
||||||
|
If TypeOf Obj Is Reddit.Channel Then
|
||||||
|
Return CompareTo(DirectCast(DirectCast(Obj, Reddit.Channel).Instance, UserDataBase))
|
||||||
|
Else
|
||||||
Return CompareTo(DirectCast(Obj, UserDataBase))
|
Return CompareTo(DirectCast(Obj, UserDataBase))
|
||||||
|
End If
|
||||||
End Function
|
End Function
|
||||||
#End Region
|
#End Region
|
||||||
#Region "IEquatable Support"
|
#Region "IEquatable Support"
|
||||||
@@ -880,7 +898,11 @@ BlockNullPicture:
|
|||||||
Return Site = Other.Site And Name = Other.Name
|
Return Site = Other.Site And Name = Other.Name
|
||||||
End Function
|
End Function
|
||||||
Public Overrides Function Equals(ByVal Obj As Object) As Boolean
|
Public Overrides Function Equals(ByVal Obj As Object) As Boolean
|
||||||
|
If TypeOf Obj Is Reddit.Channel Then
|
||||||
|
Return Equals(DirectCast(DirectCast(Obj, Reddit.Channel).Instance, UserDataBase))
|
||||||
|
Else
|
||||||
Return Equals(DirectCast(Obj, UserDataBase))
|
Return Equals(DirectCast(Obj, UserDataBase))
|
||||||
|
End If
|
||||||
End Function
|
End Function
|
||||||
#End Region
|
#End Region
|
||||||
#Region "IDisposable Support"
|
#Region "IDisposable Support"
|
||||||
@@ -966,7 +988,7 @@ BlockNullPicture:
|
|||||||
''' 3 - Collection splitted
|
''' 3 - Collection splitted
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Function Delete() As Integer
|
Function Delete() As Integer
|
||||||
Function MoveFiles(ByVal CollectionName As String, ByVal MergeData As Boolean) As Boolean
|
Function MoveFiles(ByVal CollectionName As String) As Boolean
|
||||||
Sub OpenFolder()
|
Sub OpenFolder()
|
||||||
ReadOnly Property Self As IUserData
|
ReadOnly Property Self As IUserData
|
||||||
Property DownloadTopCount As Integer?
|
Property DownloadTopCount As Integer?
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
Imports PersonalUtilities.Forms.Toolbars
|
Imports PersonalUtilities.Forms.Toolbars
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
Imports SCrawler.API.Base
|
Imports SCrawler.API.Base
|
||||||
|
Imports System.Threading
|
||||||
Namespace API.Reddit
|
Namespace API.Reddit
|
||||||
Friend Class Channel : Implements ICollection(Of UserPost), IEquatable(Of Channel), IComparable(Of Channel),
|
Friend Class Channel : Implements ICollection(Of UserPost), IEquatable(Of Channel), IComparable(Of Channel),
|
||||||
IRangeSwitcherContainer(Of UserPost), ILoaderSaver, IMyEnumerator(Of UserPost), IChannelLimits, IDisposable
|
IRangeSwitcherContainer(Of UserPost), ILoaderSaver, IMyEnumerator(Of UserPost), IChannelLimits, IUserData, IDisposable
|
||||||
#Region "XML Nodes' Names"
|
#Region "XML Nodes' Names"
|
||||||
Private Const Name_Name As String = "Name"
|
Private Const Name_Name As String = "Name"
|
||||||
Private Const Name_ID As String = "ID"
|
Private Const Name_ID As String = "ID"
|
||||||
@@ -12,8 +13,237 @@ Namespace API.Reddit
|
|||||||
Private Const Name_PostsNode As String = "Posts"
|
Private Const Name_PostsNode As String = "Posts"
|
||||||
#End Region
|
#End Region
|
||||||
Friend Const DefaultDownloadLimitCount As Integer = 1000
|
Friend Const DefaultDownloadLimitCount As Integer = 1000
|
||||||
Friend Property Name As String = String.Empty
|
#Region "IUserData Support"
|
||||||
Friend Property ID As String = String.Empty
|
Private Event OnPictureUpdated(User As IUserData) Implements IUserData.OnPictureUpdated
|
||||||
|
Friend Property Instance As IUserData
|
||||||
|
Private Property IUserData_ParseUserMediaOnly As Boolean = False Implements IUserData.ParseUserMediaOnly
|
||||||
|
Private ReadOnly Property IUserData_IsCollection As Boolean Implements IUserData.IsCollection
|
||||||
|
Get
|
||||||
|
Return Instance.IsCollection
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_CollectionName As String Implements IUserData.CollectionName
|
||||||
|
Get
|
||||||
|
Return Instance.CollectionName
|
||||||
|
End Get
|
||||||
|
Set(ByVal NewName As String)
|
||||||
|
Instance.CollectionName = NewName
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_IncludedInCollection As Boolean Implements IUserData.IncludedInCollection
|
||||||
|
Get
|
||||||
|
Return Instance.IncludedInCollection
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_Labels As List(Of String) Implements IUserData.Labels
|
||||||
|
Get
|
||||||
|
Return Instance.Labels
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_IsChannel As Boolean = True Implements IUserData.IsChannel
|
||||||
|
Private Property IUserData_ReadyForDownload As Boolean Implements IUserData.ReadyForDownload
|
||||||
|
Get
|
||||||
|
Return Instance.ReadyForDownload
|
||||||
|
End Get
|
||||||
|
Set(ByVal IsReady As Boolean)
|
||||||
|
Instance.ReadyForDownload = IsReady
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_File As SFile Implements IUserData.File
|
||||||
|
Get
|
||||||
|
Return Instance.File
|
||||||
|
End Get
|
||||||
|
Set(ByVal NewFile As SFile)
|
||||||
|
Instance.File = NewFile
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_FileExists As Boolean Implements IUserData.FileExists
|
||||||
|
Get
|
||||||
|
Return Instance.FileExists
|
||||||
|
End Get
|
||||||
|
Set(ByVal IsExists As Boolean)
|
||||||
|
Instance.FileExists = IsExists
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_DownloadedPictures As Integer Implements IUserData.DownloadedPictures
|
||||||
|
Get
|
||||||
|
Return Instance.DownloadedPictures
|
||||||
|
End Get
|
||||||
|
Set(ByVal c As Integer)
|
||||||
|
Instance.DownloadedPictures = c
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_DownloadedVideos As Integer Implements IUserData.DownloadedVideos
|
||||||
|
Get
|
||||||
|
Return Instance.DownloadedVideos
|
||||||
|
End Get
|
||||||
|
Set(ByVal c As Integer)
|
||||||
|
Instance.DownloadedVideos = c
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_DownloadedTotal(Optional Total As Boolean = True) As Integer Implements IUserData.DownloadedTotal
|
||||||
|
Get
|
||||||
|
Return Instance.DownloadedTotal
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_DownloadedInformation As String Implements IUserData.DownloadedInformation
|
||||||
|
Get
|
||||||
|
Return Instance.DownloadedInformation
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_HasError As Boolean Implements IUserData.HasError
|
||||||
|
Get
|
||||||
|
Return Instance.HasError
|
||||||
|
End Get
|
||||||
|
Set(ByVal e As Boolean)
|
||||||
|
Instance.HasError = e
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_FitToAddParams As Boolean Implements IUserData.FitToAddParams
|
||||||
|
Get
|
||||||
|
Return Instance.FitToAddParams
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_LVIKey As String Implements IUserData.LVIKey
|
||||||
|
Get
|
||||||
|
Return Instance.LVIKey
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_LVIIndex As Integer Implements IUserData.LVIIndex
|
||||||
|
Get
|
||||||
|
Return Instance.LVIIndex
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_DownloadImages As Boolean Implements IUserData.DownloadImages
|
||||||
|
Get
|
||||||
|
Return Instance.DownloadImages
|
||||||
|
End Get
|
||||||
|
Set(ByVal d As Boolean)
|
||||||
|
Instance.DownloadImages = d
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_DownloadVideos As Boolean Implements IUserData.DownloadVideos
|
||||||
|
Get
|
||||||
|
Return Instance.DownloadVideos
|
||||||
|
End Get
|
||||||
|
Set(ByVal d As Boolean)
|
||||||
|
Instance.DownloadVideos = d
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private ReadOnly Property IUserData_Self As IUserData Implements IUserData.Self
|
||||||
|
Get
|
||||||
|
Return Instance
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_DownloadTopCount As Integer? Implements IUserData.DownloadTopCount
|
||||||
|
Get
|
||||||
|
Return Instance.DownloadTopCount
|
||||||
|
End Get
|
||||||
|
Set(ByVal c As Integer?)
|
||||||
|
Instance.DownloadTopCount = c
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Friend Property Site As Sites = Sites.Reddit Implements IContentProvider.Site
|
||||||
|
Private Property IUserData_FriendlyName As String Implements IContentProvider.FriendlyName
|
||||||
|
Get
|
||||||
|
Return Instance.FriendlyName
|
||||||
|
End Get
|
||||||
|
Set(ByVal NewName As String)
|
||||||
|
Instance.FriendlyName = NewName
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_Description As String Implements IContentProvider.Description
|
||||||
|
Get
|
||||||
|
Return Instance.Description
|
||||||
|
End Get
|
||||||
|
Set(ByVal d As String)
|
||||||
|
Instance.Description = d
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_Favorite As Boolean Implements IContentProvider.Favorite
|
||||||
|
Get
|
||||||
|
Return Instance.Favorite
|
||||||
|
End Get
|
||||||
|
Set(ByVal f As Boolean)
|
||||||
|
Instance.Favorite = f
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Property IUserData_Temporary As Boolean Implements IContentProvider.Temporary
|
||||||
|
Get
|
||||||
|
Return Instance.Temporary
|
||||||
|
End Get
|
||||||
|
Set(ByVal t As Boolean)
|
||||||
|
Instance.Temporary = t
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private Sub IUserData_SetPicture(ByVal f As SFile) Implements IUserData.SetPicture
|
||||||
|
Instance.SetPicture(f)
|
||||||
|
End Sub
|
||||||
|
Private Sub IUserData_LoadUserInformation() Implements IUserData.LoadUserInformation
|
||||||
|
Instance.LoadUserInformation()
|
||||||
|
End Sub
|
||||||
|
Private Sub IUserData_UpdateUserInformation() Implements IUserData.UpdateUserInformation
|
||||||
|
Instance.UpdateUserInformation()
|
||||||
|
End Sub
|
||||||
|
Private Sub IUserData_OpenFolder() Implements IUserData.OpenFolder
|
||||||
|
Instance.OpenFolder()
|
||||||
|
End Sub
|
||||||
|
Private Sub IUserData_OpenSite() Implements IContentProvider.OpenSite
|
||||||
|
Instance.OpenSite()
|
||||||
|
End Sub
|
||||||
|
Private Sub IUserData_DownloadData(ByVal Token As CancellationToken) Implements IContentProvider.DownloadData
|
||||||
|
DownloadData(Token, False, Nothing)
|
||||||
|
End Sub
|
||||||
|
Private Function IUserData_GetPicture() As Image Implements IUserData.GetPicture
|
||||||
|
Return Instance.GetPicture()
|
||||||
|
End Function
|
||||||
|
Private Function IUserData_GetLVI(ByVal Destination As ListView) As ListViewItem Implements IUserData.GetLVI
|
||||||
|
Return Instance.GetLVI(Destination)
|
||||||
|
End Function
|
||||||
|
Private Function IUserData_GetLVIGroup(ByVal Destination As ListView) As ListViewGroup Implements IUserData.GetLVIGroup
|
||||||
|
Return Instance.GetLVIGroup(Destination)
|
||||||
|
End Function
|
||||||
|
Private Function IUserData_Delete() As Integer Implements IUserData.Delete
|
||||||
|
Return DirectCast(Instance, UserDataBase).DeleteF(Me)
|
||||||
|
End Function
|
||||||
|
Private Function IUserData_MoveFiles(ByVal CollectionName As String) As Boolean Implements IUserData.MoveFiles
|
||||||
|
Return DirectCast(Instance, UserDataBase).MoveFilesF(Me, CollectionName)
|
||||||
|
End Function
|
||||||
|
#End Region
|
||||||
|
Private _Name As String = String.Empty
|
||||||
|
Friend Property Name As String Implements IUserData.Name
|
||||||
|
Get
|
||||||
|
If IsRegularChannel Then
|
||||||
|
Return Instance.Name
|
||||||
|
Else
|
||||||
|
Return _Name
|
||||||
|
End If
|
||||||
|
End Get
|
||||||
|
Set(ByVal NewName As String)
|
||||||
|
If IsRegularChannel Then
|
||||||
|
Instance.Name = NewName
|
||||||
|
Else
|
||||||
|
_Name = NewName
|
||||||
|
End If
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private _ID As String = String.Empty
|
||||||
|
Friend Property ID As String Implements IUserData.ID
|
||||||
|
Get
|
||||||
|
If IsRegularChannel Then
|
||||||
|
Return Instance.ID
|
||||||
|
Else
|
||||||
|
Return _ID
|
||||||
|
End If
|
||||||
|
End Get
|
||||||
|
Set(ByVal NewID As String)
|
||||||
|
If IsRegularChannel Then
|
||||||
|
Instance.ID = NewID
|
||||||
|
Else
|
||||||
|
_ID = NewID
|
||||||
|
End If
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
Friend ReadOnly Property CUser As UserInfo
|
Friend ReadOnly Property CUser As UserInfo
|
||||||
Get
|
Get
|
||||||
Return New UserInfo(Me)
|
Return New UserInfo(Me)
|
||||||
@@ -122,6 +352,7 @@ Namespace API.Reddit
|
|||||||
End Sub
|
End Sub
|
||||||
Friend Property AutoGetLimits As Boolean = True Implements IChannelLimits.AutoGetLimits
|
Friend Property AutoGetLimits As Boolean = True Implements IChannelLimits.AutoGetLimits
|
||||||
#End Region
|
#End Region
|
||||||
|
Friend ReadOnly IsRegularChannel As Boolean = False
|
||||||
Friend Sub New()
|
Friend Sub New()
|
||||||
Posts = New List(Of UserPost)
|
Posts = New List(Of UserPost)
|
||||||
PostsLatest = New List(Of UserPost)
|
PostsLatest = New List(Of UserPost)
|
||||||
@@ -131,9 +362,19 @@ Namespace API.Reddit
|
|||||||
Me.New
|
Me.New
|
||||||
LoadData(f, False)
|
LoadData(f, False)
|
||||||
End Sub
|
End Sub
|
||||||
|
Friend Sub New(ByVal u As UserInfo, Optional ByVal _LoadUserInformation As Boolean = True)
|
||||||
|
Me.New
|
||||||
|
Instance = New UserData(u, _LoadUserInformation) With {.SaveToCache = False, .SkipExistsUsers = False, .ChannelInfo = Me}
|
||||||
|
AutoGetLimits = True
|
||||||
|
DirectCast(Instance, UserData).SetLimit(Me)
|
||||||
|
IsRegularChannel = True
|
||||||
|
End Sub
|
||||||
Public Shared Widening Operator CType(ByVal f As SFile) As Channel
|
Public Shared Widening Operator CType(ByVal f As SFile) As Channel
|
||||||
Return New Channel(f)
|
Return New Channel(f)
|
||||||
End Operator
|
End Operator
|
||||||
|
Public Shared Widening Operator CType(ByVal c As Channel) As UserDataBase
|
||||||
|
Return DirectCast(c.Instance, UserDataBase)
|
||||||
|
End Operator
|
||||||
Public Overrides Function ToString() As String
|
Public Overrides Function ToString() As String
|
||||||
If Not Name.IsEmptyString Then
|
If Not Name.IsEmptyString Then
|
||||||
Return Name
|
Return Name
|
||||||
@@ -144,10 +385,13 @@ Namespace API.Reddit
|
|||||||
Friend Sub Delete()
|
Friend Sub Delete()
|
||||||
If File.Exists Then File.Delete()
|
If File.Exists Then File.Delete()
|
||||||
End Sub
|
End Sub
|
||||||
Friend Sub DownloadData(ByVal Token As Threading.CancellationToken, Optional ByVal SkipExists As Boolean = True,
|
Friend Sub DownloadData(ByVal Token As CancellationToken, Optional ByVal SkipExists As Boolean = True,
|
||||||
Optional ByVal p As MyProgress = Nothing)
|
Optional ByVal p As MyProgress = Nothing)
|
||||||
Try
|
Try
|
||||||
_Downloading = True
|
_Downloading = True
|
||||||
|
If Not Instance Is Nothing Then
|
||||||
|
Instance.DownloadData(Token)
|
||||||
|
Else
|
||||||
Using d As New UserData(CUser, False, False) With {
|
Using d As New UserData(CUser, False, False) With {
|
||||||
.Progress = p,
|
.Progress = p,
|
||||||
.SaveToCache = True,
|
.SaveToCache = True,
|
||||||
@@ -159,8 +403,8 @@ Namespace API.Reddit
|
|||||||
Posts.ListAddList(d.GetNewChannelPosts(), LAP.NotContainsOnly)
|
Posts.ListAddList(d.GetNewChannelPosts(), LAP.NotContainsOnly)
|
||||||
Posts.Sort()
|
Posts.Sort()
|
||||||
LatestParsedDate = If(Posts.FirstOrDefault(Function(pp) pp.Date.HasValue).Date, LatestParsedDate)
|
LatestParsedDate = If(Posts.FirstOrDefault(Function(pp) pp.Date.HasValue).Date, LatestParsedDate)
|
||||||
Token.ThrowIfCancellationRequested()
|
|
||||||
End Using
|
End Using
|
||||||
|
End If
|
||||||
Catch oex As OperationCanceledException When Token.IsCancellationRequested
|
Catch oex As OperationCanceledException When Token.IsCancellationRequested
|
||||||
Finally
|
Finally
|
||||||
_Downloading = False
|
_Downloading = False
|
||||||
@@ -201,26 +445,50 @@ Namespace API.Reddit
|
|||||||
Friend Overloads Function Equals(ByVal Other As Channel) As Boolean Implements IEquatable(Of Channel).Equals
|
Friend Overloads Function Equals(ByVal Other As Channel) As Boolean Implements IEquatable(Of Channel).Equals
|
||||||
Return ID = Other.ID
|
Return ID = Other.ID
|
||||||
End Function
|
End Function
|
||||||
Public Overloads Overrides Function Equals(ByVal Obj As Object) As Boolean
|
Private Overloads Function Equals(ByVal Other As UserDataBase) As Boolean Implements IEquatable(Of UserDataBase).Equals
|
||||||
If Not Obj Is Nothing Then
|
If Not Instance Is Nothing Then
|
||||||
If TypeOf Obj Is String Then
|
Return Instance.Equals(Other)
|
||||||
Return ID = CStr(Obj)
|
|
||||||
Else
|
|
||||||
Return Equals(DirectCast(Obj, Channel))
|
|
||||||
End If
|
|
||||||
Else
|
Else
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
End Function
|
End Function
|
||||||
|
Public Overloads Overrides Function Equals(ByVal Obj As Object) As Boolean
|
||||||
|
If Not Obj Is Nothing Then
|
||||||
|
If TypeOf Obj Is String Then
|
||||||
|
Return ID = CStr(Obj)
|
||||||
|
ElseIf TypeOf Obj Is Channel Then
|
||||||
|
Return Equals(DirectCast(Obj, Channel))
|
||||||
|
ElseIf TypeOf Obj Is UserDataBase Then
|
||||||
|
Return Equals(DirectCast(Obj, UserDataBase))
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Function
|
||||||
#End Region
|
#End Region
|
||||||
#Region "IComparable Support"
|
#Region "IComparable Support"
|
||||||
Friend Function CompareTo(ByVal Other As Channel) As Integer Implements IComparable(Of Channel).CompareTo
|
Friend Overloads Function CompareTo(ByVal Other As Channel) As Integer Implements IComparable(Of Channel).CompareTo
|
||||||
If Not Name.IsEmptyString And Not Other.Name.IsEmptyString Then
|
If Not Name.IsEmptyString And Not Other.Name.IsEmptyString Then
|
||||||
Return Name.CompareTo(Other.Name)
|
Return Name.CompareTo(Other.Name)
|
||||||
Else
|
Else
|
||||||
Return ID.CompareTo(Other.ID)
|
Return ID.CompareTo(Other.ID)
|
||||||
End If
|
End If
|
||||||
End Function
|
End Function
|
||||||
|
Private Overloads Function CompareTo(ByVal Other As UserDataBase) As Integer Implements IComparable(Of UserDataBase).CompareTo
|
||||||
|
If Not Instance Is Nothing Then
|
||||||
|
Return Instance.CompareTo(Other)
|
||||||
|
Else
|
||||||
|
Return 0
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
Private Overloads Function CompareTo(ByVal Obj As Object) As Integer Implements IComparable.CompareTo
|
||||||
|
If TypeOf Obj Is Channel Then
|
||||||
|
Return CompareTo(DirectCast(Obj, Channel))
|
||||||
|
ElseIf TypeOf Obj Is UserDataBase And Not Instance Is Nothing Then
|
||||||
|
Return Instance.CompareTo(Obj)
|
||||||
|
Else
|
||||||
|
Return 0
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
#End Region
|
#End Region
|
||||||
#Region "ILoaderSaver Support"
|
#Region "ILoaderSaver Support"
|
||||||
Friend Overloads Function LoadData(Optional ByVal f As SFile = Nothing, Optional ByVal e As ErrorsDescriber = Nothing) As Boolean Implements ILoaderSaver.Load
|
Friend Overloads Function LoadData(Optional ByVal f As SFile = Nothing, Optional ByVal e As ErrorsDescriber = Nothing) As Boolean Implements ILoaderSaver.Load
|
||||||
@@ -280,12 +548,18 @@ Namespace API.Reddit
|
|||||||
#End Region
|
#End Region
|
||||||
#Region "IDisposable Support"
|
#Region "IDisposable Support"
|
||||||
Private disposedValue As Boolean = False
|
Private disposedValue As Boolean = False
|
||||||
|
Friend ReadOnly Property Disposed As Boolean Implements IUserData.Disposed
|
||||||
|
Get
|
||||||
|
Return disposedValue
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean)
|
Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean)
|
||||||
If Not disposedValue Then
|
If Not disposedValue Then
|
||||||
If disposing Then
|
If disposing Then
|
||||||
Posts.Clear()
|
Posts.Clear()
|
||||||
PostsLatest.Clear()
|
PostsLatest.Clear()
|
||||||
Range.Dispose()
|
Range.Dispose()
|
||||||
|
If Not Instance Is Nothing Then Instance.Dispose()
|
||||||
If CachePath.Exists(SFO.Path, False) Then CachePath.Delete(SFO.Path, False, False, EDP.SendInLog)
|
If CachePath.Exists(SFO.Path, False) Then CachePath.Delete(SFO.Path, False, False, EDP.SendInLog)
|
||||||
End If
|
End If
|
||||||
disposedValue = True
|
disposedValue = True
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ Namespace API.Reddit
|
|||||||
#End Region
|
#End Region
|
||||||
#Region "Download Overrides"
|
#Region "Download Overrides"
|
||||||
Friend Overrides Sub DownloadData(ByVal Token As CancellationToken)
|
Friend Overrides Sub DownloadData(ByVal Token As CancellationToken)
|
||||||
If IsChannel Then
|
If IsChannel AndAlso Not ChannelInfo.IsRegularChannel Then
|
||||||
ChannelPostsNames.ListAddList(ChannelInfo.PostsAll.Select(Function(p) p.ID), LNC)
|
ChannelPostsNames.ListAddList(ChannelInfo.PostsAll.Select(Function(p) p.ID), LNC)
|
||||||
If SkipExistsUsers Then _ExistsUsersNames.ListAddList(Settings.UsersList.Select(Function(p) p.Name), LNC)
|
If SkipExistsUsers Then _ExistsUsersNames.ListAddList(Settings.UsersList.Select(Function(p) p.Name), LNC)
|
||||||
DownloadDataF(Token)
|
DownloadDataF(Token)
|
||||||
@@ -80,7 +80,18 @@ Namespace API.Reddit
|
|||||||
Protected Overrides Sub DownloadDataF(ByVal Token As CancellationToken)
|
Protected Overrides Sub DownloadDataF(ByVal Token As CancellationToken)
|
||||||
_TotalPostsDownloaded = 0
|
_TotalPostsDownloaded = 0
|
||||||
If IsChannel Then
|
If IsChannel Then
|
||||||
|
If ChannelInfo.IsRegularChannel Then
|
||||||
|
ChannelPostsNames.ListAddList(_TempPostsList, LNC)
|
||||||
|
If ChannelPostsNames.Count > 0 Then
|
||||||
|
DownloadLimitCount = Nothing
|
||||||
|
With _ContentList.Where(Function(c) c.Post.Date.HasValue)
|
||||||
|
If .Count > 0 Then DownloadLimitDate = .Max(Function(p) p.Post.Date.Value).AddMinutes(-10)
|
||||||
|
End With
|
||||||
|
End If
|
||||||
|
If DownloadTopCount.HasValue Then DownloadLimitCount = DownloadTopCount
|
||||||
|
End If
|
||||||
DownloadDataChannel(String.Empty, Token)
|
DownloadDataChannel(String.Empty, Token)
|
||||||
|
If ChannelInfo.IsRegularChannel Then _TempPostsList.ListAddList(_TempMediaList.Select(Function(m) m.Post.ID), LNC)
|
||||||
Else
|
Else
|
||||||
DownloadDataUser(String.Empty, Token)
|
DownloadDataUser(String.Empty, Token)
|
||||||
End If
|
End If
|
||||||
@@ -131,7 +142,7 @@ Namespace API.Reddit
|
|||||||
s = nn.ItemF({"source", "url"})
|
s = nn.ItemF({"source", "url"})
|
||||||
If s.XmlIfNothingValue("/").Contains("redgifs.com") Then
|
If s.XmlIfNothingValue("/").Contains("redgifs.com") Then
|
||||||
_TempMediaList.ListAddValue(MediaFromData(UTypes.VideoPre, s.Value, PostID, PostDate,, IsChannel), LNC)
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.VideoPre, s.Value, PostID, PostDate,, IsChannel), LNC)
|
||||||
Else
|
ElseIf Not CreateImgurMedia(s.XmlIfNothingValue, PostID, PostDate,, IsChannel) Then
|
||||||
s = nn.ItemF({"media"}).XmlIfNothing
|
s = nn.ItemF({"media"}).XmlIfNothing
|
||||||
__ItemType = s("type").XmlIfNothingValue
|
__ItemType = s("type").XmlIfNothingValue
|
||||||
Select Case __ItemType
|
Select Case __ItemType
|
||||||
@@ -241,6 +252,8 @@ Namespace API.Reddit
|
|||||||
_TempMediaList.ListAddValue(MediaFromData(UTypes.VideoPre, tmpUrl, PostID, PostDate, _UserID, IsChannel), LNC)
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.VideoPre, tmpUrl, PostID, PostDate, _UserID, IsChannel), LNC)
|
||||||
_TotalPostsDownloaded += 1
|
_TotalPostsDownloaded += 1
|
||||||
End If
|
End If
|
||||||
|
ElseIf CreateImgurMedia(tmpUrl, PostID, PostDate, _UserID, IsChannel) Then
|
||||||
|
_TotalPostsDownloaded += 1
|
||||||
ElseIf s.Item("media_metadata").XmlIfNothing.Count > 0 Then
|
ElseIf s.Item("media_metadata").XmlIfNothing.Count > 0 Then
|
||||||
DownloadGallery(s, PostID, PostDate, _UserID, SaveToCache)
|
DownloadGallery(s, PostID, PostDate, _UserID, SaveToCache)
|
||||||
_TotalPostsDownloaded += 1
|
_TotalPostsDownloaded += 1
|
||||||
@@ -268,6 +281,43 @@ Namespace API.Reddit
|
|||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
#Region "Download Base Functions"
|
#Region "Download Base Functions"
|
||||||
|
Private Function ImgurPicture(ByVal Source As EContainer, ByVal Value As String) As String
|
||||||
|
Try
|
||||||
|
Dim e As EContainer = Source({"source", "url"}).XmlIfNothing
|
||||||
|
If Not e.IsEmptyString AndAlso e.Value.ToLower.Contains("imgur") Then
|
||||||
|
Return e.Value
|
||||||
|
Else
|
||||||
|
Return Value
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
LogError(ex, "[ImgurPicture]")
|
||||||
|
Return Value
|
||||||
|
End Try
|
||||||
|
End Function
|
||||||
|
Private Function CreateImgurMedia(ByVal _URL As String, ByVal PostID As String, ByVal PostDate As String,
|
||||||
|
Optional ByVal _UserID As String = "", Optional ByVal IsChannel As Boolean = False) As Boolean
|
||||||
|
If Not _URL.IsEmptyString AndAlso _URL.Contains("imgur") Then
|
||||||
|
If _URL.StringContains({".jpg", ".png", ".jpeg"}) Then
|
||||||
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.Picture, _URL, PostID, PostDate, _UserID, IsChannel), LNC)
|
||||||
|
ElseIf _URL.Contains(".gifv") Then
|
||||||
|
If SaveToCache Then
|
||||||
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.Picture, _URL.Replace(".gifv", ".gif"),
|
||||||
|
PostID, PostDate, _UserID, IsChannel), LNC)
|
||||||
|
Else
|
||||||
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.Video, _URL.Replace(".gifv", ".mp4"),
|
||||||
|
PostID, PostDate, _UserID, IsChannel), LNC)
|
||||||
|
End If
|
||||||
|
ElseIf _URL.Contains(".gif") Then
|
||||||
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.GIF, _URL, PostID, PostDate, _UserID, IsChannel), LNC)
|
||||||
|
Else
|
||||||
|
If Not TryFile(_URL) Then _URL &= ".jpg"
|
||||||
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.Picture, _URL, PostID, PostDate, _UserID, IsChannel), LNC)
|
||||||
|
End If
|
||||||
|
Return True
|
||||||
|
Else
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
Private Function DownloadGallery(ByVal w As EContainer, ByVal PostID As String, ByVal PostDate As String,
|
Private Function DownloadGallery(ByVal w As EContainer, ByVal PostID As String, ByVal PostDate As String,
|
||||||
Optional ByVal _UserID As String = Nothing, Optional ByVal FirstOnly As Boolean = False) As Boolean
|
Optional ByVal _UserID As String = Nothing, Optional ByVal FirstOnly As Boolean = False) As Boolean
|
||||||
Try
|
Try
|
||||||
@@ -349,7 +399,7 @@ Namespace API.Reddit
|
|||||||
End Function
|
End Function
|
||||||
Private Function TryFile(ByVal URL As String) As Boolean
|
Private Function TryFile(ByVal URL As String) As Boolean
|
||||||
Try
|
Try
|
||||||
If Not URL.IsEmptyString AndAlso URL.Contains(".jpg") Then
|
If Not URL.IsEmptyString AndAlso URL.StringContains({".jpg", ".png", ".jpeg"}) Then
|
||||||
Dim f As SFile = CStr(RegexReplace(URL, FilesPattern))
|
Dim f As SFile = CStr(RegexReplace(URL, FilesPattern))
|
||||||
Return Not f.IsEmptyString And Not f.File.IsEmptyString
|
Return Not f.IsEmptyString And Not f.File.IsEmptyString
|
||||||
End If
|
End If
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ Namespace API
|
|||||||
Friend Overrides Property DataMerging As Boolean
|
Friend Overrides Property DataMerging As Boolean
|
||||||
Get
|
Get
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
Return DirectCast(Collections(0), UserDataBase).DataMerging
|
Return DirectCast(Collections(0).Self, UserDataBase).DataMerging
|
||||||
Else
|
Else
|
||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
@@ -142,6 +142,14 @@ Namespace API
|
|||||||
UpdateUserInformation()
|
UpdateUserInformation()
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
Friend Overrides Property ReadyForDownload As Boolean
|
||||||
|
Get
|
||||||
|
Return Count > 0 AndAlso Collections(0).ReadyForDownload
|
||||||
|
End Get
|
||||||
|
Set(ByVal IsReady As Boolean)
|
||||||
|
If Count > 0 Then Collections.ForEach(Sub(c) c.ReadyForDownload = IsReady)
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
Friend Overrides ReadOnly Property Labels As List(Of String)
|
Friend Overrides ReadOnly Property Labels As List(Of String)
|
||||||
Get
|
Get
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
@@ -153,15 +161,15 @@ Namespace API
|
|||||||
End Property
|
End Property
|
||||||
Friend Overrides Function GetUserInformation() As String
|
Friend Overrides Function GetUserInformation() As String
|
||||||
Dim OutStr$ = String.Empty
|
Dim OutStr$ = String.Empty
|
||||||
If Count > 0 Then Collections.ForEach(Sub(c) OutStr.StringAppendLine(DirectCast(c, UserDataBase).GetUserInformation(), $"{vbCrLf}{vbCrLf}"))
|
If Count > 0 Then Collections.ForEach(Sub(c) OutStr.StringAppendLine(DirectCast(c.Self, UserDataBase).GetUserInformation(), $"{vbCrLf}{vbCrLf}"))
|
||||||
Return OutStr
|
Return OutStr
|
||||||
End Function
|
End Function
|
||||||
Friend Overrides Property LastUpdated As Date?
|
Friend Overrides Property LastUpdated As Date?
|
||||||
Get
|
Get
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
With If((From c In Collections
|
With If((From c In Collections
|
||||||
Where DirectCast(c, UserDataBase).LastUpdated.HasValue
|
Where DirectCast(c.Self, UserDataBase).LastUpdated.HasValue
|
||||||
Select DirectCast(c, UserDataBase).LastUpdated.Value).ToList, New List(Of Date))
|
Select DirectCast(c.Self, UserDataBase).LastUpdated.Value).ToList, New List(Of Date))
|
||||||
If .Count > 0 Then Return .Max
|
If .Count > 0 Then Return .Max
|
||||||
End With
|
End With
|
||||||
End If
|
End If
|
||||||
@@ -179,7 +187,7 @@ Namespace API
|
|||||||
Friend ReadOnly Property ContextDown As ToolStripMenuItem()
|
Friend ReadOnly Property ContextDown As ToolStripMenuItem()
|
||||||
Get
|
Get
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
Return Collections.Select(Function(c) DirectCast(c, UserDataBase).BTT_CONTEXT_DOWN).ToArray
|
Return Collections.Select(Function(c) DirectCast(c.Self, UserDataBase).BTT_CONTEXT_DOWN).ToArray
|
||||||
Else
|
Else
|
||||||
Return New ToolStripMenuItem() {}
|
Return New ToolStripMenuItem() {}
|
||||||
End If
|
End If
|
||||||
@@ -188,7 +196,7 @@ Namespace API
|
|||||||
Friend ReadOnly Property ContextEdit As ToolStripMenuItem()
|
Friend ReadOnly Property ContextEdit As ToolStripMenuItem()
|
||||||
Get
|
Get
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
Return Collections.Select(Function(c) DirectCast(c, UserDataBase).BTT_CONTEXT_EDIT).ToArray
|
Return Collections.Select(Function(c) DirectCast(c.Self, UserDataBase).BTT_CONTEXT_EDIT).ToArray
|
||||||
Else
|
Else
|
||||||
Return New ToolStripMenuItem() {}
|
Return New ToolStripMenuItem() {}
|
||||||
End If
|
End If
|
||||||
@@ -197,7 +205,7 @@ Namespace API
|
|||||||
Friend ReadOnly Property ContextDelete As ToolStripMenuItem()
|
Friend ReadOnly Property ContextDelete As ToolStripMenuItem()
|
||||||
Get
|
Get
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
Return Collections.Select(Function(c) DirectCast(c, UserDataBase).BTT_CONTEXT_DELETE).ToArray
|
Return Collections.Select(Function(c) DirectCast(c.Self, UserDataBase).BTT_CONTEXT_DELETE).ToArray
|
||||||
Else
|
Else
|
||||||
Return New ToolStripMenuItem() {}
|
Return New ToolStripMenuItem() {}
|
||||||
End If
|
End If
|
||||||
@@ -206,7 +214,7 @@ Namespace API
|
|||||||
Friend ReadOnly Property ContextPath As ToolStripMenuItem()
|
Friend ReadOnly Property ContextPath As ToolStripMenuItem()
|
||||||
Get
|
Get
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
Return Collections.Select(Function(c) DirectCast(c, UserDataBase).BTT_CONTEXT_OPEN_PATH).ToArray
|
Return Collections.Select(Function(c) DirectCast(c.Self, UserDataBase).BTT_CONTEXT_OPEN_PATH).ToArray
|
||||||
Else
|
Else
|
||||||
Return New ToolStripMenuItem() {}
|
Return New ToolStripMenuItem() {}
|
||||||
End If
|
End If
|
||||||
@@ -215,7 +223,7 @@ Namespace API
|
|||||||
Friend ReadOnly Property ContextSite As ToolStripMenuItem()
|
Friend ReadOnly Property ContextSite As ToolStripMenuItem()
|
||||||
Get
|
Get
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
Return Collections.Select(Function(c) DirectCast(c, UserDataBase).BTT_CONTEXT_OPEN_SITE).ToArray
|
Return Collections.Select(Function(c) DirectCast(c.Self, UserDataBase).BTT_CONTEXT_OPEN_SITE).ToArray
|
||||||
Else
|
Else
|
||||||
Return New ToolStripMenuItem() {}
|
Return New ToolStripMenuItem() {}
|
||||||
End If
|
End If
|
||||||
@@ -239,7 +247,7 @@ Namespace API
|
|||||||
If Count > 0 Then Collections.ForEach(Sub(c) c.UpdateUserInformation())
|
If Count > 0 Then Collections.ForEach(Sub(c) c.UpdateUserInformation())
|
||||||
End Sub
|
End Sub
|
||||||
Friend Overrides Sub LoadContentInformation()
|
Friend Overrides Sub LoadContentInformation()
|
||||||
If Count > 0 Then Collections.ForEach(Sub(c) DirectCast(c, UserDataBase).LoadContentInformation())
|
If Count > 0 Then Collections.ForEach(Sub(c) DirectCast(c.Self, UserDataBase).LoadContentInformation())
|
||||||
End Sub
|
End Sub
|
||||||
Friend Overrides Property DownloadTopCount As Integer?
|
Friend Overrides Property DownloadTopCount As Integer?
|
||||||
Get
|
Get
|
||||||
@@ -288,8 +296,8 @@ Namespace API
|
|||||||
''' <exception cref="InvalidOperationException"></exception>
|
''' <exception cref="InvalidOperationException"></exception>
|
||||||
Friend Overloads Sub Add(ByVal _Item As IUserData) Implements ICollection(Of IUserData).Add
|
Friend Overloads Sub Add(ByVal _Item As IUserData) Implements ICollection(Of IUserData).Add
|
||||||
With _Item
|
With _Item
|
||||||
Dim m As Boolean = DataMerging
|
If .MoveFiles(CollectionName) Then
|
||||||
If .MoveFiles(CollectionName, m) Then
|
If DataMerging Then DirectCast(.Self, UserDataBase).MergeData()
|
||||||
Collections.Add(_Item)
|
Collections.Add(_Item)
|
||||||
With Collections.Last
|
With Collections.Last
|
||||||
If Collections.Count - 1 > 0 Then
|
If Collections.Count - 1 > 0 Then
|
||||||
@@ -298,7 +306,7 @@ Namespace API
|
|||||||
.UpdateUserInformation()
|
.UpdateUserInformation()
|
||||||
End If
|
End If
|
||||||
ImageHandler(_Item, False)
|
ImageHandler(_Item, False)
|
||||||
AddHandler .OnPictureUpdated, AddressOf User_OnPictureUpdated
|
AddHandler .Self.OnPictureUpdated, AddressOf User_OnPictureUpdated
|
||||||
DirectCast(.Self, UserDataBase).CreateButtons(Count - 1)
|
DirectCast(.Self, UserDataBase).CreateButtons(Count - 1)
|
||||||
End With
|
End With
|
||||||
Else
|
Else
|
||||||
@@ -313,7 +321,7 @@ Namespace API
|
|||||||
Case Sites.Twitter : Collections.Add(New Twitter.UserData(u, _LoadData))
|
Case Sites.Twitter : Collections.Add(New Twitter.UserData(u, _LoadData))
|
||||||
Case Else : Exit Sub
|
Case Else : Exit Sub
|
||||||
End Select
|
End Select
|
||||||
With DirectCast(Collections(Count - 1), UserDataBase)
|
With DirectCast(Collections.Last.Self, UserDataBase)
|
||||||
.CreateButtons(Count - 1)
|
.CreateButtons(Count - 1)
|
||||||
AddHandler .BTT_CONTEXT_DELETE.Click, AddressOf BTT_CONTEXT_DELETE_Click
|
AddHandler .BTT_CONTEXT_DELETE.Click, AddressOf BTT_CONTEXT_DELETE_Click
|
||||||
End With
|
End With
|
||||||
@@ -324,7 +332,7 @@ Namespace API
|
|||||||
For i% = 0 To _Items.Count - 1 : Add(_Items(i)) : Next
|
For i% = 0 To _Items.Count - 1 : Add(_Items(i)) : Next
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
Friend Overrides Function MoveFiles(ByVal __CollectionName As String, ByVal _MergeData As Boolean) As Boolean
|
Friend Overrides Function MoveFiles(ByVal __CollectionName As String) As Boolean
|
||||||
Throw New NotImplementedException("Files moving does not available if collection context")
|
Throw New NotImplementedException("Files moving does not available if collection context")
|
||||||
End Function
|
End Function
|
||||||
Friend Overloads Sub MergeData(ByVal Merging As Boolean)
|
Friend Overloads Sub MergeData(ByVal Merging As Boolean)
|
||||||
@@ -334,7 +342,7 @@ Namespace API
|
|||||||
MsgBoxE($"Collection [{CollectionName}] data already merged")
|
MsgBoxE($"Collection [{CollectionName}] data already merged")
|
||||||
Else
|
Else
|
||||||
If Collections.Count > 1 Then
|
If Collections.Count > 1 Then
|
||||||
Collections.ForEach(Sub(c) DirectCast(c, UserDataBase).MergeData())
|
Collections.ForEach(Sub(c) DirectCast(c.Self, UserDataBase).MergeData())
|
||||||
MsgBoxE($"Collection [{CollectionName}] data merged")
|
MsgBoxE($"Collection [{CollectionName}] data merged")
|
||||||
Else
|
Else
|
||||||
MsgBoxE($"Collection [{CollectionName}] contains only one user profile" & vbCr &
|
MsgBoxE($"Collection [{CollectionName}] contains only one user profile" & vbCr &
|
||||||
@@ -367,21 +375,24 @@ Namespace API
|
|||||||
"Operation canceled", MsgBoxStyle.Critical)
|
"Operation canceled", MsgBoxStyle.Critical)
|
||||||
Return False
|
Return False
|
||||||
Else
|
Else
|
||||||
DirectCast(_Item, UserDataBase).MoveFiles(String.Empty, False)
|
DirectCast(_Item.Self, UserDataBase).MoveFiles(String.Empty)
|
||||||
ImageHandler(_Item)
|
ImageHandler(_Item)
|
||||||
Return Collections.Remove(_Item)
|
Return Collections.Remove(_Item)
|
||||||
End If
|
End If
|
||||||
End Function
|
End Function
|
||||||
Friend Overrides Function Delete() As Integer
|
Friend Overrides Function Delete() As Integer
|
||||||
If Count > 0 Then
|
If Count > 0 Then
|
||||||
|
Dim f As SFile
|
||||||
If MsgBoxE({$"Collection may contain data{vbCr}Do you really want to delete collection and all of it files?", "Collection deleting"},
|
If MsgBoxE({$"Collection may contain data{vbCr}Do you really want to delete collection and all of it files?", "Collection deleting"},
|
||||||
MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||||||
|
f = Collections(0).File.CutPath(2).PathWithSeparator
|
||||||
Settings.Users.Remove(Me)
|
Settings.Users.Remove(Me)
|
||||||
Collections.ForEach(Sub(c) c.Delete())
|
Collections.ForEach(Sub(c) c.Delete())
|
||||||
Downloader.UserRemove(Me)
|
Downloader.UserRemove(Me)
|
||||||
ImageHandler(Me, False)
|
ImageHandler(Me, False)
|
||||||
Collections.ListClearDispose
|
Collections.ListClearDispose
|
||||||
Dispose(False)
|
Dispose(False)
|
||||||
|
If f.Exists(SFO.Path, False) Then f.Delete(SFO.Path, True, False, EDP.SendInLog)
|
||||||
Return 2
|
Return 2
|
||||||
Else
|
Else
|
||||||
If DataMerging Then
|
If DataMerging Then
|
||||||
@@ -390,10 +401,10 @@ Namespace API
|
|||||||
End If
|
End If
|
||||||
If MsgBoxE({$"Do you want to delete collection only?{vbCr}Users will not be deleted", "Collection deleting"},
|
If MsgBoxE({$"Do you want to delete collection only?{vbCr}Users will not be deleted", "Collection deleting"},
|
||||||
MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||||||
Dim f As SFile = Collections(0).File.CutPath(2)
|
f = Collections(0).File.CutPath(2)
|
||||||
Settings.Users.Remove(Me)
|
Settings.Users.Remove(Me)
|
||||||
Collections.ForEach(Sub(c)
|
Collections.ForEach(Sub(c)
|
||||||
c.MoveFiles(String.Empty, False)
|
c.MoveFiles(String.Empty)
|
||||||
ImageHandler(c)
|
ImageHandler(c)
|
||||||
End Sub)
|
End Sub)
|
||||||
Collections.Clear()
|
Collections.Clear()
|
||||||
|
|||||||
@@ -54,8 +54,8 @@ Friend Class DownloadedInfoForm
|
|||||||
End Sub
|
End Sub
|
||||||
Private Class UsersDateOrder : Implements IComparer(Of IUserData)
|
Private Class UsersDateOrder : Implements IComparer(Of IUserData)
|
||||||
Friend Function Compare(ByVal x As IUserData, ByVal y As IUserData) As Integer Implements IComparer(Of IUserData).Compare
|
Friend Function Compare(ByVal x As IUserData, ByVal y As IUserData) As Integer Implements IComparer(Of IUserData).Compare
|
||||||
Dim xv& = If(DirectCast(x, UserDataBase).LastUpdated.HasValue, DirectCast(x, UserDataBase).LastUpdated.Value.Ticks, 0)
|
Dim xv& = If(DirectCast(x.Self, UserDataBase).LastUpdated.HasValue, DirectCast(x.Self, UserDataBase).LastUpdated.Value.Ticks, 0)
|
||||||
Dim yv& = If(DirectCast(y, UserDataBase).LastUpdated.HasValue, DirectCast(y, UserDataBase).LastUpdated.Value.Ticks, 0)
|
Dim yv& = If(DirectCast(y.Self, UserDataBase).LastUpdated.HasValue, DirectCast(y.Self, UserDataBase).LastUpdated.Value.Ticks, 0)
|
||||||
Return xv.CompareTo(yv) * -1
|
Return xv.CompareTo(yv) * -1
|
||||||
End Function
|
End Function
|
||||||
End Class
|
End Class
|
||||||
@@ -114,7 +114,7 @@ Friend Class DownloadedInfoForm
|
|||||||
Private Sub LIST_DOWN_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles LIST_DOWN.MouseDoubleClick
|
Private Sub LIST_DOWN_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles LIST_DOWN.MouseDoubleClick
|
||||||
Try
|
Try
|
||||||
If _LatestSelected >= 0 AndAlso _LatestSelected <= _TempUsersList.Count - 1 AndAlso
|
If _LatestSelected >= 0 AndAlso _LatestSelected <= _TempUsersList.Count - 1 AndAlso
|
||||||
Not DirectCast(_TempUsersList(_LatestSelected), UserDataBase).Disposed Then _TempUsersList(_LatestSelected).OpenFolder()
|
Not DirectCast(_TempUsersList(_LatestSelected).Self, UserDataBase).Disposed Then _TempUsersList(_LatestSelected).OpenFolder()
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
72
SCrawler/Editors/UserCreatorForm.Designer.vb
generated
72
SCrawler/Editors/UserCreatorForm.Designer.vb
generated
@@ -28,6 +28,7 @@
|
|||||||
Me.TXT_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
Me.TXT_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
Me.OPT_REDDIT = New System.Windows.Forms.RadioButton()
|
Me.OPT_REDDIT = New System.Windows.Forms.RadioButton()
|
||||||
Me.OPT_TWITTER = New System.Windows.Forms.RadioButton()
|
Me.OPT_TWITTER = New System.Windows.Forms.RadioButton()
|
||||||
|
Me.CH_IS_CHANNEL = New System.Windows.Forms.CheckBox()
|
||||||
Me.CH_TEMP = New System.Windows.Forms.CheckBox()
|
Me.CH_TEMP = New System.Windows.Forms.CheckBox()
|
||||||
Me.CH_FAV = New System.Windows.Forms.CheckBox()
|
Me.CH_FAV = New System.Windows.Forms.CheckBox()
|
||||||
Me.CH_PARSE_USER_MEDIA = New System.Windows.Forms.CheckBox()
|
Me.CH_PARSE_USER_MEDIA = New System.Windows.Forms.CheckBox()
|
||||||
@@ -88,7 +89,7 @@
|
|||||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66542!))
|
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66542!))
|
||||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!))
|
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667!))
|
||||||
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 150.0!))
|
TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 150.0!))
|
||||||
TP_MAIN.Size = New System.Drawing.Size(454, 378)
|
TP_MAIN.Size = New System.Drawing.Size(454, 403)
|
||||||
TP_MAIN.TabIndex = 0
|
TP_MAIN.TabIndex = 0
|
||||||
'
|
'
|
||||||
'TXT_USER
|
'TXT_USER
|
||||||
@@ -105,19 +106,20 @@
|
|||||||
'TP_SITE
|
'TP_SITE
|
||||||
'
|
'
|
||||||
TP_SITE.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single]
|
TP_SITE.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single]
|
||||||
TP_SITE.ColumnCount = 2
|
TP_SITE.ColumnCount = 3
|
||||||
TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!))
|
||||||
TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!))
|
||||||
|
TP_SITE.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333!))
|
||||||
TP_SITE.Controls.Add(Me.OPT_REDDIT, 0, 0)
|
TP_SITE.Controls.Add(Me.OPT_REDDIT, 0, 0)
|
||||||
TP_SITE.Controls.Add(Me.OPT_TWITTER, 1, 0)
|
TP_SITE.Controls.Add(Me.OPT_TWITTER, 2, 0)
|
||||||
|
TP_SITE.Controls.Add(Me.CH_IS_CHANNEL, 1, 0)
|
||||||
TP_SITE.Dock = System.Windows.Forms.DockStyle.Fill
|
TP_SITE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
TP_SITE.Location = New System.Drawing.Point(1, 59)
|
TP_SITE.Location = New System.Drawing.Point(1, 59)
|
||||||
TP_SITE.Margin = New System.Windows.Forms.Padding(0)
|
TP_SITE.Margin = New System.Windows.Forms.Padding(0)
|
||||||
TP_SITE.Name = "TP_SITE"
|
TP_SITE.Name = "TP_SITE"
|
||||||
TP_SITE.RowCount = 1
|
TP_SITE.RowCount = 1
|
||||||
TP_SITE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
TP_SITE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
TP_SITE.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!))
|
TP_SITE.Size = New System.Drawing.Size(452, 31)
|
||||||
TP_SITE.Size = New System.Drawing.Size(452, 27)
|
|
||||||
TP_SITE.TabIndex = 2
|
TP_SITE.TabIndex = 2
|
||||||
'
|
'
|
||||||
'OPT_REDDIT
|
'OPT_REDDIT
|
||||||
@@ -126,7 +128,7 @@
|
|||||||
Me.OPT_REDDIT.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.OPT_REDDIT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.OPT_REDDIT.Location = New System.Drawing.Point(4, 4)
|
Me.OPT_REDDIT.Location = New System.Drawing.Point(4, 4)
|
||||||
Me.OPT_REDDIT.Name = "OPT_REDDIT"
|
Me.OPT_REDDIT.Name = "OPT_REDDIT"
|
||||||
Me.OPT_REDDIT.Size = New System.Drawing.Size(218, 19)
|
Me.OPT_REDDIT.Size = New System.Drawing.Size(143, 23)
|
||||||
Me.OPT_REDDIT.TabIndex = 0
|
Me.OPT_REDDIT.TabIndex = 0
|
||||||
Me.OPT_REDDIT.TabStop = True
|
Me.OPT_REDDIT.TabStop = True
|
||||||
Me.OPT_REDDIT.Text = "Reddit"
|
Me.OPT_REDDIT.Text = "Reddit"
|
||||||
@@ -136,14 +138,25 @@
|
|||||||
'
|
'
|
||||||
Me.OPT_TWITTER.AutoSize = True
|
Me.OPT_TWITTER.AutoSize = True
|
||||||
Me.OPT_TWITTER.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.OPT_TWITTER.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.OPT_TWITTER.Location = New System.Drawing.Point(229, 4)
|
Me.OPT_TWITTER.Location = New System.Drawing.Point(304, 4)
|
||||||
Me.OPT_TWITTER.Name = "OPT_TWITTER"
|
Me.OPT_TWITTER.Name = "OPT_TWITTER"
|
||||||
Me.OPT_TWITTER.Size = New System.Drawing.Size(219, 19)
|
Me.OPT_TWITTER.Size = New System.Drawing.Size(144, 23)
|
||||||
Me.OPT_TWITTER.TabIndex = 1
|
Me.OPT_TWITTER.TabIndex = 1
|
||||||
Me.OPT_TWITTER.TabStop = True
|
Me.OPT_TWITTER.TabStop = True
|
||||||
Me.OPT_TWITTER.Text = "Twitter"
|
Me.OPT_TWITTER.Text = "Twitter"
|
||||||
Me.OPT_TWITTER.UseVisualStyleBackColor = True
|
Me.OPT_TWITTER.UseVisualStyleBackColor = True
|
||||||
'
|
'
|
||||||
|
'CH_IS_CHANNEL
|
||||||
|
'
|
||||||
|
Me.CH_IS_CHANNEL.AutoSize = True
|
||||||
|
Me.CH_IS_CHANNEL.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
|
Me.CH_IS_CHANNEL.Location = New System.Drawing.Point(154, 4)
|
||||||
|
Me.CH_IS_CHANNEL.Name = "CH_IS_CHANNEL"
|
||||||
|
Me.CH_IS_CHANNEL.Size = New System.Drawing.Size(143, 23)
|
||||||
|
Me.CH_IS_CHANNEL.TabIndex = 2
|
||||||
|
Me.CH_IS_CHANNEL.Text = "Channel"
|
||||||
|
Me.CH_IS_CHANNEL.UseVisualStyleBackColor = True
|
||||||
|
'
|
||||||
'TP_PARAMS
|
'TP_PARAMS
|
||||||
'
|
'
|
||||||
TP_PARAMS.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single]
|
TP_PARAMS.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single]
|
||||||
@@ -153,13 +166,13 @@
|
|||||||
TP_PARAMS.Controls.Add(Me.CH_TEMP, 0, 0)
|
TP_PARAMS.Controls.Add(Me.CH_TEMP, 0, 0)
|
||||||
TP_PARAMS.Controls.Add(Me.CH_FAV, 1, 0)
|
TP_PARAMS.Controls.Add(Me.CH_FAV, 1, 0)
|
||||||
TP_PARAMS.Dock = System.Windows.Forms.DockStyle.Fill
|
TP_PARAMS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
TP_PARAMS.Location = New System.Drawing.Point(1, 87)
|
TP_PARAMS.Location = New System.Drawing.Point(1, 91)
|
||||||
TP_PARAMS.Margin = New System.Windows.Forms.Padding(0)
|
TP_PARAMS.Margin = New System.Windows.Forms.Padding(0)
|
||||||
TP_PARAMS.Name = "TP_PARAMS"
|
TP_PARAMS.Name = "TP_PARAMS"
|
||||||
TP_PARAMS.RowCount = 1
|
TP_PARAMS.RowCount = 1
|
||||||
TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!))
|
TP_PARAMS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!))
|
||||||
TP_PARAMS.Size = New System.Drawing.Size(452, 27)
|
TP_PARAMS.Size = New System.Drawing.Size(452, 31)
|
||||||
TP_PARAMS.TabIndex = 3
|
TP_PARAMS.TabIndex = 3
|
||||||
'
|
'
|
||||||
'CH_TEMP
|
'CH_TEMP
|
||||||
@@ -168,7 +181,7 @@
|
|||||||
Me.CH_TEMP.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CH_TEMP.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CH_TEMP.Location = New System.Drawing.Point(4, 4)
|
Me.CH_TEMP.Location = New System.Drawing.Point(4, 4)
|
||||||
Me.CH_TEMP.Name = "CH_TEMP"
|
Me.CH_TEMP.Name = "CH_TEMP"
|
||||||
Me.CH_TEMP.Size = New System.Drawing.Size(218, 19)
|
Me.CH_TEMP.Size = New System.Drawing.Size(218, 23)
|
||||||
Me.CH_TEMP.TabIndex = 0
|
Me.CH_TEMP.TabIndex = 0
|
||||||
Me.CH_TEMP.Text = "Temporary"
|
Me.CH_TEMP.Text = "Temporary"
|
||||||
Me.CH_TEMP.UseVisualStyleBackColor = True
|
Me.CH_TEMP.UseVisualStyleBackColor = True
|
||||||
@@ -179,7 +192,7 @@
|
|||||||
Me.CH_FAV.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CH_FAV.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CH_FAV.Location = New System.Drawing.Point(229, 4)
|
Me.CH_FAV.Location = New System.Drawing.Point(229, 4)
|
||||||
Me.CH_FAV.Name = "CH_FAV"
|
Me.CH_FAV.Name = "CH_FAV"
|
||||||
Me.CH_FAV.Size = New System.Drawing.Size(219, 19)
|
Me.CH_FAV.Size = New System.Drawing.Size(219, 23)
|
||||||
Me.CH_FAV.TabIndex = 1
|
Me.CH_FAV.TabIndex = 1
|
||||||
Me.CH_FAV.Text = "Favorite"
|
Me.CH_FAV.Text = "Favorite"
|
||||||
Me.CH_FAV.UseVisualStyleBackColor = True
|
Me.CH_FAV.UseVisualStyleBackColor = True
|
||||||
@@ -193,13 +206,13 @@
|
|||||||
TP_OTHER.Controls.Add(Me.CH_PARSE_USER_MEDIA, 1, 0)
|
TP_OTHER.Controls.Add(Me.CH_PARSE_USER_MEDIA, 1, 0)
|
||||||
TP_OTHER.Controls.Add(Me.CH_READY_FOR_DOWN, 0, 0)
|
TP_OTHER.Controls.Add(Me.CH_READY_FOR_DOWN, 0, 0)
|
||||||
TP_OTHER.Dock = System.Windows.Forms.DockStyle.Fill
|
TP_OTHER.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
TP_OTHER.Location = New System.Drawing.Point(1, 143)
|
TP_OTHER.Location = New System.Drawing.Point(1, 155)
|
||||||
TP_OTHER.Margin = New System.Windows.Forms.Padding(0)
|
TP_OTHER.Margin = New System.Windows.Forms.Padding(0)
|
||||||
TP_OTHER.Name = "TP_OTHER"
|
TP_OTHER.Name = "TP_OTHER"
|
||||||
TP_OTHER.RowCount = 1
|
TP_OTHER.RowCount = 1
|
||||||
TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!))
|
TP_OTHER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!))
|
||||||
TP_OTHER.Size = New System.Drawing.Size(452, 27)
|
TP_OTHER.Size = New System.Drawing.Size(452, 31)
|
||||||
TP_OTHER.TabIndex = 5
|
TP_OTHER.TabIndex = 5
|
||||||
'
|
'
|
||||||
'CH_PARSE_USER_MEDIA
|
'CH_PARSE_USER_MEDIA
|
||||||
@@ -208,7 +221,7 @@
|
|||||||
Me.CH_PARSE_USER_MEDIA.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CH_PARSE_USER_MEDIA.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CH_PARSE_USER_MEDIA.Location = New System.Drawing.Point(229, 4)
|
Me.CH_PARSE_USER_MEDIA.Location = New System.Drawing.Point(229, 4)
|
||||||
Me.CH_PARSE_USER_MEDIA.Name = "CH_PARSE_USER_MEDIA"
|
Me.CH_PARSE_USER_MEDIA.Name = "CH_PARSE_USER_MEDIA"
|
||||||
Me.CH_PARSE_USER_MEDIA.Size = New System.Drawing.Size(219, 19)
|
Me.CH_PARSE_USER_MEDIA.Size = New System.Drawing.Size(219, 23)
|
||||||
Me.CH_PARSE_USER_MEDIA.TabIndex = 0
|
Me.CH_PARSE_USER_MEDIA.TabIndex = 0
|
||||||
Me.CH_PARSE_USER_MEDIA.Text = "Get user media only"
|
Me.CH_PARSE_USER_MEDIA.Text = "Get user media only"
|
||||||
TT_MAIN.SetToolTip(Me.CH_PARSE_USER_MEDIA, "For twitter only!" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "If checked then user media only will be downloaded." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Otherwise" &
|
TT_MAIN.SetToolTip(Me.CH_PARSE_USER_MEDIA, "For twitter only!" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "If checked then user media only will be downloaded." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Otherwise" &
|
||||||
@@ -221,7 +234,7 @@
|
|||||||
Me.CH_READY_FOR_DOWN.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CH_READY_FOR_DOWN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CH_READY_FOR_DOWN.Location = New System.Drawing.Point(4, 4)
|
Me.CH_READY_FOR_DOWN.Location = New System.Drawing.Point(4, 4)
|
||||||
Me.CH_READY_FOR_DOWN.Name = "CH_READY_FOR_DOWN"
|
Me.CH_READY_FOR_DOWN.Name = "CH_READY_FOR_DOWN"
|
||||||
Me.CH_READY_FOR_DOWN.Size = New System.Drawing.Size(218, 19)
|
Me.CH_READY_FOR_DOWN.Size = New System.Drawing.Size(218, 23)
|
||||||
Me.CH_READY_FOR_DOWN.TabIndex = 1
|
Me.CH_READY_FOR_DOWN.TabIndex = 1
|
||||||
Me.CH_READY_FOR_DOWN.Text = "Ready for download"
|
Me.CH_READY_FOR_DOWN.Text = "Ready for download"
|
||||||
TT_MAIN.SetToolTip(Me.CH_READY_FOR_DOWN, "Can be downloaded by [Download All]")
|
TT_MAIN.SetToolTip(Me.CH_READY_FOR_DOWN, "Can be downloaded by [Download All]")
|
||||||
@@ -240,7 +253,7 @@
|
|||||||
Me.TXT_DESCR.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.TXT_DESCR.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.TXT_DESCR.GroupBoxed = True
|
Me.TXT_DESCR.GroupBoxed = True
|
||||||
Me.TXT_DESCR.GroupBoxText = "Description"
|
Me.TXT_DESCR.GroupBoxText = "Description"
|
||||||
Me.TXT_DESCR.Location = New System.Drawing.Point(4, 229)
|
Me.TXT_DESCR.Location = New System.Drawing.Point(4, 254)
|
||||||
Me.TXT_DESCR.Multiline = True
|
Me.TXT_DESCR.Multiline = True
|
||||||
Me.TXT_DESCR.Name = "TXT_DESCR"
|
Me.TXT_DESCR.Name = "TXT_DESCR"
|
||||||
Me.TXT_DESCR.Size = New System.Drawing.Size(446, 145)
|
Me.TXT_DESCR.Size = New System.Drawing.Size(446, 145)
|
||||||
@@ -265,12 +278,12 @@
|
|||||||
Me.TP_ADD_BY_LIST.Controls.Add(Me.CH_ADD_BY_LIST, 0, 0)
|
Me.TP_ADD_BY_LIST.Controls.Add(Me.CH_ADD_BY_LIST, 0, 0)
|
||||||
Me.TP_ADD_BY_LIST.Controls.Add(Me.CH_AUTO_DETECT_SITE, 1, 0)
|
Me.TP_ADD_BY_LIST.Controls.Add(Me.CH_AUTO_DETECT_SITE, 1, 0)
|
||||||
Me.TP_ADD_BY_LIST.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.TP_ADD_BY_LIST.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.TP_ADD_BY_LIST.Location = New System.Drawing.Point(1, 171)
|
Me.TP_ADD_BY_LIST.Location = New System.Drawing.Point(1, 187)
|
||||||
Me.TP_ADD_BY_LIST.Margin = New System.Windows.Forms.Padding(0)
|
Me.TP_ADD_BY_LIST.Margin = New System.Windows.Forms.Padding(0)
|
||||||
Me.TP_ADD_BY_LIST.Name = "TP_ADD_BY_LIST"
|
Me.TP_ADD_BY_LIST.Name = "TP_ADD_BY_LIST"
|
||||||
Me.TP_ADD_BY_LIST.RowCount = 1
|
Me.TP_ADD_BY_LIST.RowCount = 1
|
||||||
Me.TP_ADD_BY_LIST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
Me.TP_ADD_BY_LIST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
Me.TP_ADD_BY_LIST.Size = New System.Drawing.Size(452, 26)
|
Me.TP_ADD_BY_LIST.Size = New System.Drawing.Size(452, 31)
|
||||||
Me.TP_ADD_BY_LIST.TabIndex = 6
|
Me.TP_ADD_BY_LIST.TabIndex = 6
|
||||||
'
|
'
|
||||||
'CH_ADD_BY_LIST
|
'CH_ADD_BY_LIST
|
||||||
@@ -279,7 +292,7 @@
|
|||||||
Me.CH_ADD_BY_LIST.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CH_ADD_BY_LIST.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CH_ADD_BY_LIST.Location = New System.Drawing.Point(4, 4)
|
Me.CH_ADD_BY_LIST.Location = New System.Drawing.Point(4, 4)
|
||||||
Me.CH_ADD_BY_LIST.Name = "CH_ADD_BY_LIST"
|
Me.CH_ADD_BY_LIST.Name = "CH_ADD_BY_LIST"
|
||||||
Me.CH_ADD_BY_LIST.Size = New System.Drawing.Size(218, 18)
|
Me.CH_ADD_BY_LIST.Size = New System.Drawing.Size(218, 23)
|
||||||
Me.CH_ADD_BY_LIST.TabIndex = 0
|
Me.CH_ADD_BY_LIST.TabIndex = 0
|
||||||
Me.CH_ADD_BY_LIST.Text = "Add by list"
|
Me.CH_ADD_BY_LIST.Text = "Add by list"
|
||||||
Me.CH_ADD_BY_LIST.UseVisualStyleBackColor = True
|
Me.CH_ADD_BY_LIST.UseVisualStyleBackColor = True
|
||||||
@@ -290,7 +303,7 @@
|
|||||||
Me.CH_AUTO_DETECT_SITE.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CH_AUTO_DETECT_SITE.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CH_AUTO_DETECT_SITE.Location = New System.Drawing.Point(229, 4)
|
Me.CH_AUTO_DETECT_SITE.Location = New System.Drawing.Point(229, 4)
|
||||||
Me.CH_AUTO_DETECT_SITE.Name = "CH_AUTO_DETECT_SITE"
|
Me.CH_AUTO_DETECT_SITE.Name = "CH_AUTO_DETECT_SITE"
|
||||||
Me.CH_AUTO_DETECT_SITE.Size = New System.Drawing.Size(219, 18)
|
Me.CH_AUTO_DETECT_SITE.Size = New System.Drawing.Size(219, 23)
|
||||||
Me.CH_AUTO_DETECT_SITE.TabIndex = 1
|
Me.CH_AUTO_DETECT_SITE.TabIndex = 1
|
||||||
Me.CH_AUTO_DETECT_SITE.Text = "Auto detect site"
|
Me.CH_AUTO_DETECT_SITE.Text = "Auto detect site"
|
||||||
Me.CH_AUTO_DETECT_SITE.UseVisualStyleBackColor = True
|
Me.CH_AUTO_DETECT_SITE.UseVisualStyleBackColor = True
|
||||||
@@ -308,7 +321,7 @@
|
|||||||
Me.TXT_LABELS.CaptionText = "Labels"
|
Me.TXT_LABELS.CaptionText = "Labels"
|
||||||
Me.TXT_LABELS.CaptionWidth = 50.0R
|
Me.TXT_LABELS.CaptionWidth = 50.0R
|
||||||
Me.TXT_LABELS.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.TXT_LABELS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.TXT_LABELS.Location = New System.Drawing.Point(4, 201)
|
Me.TXT_LABELS.Location = New System.Drawing.Point(4, 222)
|
||||||
Me.TXT_LABELS.Name = "TXT_LABELS"
|
Me.TXT_LABELS.Name = "TXT_LABELS"
|
||||||
Me.TXT_LABELS.Size = New System.Drawing.Size(446, 22)
|
Me.TXT_LABELS.Size = New System.Drawing.Size(446, 22)
|
||||||
Me.TXT_LABELS.TabIndex = 7
|
Me.TXT_LABELS.TabIndex = 7
|
||||||
@@ -323,13 +336,13 @@
|
|||||||
TP_DOWN_OPTIONS.Controls.Add(Me.CH_DOWN_IMAGES, 0, 0)
|
TP_DOWN_OPTIONS.Controls.Add(Me.CH_DOWN_IMAGES, 0, 0)
|
||||||
TP_DOWN_OPTIONS.Controls.Add(Me.CH_DOWN_VIDEOS, 1, 0)
|
TP_DOWN_OPTIONS.Controls.Add(Me.CH_DOWN_VIDEOS, 1, 0)
|
||||||
TP_DOWN_OPTIONS.Dock = System.Windows.Forms.DockStyle.Fill
|
TP_DOWN_OPTIONS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
TP_DOWN_OPTIONS.Location = New System.Drawing.Point(1, 115)
|
TP_DOWN_OPTIONS.Location = New System.Drawing.Point(1, 123)
|
||||||
TP_DOWN_OPTIONS.Margin = New System.Windows.Forms.Padding(0)
|
TP_DOWN_OPTIONS.Margin = New System.Windows.Forms.Padding(0)
|
||||||
TP_DOWN_OPTIONS.Name = "TP_DOWN_OPTIONS"
|
TP_DOWN_OPTIONS.Name = "TP_DOWN_OPTIONS"
|
||||||
TP_DOWN_OPTIONS.RowCount = 1
|
TP_DOWN_OPTIONS.RowCount = 1
|
||||||
TP_DOWN_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
TP_DOWN_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
TP_DOWN_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!))
|
TP_DOWN_OPTIONS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30.0!))
|
||||||
TP_DOWN_OPTIONS.Size = New System.Drawing.Size(452, 27)
|
TP_DOWN_OPTIONS.Size = New System.Drawing.Size(452, 31)
|
||||||
TP_DOWN_OPTIONS.TabIndex = 4
|
TP_DOWN_OPTIONS.TabIndex = 4
|
||||||
'
|
'
|
||||||
'CH_DOWN_IMAGES
|
'CH_DOWN_IMAGES
|
||||||
@@ -338,7 +351,7 @@
|
|||||||
Me.CH_DOWN_IMAGES.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CH_DOWN_IMAGES.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CH_DOWN_IMAGES.Location = New System.Drawing.Point(4, 4)
|
Me.CH_DOWN_IMAGES.Location = New System.Drawing.Point(4, 4)
|
||||||
Me.CH_DOWN_IMAGES.Name = "CH_DOWN_IMAGES"
|
Me.CH_DOWN_IMAGES.Name = "CH_DOWN_IMAGES"
|
||||||
Me.CH_DOWN_IMAGES.Size = New System.Drawing.Size(218, 19)
|
Me.CH_DOWN_IMAGES.Size = New System.Drawing.Size(218, 23)
|
||||||
Me.CH_DOWN_IMAGES.TabIndex = 0
|
Me.CH_DOWN_IMAGES.TabIndex = 0
|
||||||
Me.CH_DOWN_IMAGES.Text = "Download Images"
|
Me.CH_DOWN_IMAGES.Text = "Download Images"
|
||||||
Me.CH_DOWN_IMAGES.UseVisualStyleBackColor = True
|
Me.CH_DOWN_IMAGES.UseVisualStyleBackColor = True
|
||||||
@@ -349,7 +362,7 @@
|
|||||||
Me.CH_DOWN_VIDEOS.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CH_DOWN_VIDEOS.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CH_DOWN_VIDEOS.Location = New System.Drawing.Point(229, 4)
|
Me.CH_DOWN_VIDEOS.Location = New System.Drawing.Point(229, 4)
|
||||||
Me.CH_DOWN_VIDEOS.Name = "CH_DOWN_VIDEOS"
|
Me.CH_DOWN_VIDEOS.Name = "CH_DOWN_VIDEOS"
|
||||||
Me.CH_DOWN_VIDEOS.Size = New System.Drawing.Size(219, 19)
|
Me.CH_DOWN_VIDEOS.Size = New System.Drawing.Size(219, 23)
|
||||||
Me.CH_DOWN_VIDEOS.TabIndex = 1
|
Me.CH_DOWN_VIDEOS.TabIndex = 1
|
||||||
Me.CH_DOWN_VIDEOS.Text = "Download videos"
|
Me.CH_DOWN_VIDEOS.Text = "Download videos"
|
||||||
Me.CH_DOWN_VIDEOS.UseVisualStyleBackColor = True
|
Me.CH_DOWN_VIDEOS.UseVisualStyleBackColor = True
|
||||||
@@ -360,7 +373,7 @@
|
|||||||
'CONTAINER_MAIN.ContentPanel
|
'CONTAINER_MAIN.ContentPanel
|
||||||
'
|
'
|
||||||
Me.CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN)
|
Me.CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN)
|
||||||
Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(454, 378)
|
Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(454, 403)
|
||||||
Me.CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.CONTAINER_MAIN.LeftToolStripPanelVisible = False
|
Me.CONTAINER_MAIN.LeftToolStripPanelVisible = False
|
||||||
Me.CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0)
|
Me.CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||||
@@ -425,5 +438,6 @@
|
|||||||
Private WithEvents TXT_LABELS As PersonalUtilities.Forms.Controls.TextBoxExtended
|
Private WithEvents TXT_LABELS As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||||
Private WithEvents CH_DOWN_IMAGES As CheckBox
|
Private WithEvents CH_DOWN_IMAGES As CheckBox
|
||||||
Private WithEvents CH_DOWN_VIDEOS As CheckBox
|
Private WithEvents CH_DOWN_VIDEOS As CheckBox
|
||||||
|
Private WithEvents CH_IS_CHANNEL As CheckBox
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
@@ -72,7 +72,7 @@ Namespace Editors
|
|||||||
Me.New
|
Me.New
|
||||||
If Not _Instance Is Nothing Then
|
If Not _Instance Is Nothing Then
|
||||||
UserInstance = _Instance
|
UserInstance = _Instance
|
||||||
User = DirectCast(UserInstance, UserDataBase).User
|
User = DirectCast(UserInstance.Self, UserDataBase).User
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub UserCreatorForm_Load(sender As Object, e As EventArgs) Handles Me.Load
|
Private Sub UserCreatorForm_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||||
@@ -80,6 +80,7 @@ Namespace Editors
|
|||||||
With MyDef
|
With MyDef
|
||||||
.MyViewInitialize(Me, Settings.Design, True)
|
.MyViewInitialize(Me, Settings.Design, True)
|
||||||
.AddOkCancelToolbar()
|
.AddOkCancelToolbar()
|
||||||
|
CH_AUTO_DETECT_SITE.Enabled = False
|
||||||
If User.Name.IsEmptyString Then
|
If User.Name.IsEmptyString Then
|
||||||
OPT_REDDIT.Checked = False
|
OPT_REDDIT.Checked = False
|
||||||
OPT_TWITTER.Checked = False
|
OPT_TWITTER.Checked = False
|
||||||
@@ -97,6 +98,8 @@ Namespace Editors
|
|||||||
End Select
|
End Select
|
||||||
OPT_REDDIT.Enabled = False
|
OPT_REDDIT.Enabled = False
|
||||||
OPT_TWITTER.Enabled = False
|
OPT_TWITTER.Enabled = False
|
||||||
|
CH_IS_CHANNEL.Checked = User.IsChannel
|
||||||
|
CH_IS_CHANNEL.Enabled = False
|
||||||
If Not UserInstance Is Nothing Then
|
If Not UserInstance Is Nothing Then
|
||||||
TXT_USER.Enabled = False
|
TXT_USER.Enabled = False
|
||||||
With UserInstance
|
With UserInstance
|
||||||
@@ -149,11 +152,12 @@ Namespace Editors
|
|||||||
With tmpUser
|
With tmpUser
|
||||||
.Name = TXT_USER.Text
|
.Name = TXT_USER.Text
|
||||||
.Site = IIf(OPT_REDDIT.Checked, Sites.Reddit, Sites.Twitter)
|
.Site = IIf(OPT_REDDIT.Checked, Sites.Reddit, Sites.Twitter)
|
||||||
|
.IsChannel = CH_IS_CHANNEL.Checked
|
||||||
.UpdateUserFile()
|
.UpdateUserFile()
|
||||||
End With
|
End With
|
||||||
User = tmpUser
|
User = tmpUser
|
||||||
If Not UserInstance Is Nothing Then
|
If Not UserInstance Is Nothing Then
|
||||||
With DirectCast(UserInstance, UserDataBase)
|
With DirectCast(UserInstance.Self, UserDataBase)
|
||||||
.User = User
|
.User = User
|
||||||
.FriendlyName = TXT_USER_FRIENDLY.Text
|
.FriendlyName = TXT_USER_FRIENDLY.Text
|
||||||
.Favorite = CH_FAV.Checked
|
.Favorite = CH_FAV.Checked
|
||||||
@@ -192,72 +196,64 @@ CloseForm:
|
|||||||
Private ReadOnly TwitterRegEx As New RegexStructure("[htps:/]{7,8}.*?twitter.com/([^/]+)", 1)
|
Private ReadOnly TwitterRegEx As New RegexStructure("[htps:/]{7,8}.*?twitter.com/([^/]+)", 1)
|
||||||
Private ReadOnly RedditRegEx1 As New RegexStructure("[htps:/]{7,8}.*?reddit.com/user/([^/]+)", 1)
|
Private ReadOnly RedditRegEx1 As New RegexStructure("[htps:/]{7,8}.*?reddit.com/user/([^/]+)", 1)
|
||||||
Private ReadOnly RedditRegEx2 As New RegexStructure(".?u/([^/]+)", 1)
|
Private ReadOnly RedditRegEx2 As New RegexStructure(".?u/([^/]+)", 1)
|
||||||
|
Private ReadOnly RedditChannelRegEx1 As New RegexStructure("[htps:/]{7,8}.*?reddit.com/r/([^/]+)", 1)
|
||||||
|
Private ReadOnly RedditChannelRegEx2 As New RegexStructure(".?r/([^/]+)", 1)
|
||||||
Private _TextChangeInvoked As Boolean = False
|
Private _TextChangeInvoked As Boolean = False
|
||||||
Private Sub TXT_USER_ActionOnTextChange() Handles TXT_USER.ActionOnTextChange
|
Private Sub TXT_USER_ActionOnTextChange() Handles TXT_USER.ActionOnTextChange
|
||||||
Try
|
Try
|
||||||
If Not _TextChangeInvoked Then
|
If Not _TextChangeInvoked Then
|
||||||
_TextChangeInvoked = True
|
_TextChangeInvoked = True
|
||||||
If Not CH_ADD_BY_LIST.Checked Then
|
If Not CH_ADD_BY_LIST.Checked Then
|
||||||
Select Case GetSiteByText(TXT_USER.Text)
|
Dim s() As Object = GetSiteByText(TXT_USER.Text)
|
||||||
|
Select Case s(0)
|
||||||
Case Sites.Twitter : OPT_TWITTER.Checked = True
|
Case Sites.Twitter : OPT_TWITTER.Checked = True
|
||||||
Case Sites.Reddit : OPT_REDDIT.Checked = True
|
Case Sites.Reddit : OPT_REDDIT.Checked = True
|
||||||
Case Else : OPT_TWITTER.Checked = False : OPT_REDDIT.Checked = False
|
Case Else : OPT_TWITTER.Checked = False : OPT_REDDIT.Checked = False
|
||||||
End Select
|
End Select
|
||||||
|
CH_IS_CHANNEL.Checked = CBool(s(1))
|
||||||
End If
|
End If
|
||||||
MyDef.Detector()
|
|
||||||
_TextChangeInvoked = False
|
_TextChangeInvoked = False
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
Private Function GetSiteByText(ByRef TXT As String) As Sites
|
Private Function GetSiteByText(ByRef TXT As String) As Object()
|
||||||
If Not TXT.IsEmptyString AndAlso TXT.Length > 8 Then
|
If Not TXT.IsEmptyString AndAlso TXT.Length > 8 Then
|
||||||
Dim s$ = RegexReplace(TXT, TwitterRegEx)
|
If CheckRegex(TXT, TwitterRegEx) Then
|
||||||
If Not s.IsEmptyString Then
|
Return {Sites.Twitter, False}
|
||||||
TXT = s
|
ElseIf CheckRegex(TXT, RedditRegEx1) OrElse CheckRegex(TXT, RedditRegEx2) Then
|
||||||
Return Sites.Twitter
|
Return {Sites.Reddit, False}
|
||||||
Else
|
ElseIf CheckRegex(TXT, RedditChannelRegEx1) OrElse CheckRegex(TXT, RedditChannelRegEx2) Then
|
||||||
s = RegexReplace(TXT, RedditRegEx1)
|
Return {Sites.Reddit, True}
|
||||||
If Not s.IsEmptyString Then
|
|
||||||
TXT = s
|
|
||||||
Return Sites.Reddit
|
|
||||||
Else
|
|
||||||
s = RegexReplace(TXT, RedditRegEx2)
|
|
||||||
If Not s.IsEmptyString Then
|
|
||||||
TXT = s
|
|
||||||
Return Sites.Reddit
|
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
Return {Sites.Undefined, False}
|
||||||
End If
|
End Function
|
||||||
Return Sites.Undefined
|
Private Function CheckRegex(ByRef TXT As String, ByVal r As RegexStructure) As Boolean
|
||||||
|
Dim s$ = RegexReplace(TXT, r)
|
||||||
|
If Not s.IsEmptyString Then TXT = s : Return True Else Return False
|
||||||
End Function
|
End Function
|
||||||
Private Sub OPT_REDDIT_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_REDDIT.CheckedChanged
|
Private Sub OPT_REDDIT_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_REDDIT.CheckedChanged
|
||||||
MyDef.Detector()
|
If OPT_REDDIT.Checked Then CH_IS_CHANNEL.Enabled = True
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub OPT_TWITTER_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_TWITTER.CheckedChanged
|
Private Sub OPT_TWITTER_CheckedChanged(sender As Object, e As EventArgs) Handles OPT_TWITTER.CheckedChanged
|
||||||
MyDef.Detector()
|
|
||||||
CH_PARSE_USER_MEDIA.Enabled = OPT_TWITTER.Checked
|
CH_PARSE_USER_MEDIA.Enabled = OPT_TWITTER.Checked
|
||||||
|
If OPT_TWITTER.Checked Then CH_IS_CHANNEL.Checked = False : CH_IS_CHANNEL.Enabled = False
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub CH_TEMP_CheckedChanged(sender As Object, e As EventArgs) Handles CH_TEMP.CheckedChanged
|
Private Sub CH_TEMP_CheckedChanged(sender As Object, e As EventArgs) Handles CH_TEMP.CheckedChanged
|
||||||
If CH_TEMP.Checked Then CH_FAV.Checked = False
|
If CH_TEMP.Checked Then CH_FAV.Checked = False
|
||||||
MyDef.Detector()
|
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub CH_FAV_CheckedChanged(sender As Object, e As EventArgs) Handles CH_FAV.CheckedChanged
|
Private Sub CH_FAV_CheckedChanged(sender As Object, e As EventArgs) Handles CH_FAV.CheckedChanged
|
||||||
If CH_FAV.Checked Then CH_TEMP.Checked = False
|
If CH_FAV.Checked Then CH_TEMP.Checked = False
|
||||||
MyDef.Detector()
|
|
||||||
End Sub
|
|
||||||
Private Sub CH_READY_FOR_DOWN_CheckedChanged(sender As Object, e As EventArgs) Handles CH_READY_FOR_DOWN.CheckedChanged
|
|
||||||
MyDef.Detector()
|
|
||||||
End Sub
|
|
||||||
Private Sub CH_PARSE_USER_MADIA_CheckedChanged(sender As Object, e As EventArgs) Handles CH_PARSE_USER_MEDIA.CheckedChanged
|
|
||||||
MyDef.Detector()
|
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub CH_ADD_BY_LIST_CheckedChanged(sender As Object, e As EventArgs) Handles CH_ADD_BY_LIST.CheckedChanged
|
Private Sub CH_ADD_BY_LIST_CheckedChanged(sender As Object, e As EventArgs) Handles CH_ADD_BY_LIST.CheckedChanged
|
||||||
If CH_ADD_BY_LIST.Checked Then
|
If CH_ADD_BY_LIST.Checked Then
|
||||||
TXT_DESCR.GroupBoxText = "Users list"
|
TXT_DESCR.GroupBoxText = "Users list"
|
||||||
|
CH_AUTO_DETECT_SITE.Enabled = True
|
||||||
Else
|
Else
|
||||||
TXT_DESCR.GroupBoxText = "Description"
|
TXT_DESCR.GroupBoxText = "Description"
|
||||||
|
CH_AUTO_DETECT_SITE.Checked = False
|
||||||
|
CH_AUTO_DETECT_SITE.Enabled = False
|
||||||
End If
|
End If
|
||||||
TXT_USER.Enabled = Not CH_ADD_BY_LIST.Checked
|
TXT_USER.Enabled = Not CH_ADD_BY_LIST.Checked
|
||||||
TXT_USER_FRIENDLY.Enabled = Not CH_ADD_BY_LIST.Checked
|
TXT_USER_FRIENDLY.Enabled = Not CH_ADD_BY_LIST.Checked
|
||||||
@@ -265,6 +261,7 @@ CloseForm:
|
|||||||
Private Sub CH_AUTO_DETECT_SITE_CheckedChanged(sender As Object, e As EventArgs) Handles CH_AUTO_DETECT_SITE.CheckedChanged
|
Private Sub CH_AUTO_DETECT_SITE_CheckedChanged(sender As Object, e As EventArgs) Handles CH_AUTO_DETECT_SITE.CheckedChanged
|
||||||
OPT_REDDIT.Enabled = Not CH_AUTO_DETECT_SITE.Checked
|
OPT_REDDIT.Enabled = Not CH_AUTO_DETECT_SITE.Checked
|
||||||
OPT_TWITTER.Enabled = Not CH_AUTO_DETECT_SITE.Checked
|
OPT_TWITTER.Enabled = Not CH_AUTO_DETECT_SITE.Checked
|
||||||
|
CH_IS_CHANNEL.Enabled = Not CH_AUTO_DETECT_SITE.Checked
|
||||||
End Sub
|
End Sub
|
||||||
Private Function CreateUsersByList() As Boolean
|
Private Function CreateUsersByList() As Boolean
|
||||||
Try
|
Try
|
||||||
@@ -278,6 +275,8 @@ CloseForm:
|
|||||||
Dim uu$
|
Dim uu$
|
||||||
Dim tmpUser As UserInfo
|
Dim tmpUser As UserInfo
|
||||||
Dim s As Sites
|
Dim s As Sites
|
||||||
|
Dim sObj() As Object
|
||||||
|
Dim _IsChannel As Boolean = CH_IS_CHANNEL.Checked
|
||||||
Dim Added% = 0
|
Dim Added% = 0
|
||||||
Dim Skipped% = 0
|
Dim Skipped% = 0
|
||||||
Dim uid%
|
Dim uid%
|
||||||
@@ -290,10 +289,14 @@ CloseForm:
|
|||||||
|
|
||||||
For i% = 0 To u.Count - 1
|
For i% = 0 To u.Count - 1
|
||||||
uu = u(i)
|
uu = u(i)
|
||||||
If CH_AUTO_DETECT_SITE.Checked Then s = GetSiteByText(uu)
|
If CH_AUTO_DETECT_SITE.Checked Then
|
||||||
|
sObj = GetSiteByText(uu)
|
||||||
|
s = sObj(0)
|
||||||
|
_IsChannel = CBool(sObj(1))
|
||||||
|
End If
|
||||||
|
|
||||||
If Not s = Sites.Undefined Then
|
If Not s = Sites.Undefined Then
|
||||||
tmpUser = New UserInfo(uu, s)
|
tmpUser = New UserInfo(uu, s) With {.IsChannel = _IsChannel}
|
||||||
uid = -1
|
uid = -1
|
||||||
If Settings.UsersList.Count > 0 Then uid = Settings.UsersList.IndexOf(tmpUser)
|
If Settings.UsersList.Count > 0 Then uid = Settings.UsersList.IndexOf(tmpUser)
|
||||||
If uid < 0 And Not UsersForCreate.Contains(tmpUser) Then
|
If uid < 0 And Not UsersForCreate.Contains(tmpUser) Then
|
||||||
|
|||||||
178
SCrawler/MainFrame.Designer.vb
generated
178
SCrawler/MainFrame.Designer.vb
generated
@@ -71,6 +71,7 @@ Partial Class MainFrame
|
|||||||
Me.LIST_PROFILES = New System.Windows.Forms.ListView()
|
Me.LIST_PROFILES = New System.Windows.Forms.ListView()
|
||||||
Me.USER_CONTEXT = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
Me.USER_CONTEXT = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||||
Me.BTT_CONTEXT_DOWN = New System.Windows.Forms.ToolStripMenuItem()
|
Me.BTT_CONTEXT_DOWN = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
|
Me.BTT_CONTEXT_DOWN_LIMITED = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.BTT_CONTEXT_EDIT = New System.Windows.Forms.ToolStripMenuItem()
|
Me.BTT_CONTEXT_EDIT = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.BTT_CONTEXT_DELETE = New System.Windows.Forms.ToolStripMenuItem()
|
Me.BTT_CONTEXT_DELETE = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.BTT_CONTEXT_FAV = New System.Windows.Forms.ToolStripMenuItem()
|
Me.BTT_CONTEXT_FAV = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
@@ -82,7 +83,7 @@ Partial Class MainFrame
|
|||||||
Me.BTT_CONTEXT_OPEN_PATH = New System.Windows.Forms.ToolStripMenuItem()
|
Me.BTT_CONTEXT_OPEN_PATH = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.BTT_CONTEXT_OPEN_SITE = New System.Windows.Forms.ToolStripMenuItem()
|
Me.BTT_CONTEXT_OPEN_SITE = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.BTT_CONTEXT_INFO = New System.Windows.Forms.ToolStripMenuItem()
|
Me.BTT_CONTEXT_INFO = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.BTT_CONTEXT_DOWN_LIMITED = New System.Windows.Forms.ToolStripMenuItem()
|
Me.BTT_CONTEXT_READY = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
SEP_1 = New System.Windows.Forms.ToolStripSeparator()
|
SEP_1 = New System.Windows.Forms.ToolStripSeparator()
|
||||||
SEP_2 = New System.Windows.Forms.ToolStripSeparator()
|
SEP_2 = New System.Windows.Forms.ToolStripSeparator()
|
||||||
CONTEXT_SEP_1 = New System.Windows.Forms.ToolStripSeparator()
|
CONTEXT_SEP_1 = New System.Windows.Forms.ToolStripSeparator()
|
||||||
@@ -114,7 +115,7 @@ Partial Class MainFrame
|
|||||||
'CONTEXT_SEP_1
|
'CONTEXT_SEP_1
|
||||||
'
|
'
|
||||||
CONTEXT_SEP_1.Name = "CONTEXT_SEP_1"
|
CONTEXT_SEP_1.Name = "CONTEXT_SEP_1"
|
||||||
CONTEXT_SEP_1.Size = New System.Drawing.Size(192, 6)
|
CONTEXT_SEP_1.Size = New System.Drawing.Size(218, 6)
|
||||||
'
|
'
|
||||||
'MENU_SETTINGS
|
'MENU_SETTINGS
|
||||||
'
|
'
|
||||||
@@ -158,22 +159,22 @@ Partial Class MainFrame
|
|||||||
'CONTEXT_SEP_2
|
'CONTEXT_SEP_2
|
||||||
'
|
'
|
||||||
CONTEXT_SEP_2.Name = "CONTEXT_SEP_2"
|
CONTEXT_SEP_2.Name = "CONTEXT_SEP_2"
|
||||||
CONTEXT_SEP_2.Size = New System.Drawing.Size(192, 6)
|
CONTEXT_SEP_2.Size = New System.Drawing.Size(218, 6)
|
||||||
'
|
'
|
||||||
'CONTEXT_SEP_3
|
'CONTEXT_SEP_3
|
||||||
'
|
'
|
||||||
CONTEXT_SEP_3.Name = "CONTEXT_SEP_3"
|
CONTEXT_SEP_3.Name = "CONTEXT_SEP_3"
|
||||||
CONTEXT_SEP_3.Size = New System.Drawing.Size(192, 6)
|
CONTEXT_SEP_3.Size = New System.Drawing.Size(218, 6)
|
||||||
'
|
'
|
||||||
'CONTEXT_SEP_4
|
'CONTEXT_SEP_4
|
||||||
'
|
'
|
||||||
CONTEXT_SEP_4.Name = "CONTEXT_SEP_4"
|
CONTEXT_SEP_4.Name = "CONTEXT_SEP_4"
|
||||||
CONTEXT_SEP_4.Size = New System.Drawing.Size(192, 6)
|
CONTEXT_SEP_4.Size = New System.Drawing.Size(218, 6)
|
||||||
'
|
'
|
||||||
'CONTEXT_SEP_5
|
'CONTEXT_SEP_5
|
||||||
'
|
'
|
||||||
CONTEXT_SEP_5.Name = "CONTEXT_SEP_5"
|
CONTEXT_SEP_5.Name = "CONTEXT_SEP_5"
|
||||||
CONTEXT_SEP_5.Size = New System.Drawing.Size(192, 6)
|
CONTEXT_SEP_5.Size = New System.Drawing.Size(218, 6)
|
||||||
'
|
'
|
||||||
'SEP_4
|
'SEP_4
|
||||||
'
|
'
|
||||||
@@ -422,101 +423,107 @@ Partial Class MainFrame
|
|||||||
'
|
'
|
||||||
'USER_CONTEXT
|
'USER_CONTEXT
|
||||||
'
|
'
|
||||||
Me.USER_CONTEXT.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.BTT_CONTEXT_DOWN_LIMITED, Me.BTT_CONTEXT_EDIT, Me.BTT_CONTEXT_DELETE, CONTEXT_SEP_1, Me.BTT_CONTEXT_FAV, Me.BTT_CONTEXT_TEMP, Me.BTT_CONTEXT_GROUPS, Me.BTT_CONTEXT_ADD_TO_COL, Me.BTT_CONTEXT_COL_MERGE, CONTEXT_SEP_2, Me.BTT_CHANGE_IMAGE, CONTEXT_SEP_3, Me.BTT_CONTEXT_OPEN_PATH, CONTEXT_SEP_4, Me.BTT_CONTEXT_OPEN_SITE, CONTEXT_SEP_5, Me.BTT_CONTEXT_INFO})
|
Me.USER_CONTEXT.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.BTT_CONTEXT_DOWN_LIMITED, Me.BTT_CONTEXT_EDIT, Me.BTT_CONTEXT_DELETE, CONTEXT_SEP_1, Me.BTT_CONTEXT_FAV, Me.BTT_CONTEXT_TEMP, Me.BTT_CONTEXT_READY, Me.BTT_CONTEXT_GROUPS, Me.BTT_CONTEXT_ADD_TO_COL, Me.BTT_CONTEXT_COL_MERGE, CONTEXT_SEP_2, Me.BTT_CHANGE_IMAGE, CONTEXT_SEP_3, Me.BTT_CONTEXT_OPEN_PATH, CONTEXT_SEP_4, Me.BTT_CONTEXT_OPEN_SITE, CONTEXT_SEP_5, Me.BTT_CONTEXT_INFO})
|
||||||
Me.USER_CONTEXT.Name = "USER_CONTEXT"
|
Me.USER_CONTEXT.Name = "USER_CONTEXT"
|
||||||
Me.USER_CONTEXT.Size = New System.Drawing.Size(196, 342)
|
Me.USER_CONTEXT.Size = New System.Drawing.Size(222, 364)
|
||||||
'
|
'
|
||||||
'BTT_CONTEXT_DOWN
|
'BTT_CONTEXT_DOWN
|
||||||
'
|
'
|
||||||
Me.BTT_CONTEXT_DOWN.Image = Global.SCrawler.My.Resources.Resources.StartPic_01_Green_16
|
Me.BTT_CONTEXT_DOWN.Image = Global.SCrawler.My.Resources.Resources.StartPic_01_Green_16
|
||||||
Me.BTT_CONTEXT_DOWN.Name = "BTT_CONTEXT_DOWN"
|
Me.BTT_CONTEXT_DOWN.Name = "BTT_CONTEXT_DOWN"
|
||||||
Me.BTT_CONTEXT_DOWN.Size = New System.Drawing.Size(195, 22)
|
Me.BTT_CONTEXT_DOWN.Size = New System.Drawing.Size(221, 22)
|
||||||
Me.BTT_CONTEXT_DOWN.Text = "Download data"
|
Me.BTT_CONTEXT_DOWN.Text = "Download data"
|
||||||
'
|
'
|
||||||
'BTT_CONTEXT_EDIT
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_EDIT.Image = Global.SCrawler.My.Resources.Resources.PencilPic_01_16
|
|
||||||
Me.BTT_CONTEXT_EDIT.Name = "BTT_CONTEXT_EDIT"
|
|
||||||
Me.BTT_CONTEXT_EDIT.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_EDIT.Text = "Edit user information"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_DELETE
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_DELETE.Image = Global.SCrawler.My.Resources.Resources.Delete
|
|
||||||
Me.BTT_CONTEXT_DELETE.Name = "BTT_CONTEXT_DELETE"
|
|
||||||
Me.BTT_CONTEXT_DELETE.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_DELETE.Text = "Delete user / collection"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_FAV
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_FAV.Image = Global.SCrawler.My.Resources.Resources.StarPic_24
|
|
||||||
Me.BTT_CONTEXT_FAV.Name = "BTT_CONTEXT_FAV"
|
|
||||||
Me.BTT_CONTEXT_FAV.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_FAV.Text = "Change favorite"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_TEMP
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_TEMP.Image = CType(resources.GetObject("BTT_CONTEXT_TEMP.Image"), System.Drawing.Image)
|
|
||||||
Me.BTT_CONTEXT_TEMP.Name = "BTT_CONTEXT_TEMP"
|
|
||||||
Me.BTT_CONTEXT_TEMP.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_TEMP.Text = "Change temporary"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_GROUPS
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_GROUPS.Name = "BTT_CONTEXT_GROUPS"
|
|
||||||
Me.BTT_CONTEXT_GROUPS.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_GROUPS.Text = "Change labels"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_ADD_TO_COL
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_ADD_TO_COL.Image = Global.SCrawler.My.Resources.Resources.DBPic_32
|
|
||||||
Me.BTT_CONTEXT_ADD_TO_COL.Name = "BTT_CONTEXT_ADD_TO_COL"
|
|
||||||
Me.BTT_CONTEXT_ADD_TO_COL.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_ADD_TO_COL.Text = "Add to collection"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_COL_MERGE
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_COL_MERGE.Name = "BTT_CONTEXT_COL_MERGE"
|
|
||||||
Me.BTT_CONTEXT_COL_MERGE.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_COL_MERGE.Text = "Merge collection files"
|
|
||||||
'
|
|
||||||
'BTT_CHANGE_IMAGE
|
|
||||||
'
|
|
||||||
Me.BTT_CHANGE_IMAGE.Image = Global.SCrawler.My.Resources.Resources.PicturePic_32
|
|
||||||
Me.BTT_CHANGE_IMAGE.Name = "BTT_CHANGE_IMAGE"
|
|
||||||
Me.BTT_CHANGE_IMAGE.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CHANGE_IMAGE.Text = "Change image"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_OPEN_PATH
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_OPEN_PATH.Image = Global.SCrawler.My.Resources.Resources.Folder_32
|
|
||||||
Me.BTT_CONTEXT_OPEN_PATH.Name = "BTT_CONTEXT_OPEN_PATH"
|
|
||||||
Me.BTT_CONTEXT_OPEN_PATH.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_OPEN_PATH.Text = "Open contains folder"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_OPEN_SITE
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_OPEN_SITE.Image = Global.SCrawler.My.Resources.Resources.GlobeBlue_32
|
|
||||||
Me.BTT_CONTEXT_OPEN_SITE.Name = "BTT_CONTEXT_OPEN_SITE"
|
|
||||||
Me.BTT_CONTEXT_OPEN_SITE.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_OPEN_SITE.Text = "Open site"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_INFO
|
|
||||||
'
|
|
||||||
Me.BTT_CONTEXT_INFO.Image = Global.SCrawler.My.Resources.Resources.InfoPic_32
|
|
||||||
Me.BTT_CONTEXT_INFO.Name = "BTT_CONTEXT_INFO"
|
|
||||||
Me.BTT_CONTEXT_INFO.Size = New System.Drawing.Size(195, 22)
|
|
||||||
Me.BTT_CONTEXT_INFO.Text = "Information"
|
|
||||||
'
|
|
||||||
'BTT_CONTEXT_DOWN_LIMITED
|
'BTT_CONTEXT_DOWN_LIMITED
|
||||||
'
|
'
|
||||||
Me.BTT_CONTEXT_DOWN_LIMITED.AutoToolTip = True
|
Me.BTT_CONTEXT_DOWN_LIMITED.AutoToolTip = True
|
||||||
Me.BTT_CONTEXT_DOWN_LIMITED.Image = Global.SCrawler.My.Resources.Resources.StartPic_01_Green_16
|
Me.BTT_CONTEXT_DOWN_LIMITED.Image = Global.SCrawler.My.Resources.Resources.StartPic_01_Green_16
|
||||||
Me.BTT_CONTEXT_DOWN_LIMITED.Name = "BTT_CONTEXT_DOWN_LIMITED"
|
Me.BTT_CONTEXT_DOWN_LIMITED.Name = "BTT_CONTEXT_DOWN_LIMITED"
|
||||||
Me.BTT_CONTEXT_DOWN_LIMITED.Size = New System.Drawing.Size(195, 22)
|
Me.BTT_CONTEXT_DOWN_LIMITED.Size = New System.Drawing.Size(221, 22)
|
||||||
Me.BTT_CONTEXT_DOWN_LIMITED.Text = "Download data limited"
|
Me.BTT_CONTEXT_DOWN_LIMITED.Text = "Download data limited"
|
||||||
Me.BTT_CONTEXT_DOWN_LIMITED.ToolTipText = "Download top ... posts"
|
Me.BTT_CONTEXT_DOWN_LIMITED.ToolTipText = "Download top ... posts"
|
||||||
'
|
'
|
||||||
|
'BTT_CONTEXT_EDIT
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_EDIT.Image = Global.SCrawler.My.Resources.Resources.PencilPic_01_16
|
||||||
|
Me.BTT_CONTEXT_EDIT.Name = "BTT_CONTEXT_EDIT"
|
||||||
|
Me.BTT_CONTEXT_EDIT.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_EDIT.Text = "Edit user information"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_DELETE
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_DELETE.Image = Global.SCrawler.My.Resources.Resources.Delete
|
||||||
|
Me.BTT_CONTEXT_DELETE.Name = "BTT_CONTEXT_DELETE"
|
||||||
|
Me.BTT_CONTEXT_DELETE.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_DELETE.Text = "Delete user / collection"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_FAV
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_FAV.Image = Global.SCrawler.My.Resources.Resources.StarPic_24
|
||||||
|
Me.BTT_CONTEXT_FAV.Name = "BTT_CONTEXT_FAV"
|
||||||
|
Me.BTT_CONTEXT_FAV.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_FAV.Text = "Change favorite"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_TEMP
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_TEMP.Image = CType(resources.GetObject("BTT_CONTEXT_TEMP.Image"), System.Drawing.Image)
|
||||||
|
Me.BTT_CONTEXT_TEMP.Name = "BTT_CONTEXT_TEMP"
|
||||||
|
Me.BTT_CONTEXT_TEMP.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_TEMP.Text = "Change temporary"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_GROUPS
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_GROUPS.Name = "BTT_CONTEXT_GROUPS"
|
||||||
|
Me.BTT_CONTEXT_GROUPS.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_GROUPS.Text = "Change labels"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_ADD_TO_COL
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_ADD_TO_COL.Image = Global.SCrawler.My.Resources.Resources.DBPic_32
|
||||||
|
Me.BTT_CONTEXT_ADD_TO_COL.Name = "BTT_CONTEXT_ADD_TO_COL"
|
||||||
|
Me.BTT_CONTEXT_ADD_TO_COL.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_ADD_TO_COL.Text = "Add to collection"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_COL_MERGE
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_COL_MERGE.Name = "BTT_CONTEXT_COL_MERGE"
|
||||||
|
Me.BTT_CONTEXT_COL_MERGE.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_COL_MERGE.Text = "Merge collection files"
|
||||||
|
'
|
||||||
|
'BTT_CHANGE_IMAGE
|
||||||
|
'
|
||||||
|
Me.BTT_CHANGE_IMAGE.Image = Global.SCrawler.My.Resources.Resources.PicturePic_32
|
||||||
|
Me.BTT_CHANGE_IMAGE.Name = "BTT_CHANGE_IMAGE"
|
||||||
|
Me.BTT_CHANGE_IMAGE.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CHANGE_IMAGE.Text = "Change image"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_OPEN_PATH
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_OPEN_PATH.Image = Global.SCrawler.My.Resources.Resources.Folder_32
|
||||||
|
Me.BTT_CONTEXT_OPEN_PATH.Name = "BTT_CONTEXT_OPEN_PATH"
|
||||||
|
Me.BTT_CONTEXT_OPEN_PATH.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_OPEN_PATH.Text = "Open contains folder"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_OPEN_SITE
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_OPEN_SITE.Image = Global.SCrawler.My.Resources.Resources.GlobeBlue_32
|
||||||
|
Me.BTT_CONTEXT_OPEN_SITE.Name = "BTT_CONTEXT_OPEN_SITE"
|
||||||
|
Me.BTT_CONTEXT_OPEN_SITE.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_OPEN_SITE.Text = "Open site"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_INFO
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_INFO.Image = Global.SCrawler.My.Resources.Resources.InfoPic_32
|
||||||
|
Me.BTT_CONTEXT_INFO.Name = "BTT_CONTEXT_INFO"
|
||||||
|
Me.BTT_CONTEXT_INFO.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_INFO.Text = "Information"
|
||||||
|
'
|
||||||
|
'BTT_CONTEXT_READY
|
||||||
|
'
|
||||||
|
Me.BTT_CONTEXT_READY.Name = "BTT_CONTEXT_READY"
|
||||||
|
Me.BTT_CONTEXT_READY.Size = New System.Drawing.Size(221, 22)
|
||||||
|
Me.BTT_CONTEXT_READY.Text = "Change ready for download"
|
||||||
|
'
|
||||||
'MainFrame
|
'MainFrame
|
||||||
'
|
'
|
||||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||||
@@ -586,4 +593,5 @@ Partial Class MainFrame
|
|||||||
Private WithEvents BTT_CONTEXT_GROUPS As ToolStripMenuItem
|
Private WithEvents BTT_CONTEXT_GROUPS As ToolStripMenuItem
|
||||||
Private WithEvents BTT_VERSION_INFO As ToolStripButton
|
Private WithEvents BTT_VERSION_INFO As ToolStripButton
|
||||||
Private WithEvents BTT_CONTEXT_DOWN_LIMITED As ToolStripMenuItem
|
Private WithEvents BTT_CONTEXT_DOWN_LIMITED As ToolStripMenuItem
|
||||||
|
Private WithEvents BTT_CONTEXT_READY As ToolStripMenuItem
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ CloseResume:
|
|||||||
.DownloadVideos = f.DownloadVideos
|
.DownloadVideos = f.DownloadVideos
|
||||||
.FriendlyName = f.UserFriendly
|
.FriendlyName = f.UserFriendly
|
||||||
.Description = f.UserDescr
|
.Description = f.UserDescr
|
||||||
.Labels.ListAddList(f.UserLabels, LAP.ClearBeforeAdd, LAP.NotContainsOnly)
|
.Self.Labels.ListAddList(f.UserLabels, LAP.ClearBeforeAdd, LAP.NotContainsOnly)
|
||||||
.UpdateUserInformation()
|
.UpdateUserInformation()
|
||||||
End With
|
End With
|
||||||
UserListUpdate(Settings.Users(Settings.Users.Count - 1), True)
|
UserListUpdate(Settings.Users(Settings.Users.Count - 1), True)
|
||||||
@@ -485,6 +485,16 @@ CloseResume:
|
|||||||
End Sub)
|
End Sub)
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
Private Sub BTT_CONTEXT_READY_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_READY.Click
|
||||||
|
Dim users As List(Of IUserData) = GetSelectedUserArray()
|
||||||
|
If AskForMassReplace(users, "Ready for download") Then
|
||||||
|
Dim r As Boolean = MsgBoxE({"What state do you want to set for selected users", "Select ready state"}, vbQuestion,,, {"Not Ready", "Ready"}).Index
|
||||||
|
users.ForEach(Sub(u)
|
||||||
|
u.ReadyForDownload = r
|
||||||
|
u.UpdateUserInformation()
|
||||||
|
End Sub)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
Private Sub BTT_CONTEXT_GROUPS_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_GROUPS.Click
|
Private Sub BTT_CONTEXT_GROUPS_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_GROUPS.Click
|
||||||
Try
|
Try
|
||||||
Dim users As List(Of IUserData) = GetSelectedUserArray()
|
Dim users As List(Of IUserData) = GetSelectedUserArray()
|
||||||
@@ -502,7 +512,7 @@ CloseResume:
|
|||||||
If .Count > 0 Then .Collections.ForEach(Sub(uu) uu.Labels.ListAddList(f.LabelsList, lp))
|
If .Count > 0 Then .Collections.ForEach(Sub(uu) uu.Labels.ListAddList(f.LabelsList, lp))
|
||||||
End With
|
End With
|
||||||
Else
|
Else
|
||||||
u.Labels.ListAddList(f.LabelsList, lp)
|
u.Self.Labels.ListAddList(f.LabelsList, lp)
|
||||||
End If
|
End If
|
||||||
u.UpdateUserInformation()
|
u.UpdateUserInformation()
|
||||||
End Sub)
|
End Sub)
|
||||||
@@ -601,7 +611,7 @@ CloseResume:
|
|||||||
End Sub
|
End Sub
|
||||||
Private Sub BTT_CONTEXT_INFO_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_INFO.Click
|
Private Sub BTT_CONTEXT_INFO_Click(sender As Object, e As EventArgs) Handles BTT_CONTEXT_INFO.Click
|
||||||
Dim user As IUserData = GetSelectedUser()
|
Dim user As IUserData = GetSelectedUser()
|
||||||
If Not user Is Nothing Then MsgBoxE(DirectCast(user, UserDataBase).GetUserInformation())
|
If Not user Is Nothing Then MsgBoxE(DirectCast(user.Self, UserDataBase).GetUserInformation())
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub USER_CONTEXT_VisibleChanged(sender As Object, e As EventArgs) Handles USER_CONTEXT.VisibleChanged
|
Private Sub USER_CONTEXT_VisibleChanged(sender As Object, e As EventArgs) Handles USER_CONTEXT.VisibleChanged
|
||||||
Try
|
Try
|
||||||
@@ -690,7 +700,7 @@ CloseResume:
|
|||||||
On Error Resume Next
|
On Error Resume Next
|
||||||
If user.IsCollection Then
|
If user.IsCollection Then
|
||||||
If USER_CONTEXT.Visible Then USER_CONTEXT.Hide()
|
If USER_CONTEXT.Visible Then USER_CONTEXT.Hide()
|
||||||
MsgBoxE("This is collection!{vbNewLine}Edit collections does not allowed!", vbExclamation)
|
MsgBoxE($"This is collection!{vbNewLine}Edit collections does not allowed!", vbExclamation)
|
||||||
Else
|
Else
|
||||||
Using f As New UserCreatorForm(user)
|
Using f As New UserCreatorForm(user)
|
||||||
f.ShowDialog()
|
f.ShowDialog()
|
||||||
|
|||||||
@@ -163,9 +163,9 @@ Friend Module MainMod
|
|||||||
Friend Sub ImageHandler(ByVal User As IUserData, ByVal Add As Boolean)
|
Friend Sub ImageHandler(ByVal User As IUserData, ByVal Add As Boolean)
|
||||||
Try
|
Try
|
||||||
If Add Then
|
If Add Then
|
||||||
AddHandler User.OnPictureUpdated, AddressOf MainFrame.User_OnPictureUpdated
|
AddHandler User.Self.OnPictureUpdated, AddressOf MainFrame.User_OnPictureUpdated
|
||||||
Else
|
Else
|
||||||
RemoveHandler User.OnPictureUpdated, AddressOf MainFrame.User_OnPictureUpdated
|
RemoveHandler User.Self.OnPictureUpdated, AddressOf MainFrame.User_OnPictureUpdated
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
End Try
|
End Try
|
||||||
|
|||||||
@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
|
|||||||
' by using the '*' as shown below:
|
' by using the '*' as shown below:
|
||||||
' <Assembly: AssemblyVersion("1.0.*")>
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
<Assembly: AssemblyVersion("1.0.0.3")>
|
<Assembly: AssemblyVersion("1.0.0.4")>
|
||||||
<Assembly: AssemblyFileVersion("1.0.0.3")>
|
<Assembly: AssemblyFileVersion("1.0.0.4")>
|
||||||
<Assembly: NeutralResourcesLanguage("en")>
|
<Assembly: NeutralResourcesLanguage("en")>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
<PublishUrl>publish\</PublishUrl>
|
<PublishUrl>publish\</PublishUrl>
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
<InstallFrom>Disk</InstallFrom>
|
<InstallFrom>Disk</InstallFrom>
|
||||||
@@ -26,7 +27,6 @@
|
|||||||
<MapFileExtensions>true</MapFileExtensions>
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
<ApplicationRevision>0</ApplicationRevision>
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|||||||
@@ -106,17 +106,26 @@ Friend Class SettingsCLS : Implements IDisposable
|
|||||||
If x.Count > 0 Then x.ForEach(Sub(xx) UsersList.Add(xx))
|
If x.Count > 0 Then x.ForEach(Sub(xx) UsersList.Add(xx))
|
||||||
End Using
|
End Using
|
||||||
Dim PNC As Func(Of UserInfo, Boolean) = Function(u) Not u.IncludedInCollection
|
Dim PNC As Func(Of UserInfo, Boolean) = Function(u) Not u.IncludedInCollection
|
||||||
|
Dim NeedUpdate As Boolean = False
|
||||||
If UsersList.Count > 0 Then
|
If UsersList.Count > 0 Then
|
||||||
Dim cUsers As List(Of UserInfo) = UsersList.Where(Function(u) u.IncludedInCollection).ToList
|
Dim cUsers As List(Of UserInfo) = UsersList.Where(Function(u) u.IncludedInCollection).ToList
|
||||||
If cUsers.ListExists Then
|
If cUsers.ListExists Then
|
||||||
Dim d As New Dictionary(Of SFile, List(Of UserInfo))
|
Dim d As New Dictionary(Of SFile, List(Of UserInfo))
|
||||||
cUsers = cUsers.ListForEachCopy(Of List(Of UserInfo))(Function(ByVal f As UserInfo, ByVal f_indx As Integer) As UserInfo
|
cUsers = cUsers.ListForEachCopy(Of List(Of UserInfo))(Function(ByVal f As UserInfo, ByVal f_indx As Integer) As UserInfo
|
||||||
If Not d.ContainsKey(f.File.CutPath(2).Path) Then
|
Dim m% = IIf(f.Merged, 1, 2)
|
||||||
d.Add(f.File.CutPath(2).Path, New List(Of UserInfo) From {f})
|
If SFile.GetPath(f.File.CutPath(m - 1).Path).Exists(SFO.Path, False) Then
|
||||||
|
Dim fp As SFile = SFile.GetPath(f.File.CutPath(m).Path)
|
||||||
|
If Not d.ContainsKey(fp) Then
|
||||||
|
d.Add(fp, New List(Of UserInfo) From {f})
|
||||||
Else
|
Else
|
||||||
d(f.File.CutPath(2).Path).Add(f)
|
d(f.File.CutPath(m).Path).Add(f)
|
||||||
End If
|
End If
|
||||||
Return f
|
Return f
|
||||||
|
Else
|
||||||
|
NeedUpdate = True
|
||||||
|
UsersList.Remove(f)
|
||||||
|
Return Nothing
|
||||||
|
End If
|
||||||
End Function, True)
|
End Function, True)
|
||||||
Dim v%
|
Dim v%
|
||||||
If d.Count > 0 Then
|
If d.Count > 0 Then
|
||||||
@@ -138,8 +147,8 @@ Friend Class SettingsCLS : Implements IDisposable
|
|||||||
t.Clear()
|
t.Clear()
|
||||||
Dim du As List(Of UserInfo) = (From u As IUserData In Users
|
Dim du As List(Of UserInfo) = (From u As IUserData In Users
|
||||||
Where Not u.IsCollection AndAlso Not u.FileExists
|
Where Not u.IsCollection AndAlso Not u.FileExists
|
||||||
Select DirectCast(u, UserDataBase).User).ToList
|
Select DirectCast(u.Self, UserDataBase).User).ToList
|
||||||
If Not du Is Nothing AndAlso du.Count > 0 Then du.ForEach(Sub(u) UsersList.Remove(u)) : du.Clear()
|
If du.ListExists Then du.ForEach(Sub(u) UsersList.Remove(u)) : du.Clear()
|
||||||
Users.ListDisposeRemoveAll(Function(ByVal u As IUserData) As Boolean
|
Users.ListDisposeRemoveAll(Function(ByVal u As IUserData) As Boolean
|
||||||
If u.IsCollection Then
|
If u.IsCollection Then
|
||||||
With DirectCast(u, UserDataBind)
|
With DirectCast(u, UserDataBind)
|
||||||
@@ -158,6 +167,7 @@ Friend Class SettingsCLS : Implements IDisposable
|
|||||||
End If
|
End If
|
||||||
End Function)
|
End Function)
|
||||||
End If
|
End If
|
||||||
|
If NeedUpdate Then UpdateUsersList()
|
||||||
End If
|
End If
|
||||||
If Users.Count > 0 Then
|
If Users.Count > 0 Then
|
||||||
Labels.ToList.ListAddList(Users.SelectMany(Function(u) u.Labels), LAP.NotContainsOnly)
|
Labels.ToList.ListAddList(Users.SelectMany(Function(u) u.Labels), LAP.NotContainsOnly)
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ Friend Class TDownloader : Implements IDisposable
|
|||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
Private Function GetUserFromMainCollection(ByVal User As IUserData) As IUserData
|
Private Function GetUserFromMainCollection(ByVal User As IUserData) As IUserData
|
||||||
Dim uSimple As Predicate(Of IUserData) = Function(u) u.Equals(DirectCast(User, UserDataBase))
|
Dim uSimple As Predicate(Of IUserData) = Function(u) u.Equals(DirectCast(User.Self, UserDataBase))
|
||||||
Dim uCol As Predicate(Of IUserData) = Function(ByVal u As IUserData) As Boolean
|
Dim uCol As Predicate(Of IUserData) = Function(ByVal u As IUserData) As Boolean
|
||||||
If u.IsCollection Then
|
If u.IsCollection Then
|
||||||
Return DirectCast(u, UserDataBind).Collections.Exists(uSimple)
|
Return DirectCast(u, UserDataBind).Collections.Exists(uSimple)
|
||||||
|
|||||||
Reference in New Issue
Block a user