mirror of
https://github.com/AAndyProgram/SCrawler.git
synced 2026-03-15 00:02:17 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b64e5563b | ||
|
|
1bc048578d | ||
|
|
5d5ce29f36 | ||
|
|
2a2fc45a91 | ||
|
|
b17e6ac40a | ||
|
|
301f2a6b03 | ||
|
|
fd72ba0e2a | ||
|
|
9146b16cfa | ||
|
|
523794d210 |
13
.github/FUNDING.yml
vendored
Normal file
13
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||||
|
patreon: # Replace with a single Patreon username
|
||||||
|
open_collective: # Replace with a single Open Collective username
|
||||||
|
ko_fi: andyprogram
|
||||||
|
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||||
|
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||||
|
liberapay: # Replace with a single Liberapay username
|
||||||
|
issuehunt: # Replace with a single IssueHunt username
|
||||||
|
otechie: # Replace with a single Otechie username
|
||||||
|
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||||
|
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||||
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: "[BUG]"
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Do something
|
||||||
|
2. See error
|
||||||
|
|
||||||
|
**Log data**
|
||||||
|
If the program log contains any data.
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Release information (please complete the following information):**
|
||||||
|
- Architecture [e.g. x86, x64]
|
||||||
|
- Version [e.g. 2.0.0.0]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
10
.github/ISSUE_TEMPLATE/custom.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/custom.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
name: Custom issue template
|
||||||
|
about: Describe this issue template's purpose here.
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: "[REQUEST]"
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
@@ -38,5 +38,4 @@ I welcome requests! Follow these steps to contribute:
|
|||||||
|
|
||||||
# Contact me
|
# Contact me
|
||||||
|
|
||||||
[Element messenger](https://element.io/): @andyprogram:matrix.org
|
[](https://matrix.to/#/@andyprogram:matrix.org)
|
||||||
https://matrix.to/#/@andyprogram:matrix.org
|
|
||||||
|
|||||||
31
Changelog.md
31
Changelog.md
@@ -1,3 +1,32 @@
|
|||||||
|
# 2.0.0.4
|
||||||
|
|
||||||
|
**Removed compatibility of program settings with version 1.0.0.4 and lower.**
|
||||||
|
|
||||||
|
**If your program version is 1.0.0.4 and lower, it is strongly recommended that you upgrade to release 2.0.0.1 to update the program settings (and run the program). Then update to this release. Otherwise, you will have to configure the program settings again**
|
||||||
|
|
||||||
|
**If your program version is 1.0.1.0 or higher, you should not pay attention to this message.**
|
||||||
|
|
||||||
|
- Added
|
||||||
|
- Ability to specify the path to store saved posts
|
||||||
|
- Fixed
|
||||||
|
- **Error when specifying network paths**
|
||||||
|
- Minor bugs
|
||||||
|
|
||||||
|
# 2.0.0.3
|
||||||
|
|
||||||
|
**Removed compatibility of program settings with version 1.0.0.4 and lower.**
|
||||||
|
|
||||||
|
**If your program version is 1.0.0.4 and lower, it is strongly recommended that you upgrade to release 2.0.0.1 to update the program settings (and run the program). Then update to this release. Otherwise, you will have to configure the program settings again**
|
||||||
|
|
||||||
|
**If your program version is 1.0.1.0 or higher, you should not pay attention to this message.**
|
||||||
|
|
||||||
|
- Added
|
||||||
|
- The "Get User Media Only" setting is now available for Reddit. If checked then "CrossPosts" will be skipped, otherwise "CrossPosts" will be included.
|
||||||
|
- Fixed
|
||||||
|
- In some cases, the program did not parse all Reddit posts.
|
||||||
|
- Collection ignored when validated when creating a new user
|
||||||
|
- Incorrect number of Instagram profiles downloads per session
|
||||||
|
|
||||||
# 2.0.0.2
|
# 2.0.0.2
|
||||||
|
|
||||||
**This is the last release that supports program settings of version 1.0.0.4 and lower. Compatibility of program settings with version 1.0.0.4 and lower will be removed in future releases. It is strongly recommended that you upgrade to this release before future releases. Otherwise, you will have to configure the program settings again. If your program version is 1.0.1.0 or higher, you should not pay attention to this message.**
|
**This is the last release that supports program settings of version 1.0.0.4 and lower. Compatibility of program settings with version 1.0.0.4 and lower will be removed in future releases. It is strongly recommended that you upgrade to this release before future releases. Otherwise, you will have to configure the program settings again. If your program version is 1.0.1.0 or higher, you should not pay attention to this message.**
|
||||||
@@ -16,7 +45,7 @@
|
|||||||
- Clear information about downloaded profiles of the current session in the "Download info form"
|
- Clear information about downloaded profiles of the current session in the "Download info form"
|
||||||
- Increased the number of Instagram posts (from 12 to 50) received per request
|
- Increased the number of Instagram posts (from 12 to 50) received per request
|
||||||
- Channels' statistics
|
- Channels' statistics
|
||||||
- **RedGisf profiles support**
|
- **RedGifs profiles support**
|
||||||
- Fixed
|
- Fixed
|
||||||
- The program was showing incorrect information about the total numbers of images and videos downloaded when a Reddit user was created from a channel
|
- The program was showing incorrect information about the total numbers of images and videos downloaded when a Reddit user was created from a channel
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
# Social networks crawler
|
# Social networks crawler
|
||||||
|
|
||||||
|
[](https://github.com/AAndyProgram/SCrawler/releases/latest)
|
||||||
|
[](https://github.com/AAndyProgram/SCrawler/)
|
||||||
|
|
||||||
A program to download photo and video from Reddit, Twitter, Instagram, [etc](#supported-sites).
|
A program to download photo and video from Reddit, Twitter, Instagram, [etc](#supported-sites).
|
||||||
|
|
||||||
Do you like this program? Consider adding to my coffee fund by making a donation to show your support. :)
|
Do you like this program? Consider adding to my coffee fund by making a donation to show your support. :)
|
||||||
@@ -27,6 +30,7 @@ Do you like this program? Consider adding to my coffee fund by making a donation
|
|||||||
- Twitter
|
- Twitter
|
||||||
- Instagram
|
- Instagram
|
||||||
- RedGifs
|
- RedGifs
|
||||||
|
- Imgur
|
||||||
|
|
||||||
# How does it works:
|
# How does it works:
|
||||||
|
|
||||||
@@ -84,6 +88,8 @@ You can add users by patterns:
|
|||||||
|
|
||||||
Read more about adding users and subreddits [here](https://github.com/AAndyProgram/SCrawler/wiki/Users)
|
Read more about adding users and subreddits [here](https://github.com/AAndyProgram/SCrawler/wiki/Users)
|
||||||
|
|
||||||
|
# Guide
|
||||||
|
|
||||||
**Full guide you can find [here](https://github.com/AAndyProgram/SCrawler/wiki)**
|
**Full guide you can find [here](https://github.com/AAndyProgram/SCrawler/wiki)**
|
||||||
|
|
||||||
## Using program as just video downloader
|
## Using program as just video downloader
|
||||||
@@ -94,5 +100,4 @@ Example: ```D:\Programs\SCrawler\SCrawler.exe v```
|
|||||||
|
|
||||||
# Contact me
|
# Contact me
|
||||||
|
|
||||||
[Element messenger](https://element.io/): @andyprogram:matrix.org
|
[](https://matrix.to/#/@andyprogram:matrix.org)
|
||||||
https://matrix.to/#/@andyprogram:matrix.org
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
Imports PersonalUtilities.Tools
|
Imports PersonalUtilities.Tools
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
Imports PersonalUtilities.Functions.XML.Base
|
Imports PersonalUtilities.Functions.XML.Base
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Namespace API.Base
|
Namespace API.Base
|
||||||
Friend Class SiteSettings : Implements IDisposable
|
Friend Class SiteSettings : Implements IDisposable
|
||||||
Friend Const Header_Twitter_Authorization As String = "authorization"
|
Friend Const Header_Twitter_Authorization As String = "authorization"
|
||||||
@@ -16,13 +17,33 @@ Namespace API.Base
|
|||||||
Friend ReadOnly Site As Sites
|
Friend ReadOnly Site As Sites
|
||||||
Friend ReadOnly Responser As WEB.Response
|
Friend ReadOnly Responser As WEB.Response
|
||||||
Private ReadOnly _Path As XMLValue(Of SFile)
|
Private ReadOnly _Path As XMLValue(Of SFile)
|
||||||
Friend Property Path As SFile
|
Friend Property Path(Optional ByVal SetProp As Boolean = True) As SFile
|
||||||
Get
|
Get
|
||||||
If _Path.IsEmptyString Then _Path.Value = SFile.GetPath($"{Settings.GlobalPath.Value.PathWithSeparator}{Site}")
|
If _Path.IsEmptyString Then
|
||||||
|
Dim tmpPath As SFile = SFile.GetPath($"{Settings.GlobalPath.Value.PathWithSeparator}{Site}")
|
||||||
|
If SetProp Then _Path.Value = tmpPath Else Return tmpPath
|
||||||
|
End If
|
||||||
Return _Path.Value
|
Return _Path.Value
|
||||||
End Get
|
End Get
|
||||||
Set(ByVal NewFile As SFile)
|
Set(ByVal NewPath As SFile)
|
||||||
_Path.Value = NewFile
|
_Path.Value = NewPath
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
Private ReadOnly _SavedPostsPath As XMLValue(Of SFile)
|
||||||
|
Friend Property SavedPostsPath(Optional ByVal GetAny As Boolean = True) As SFile
|
||||||
|
Get
|
||||||
|
If Not _SavedPostsPath.Value.IsEmptyString Then
|
||||||
|
Return _SavedPostsPath.Value
|
||||||
|
Else
|
||||||
|
If GetAny Then
|
||||||
|
Return $"{Path.PathNoSeparator}\!Saved\"
|
||||||
|
Else
|
||||||
|
Return Nothing
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Get
|
||||||
|
Set(ByVal NewPath As SFile)
|
||||||
|
_SavedPostsPath.Value = NewPath
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
#Region "Instagram"
|
#Region "Instagram"
|
||||||
@@ -122,8 +143,7 @@ Namespace API.Base
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
Dim n() As String = {SettingsCLS.Name_Node_Sites, Site.ToString}
|
Dim n() As String = {SettingsCLS.Name_Node_Sites, Site.ToString}
|
||||||
_Path = New XMLValue(Of SFile)("Path", SFile.GetPath($"{GlobalPath.PathWithSeparator}{Site}"), _XML, n, XMLValue(Of SFile).ToFilePath)
|
_Path = New XMLValue(Of SFile)("Path",, _XML, n, XMLValue(Of SFile).ToFilePath)
|
||||||
_Path.ReplaceByValue("Path", {Site.ToString})
|
|
||||||
_XML.Remove(Site.ToString)
|
_XML.Remove(Site.ToString)
|
||||||
|
|
||||||
Temporary = New XMLValue(Of Boolean)
|
Temporary = New XMLValue(Of Boolean)
|
||||||
@@ -138,12 +158,8 @@ Namespace API.Base
|
|||||||
DownloadVideos.SetExtended("DownloadVideos", True, _XML, n)
|
DownloadVideos.SetExtended("DownloadVideos", True, _XML, n)
|
||||||
DownloadVideos.SetDefault(_Vids)
|
DownloadVideos.SetDefault(_Vids)
|
||||||
|
|
||||||
If Site = Sites.Twitter Then
|
GetUserMediaOnly = New XMLValue(Of Boolean)("GetUserMediaOnly", True, _XML, n)
|
||||||
GetUserMediaOnly = New XMLValue(Of Boolean)("GetUserMediaOnly", True, _XML, n)
|
_SavedPostsPath = New XMLValue(Of SFile)("SavedPostsPath",, _XML, n, XMLValue(Of SFile).ToFilePath)
|
||||||
GetUserMediaOnly.ReplaceByValue("TwitterDefaultGetUserMedia", n)
|
|
||||||
Else
|
|
||||||
GetUserMediaOnly = New XMLValue(Of Boolean)
|
|
||||||
End If
|
|
||||||
|
|
||||||
CreateProp(InstaHashUpdateRequired, Sites.Instagram, "InstaHashUpdateRequired", True, _XML, n)
|
CreateProp(InstaHashUpdateRequired, Sites.Instagram, "InstaHashUpdateRequired", True, _XML, n)
|
||||||
CreateProp(InstaHash, Sites.Instagram, "InstaHash", String.Empty, _XML, n)
|
CreateProp(InstaHash, Sites.Instagram, "InstaHash", String.Empty, _XML, n)
|
||||||
@@ -155,7 +171,7 @@ Namespace API.Base
|
|||||||
CreateProp(RequestsWaitTimerTaskCount, Sites.Instagram, "RequestsWaitTimerTaskCount", 1, _XML, n)
|
CreateProp(RequestsWaitTimerTaskCount, Sites.Instagram, "RequestsWaitTimerTaskCount", 1, _XML, n)
|
||||||
CreateProp(SleepTimerOnPostsLimit, Sites.Instagram, "SleepTimerOnPostsLimit", 60000, _XML, n)
|
CreateProp(SleepTimerOnPostsLimit, Sites.Instagram, "SleepTimerOnPostsLimit", 60000, _XML, n)
|
||||||
If Site = Sites.Instagram Then
|
If Site = Sites.Instagram Then
|
||||||
InstagramDownloadingErrorDate = New XMLValue(Of Date) With {.ToStringFunction = Function(ss, vv) AConvert(Of String)(vv, Nothing)}
|
InstagramDownloadingErrorDate = New XMLValue(Of Date) With {.ToStringFunction = Function(ss, vv) AConvert(Of String)(vv, AModes.Var, Nothing)}
|
||||||
InstagramDownloadingErrorDate.SetExtended("InstagramDownloadingErrorDate", Now.AddYears(-10), _XML, n)
|
InstagramDownloadingErrorDate.SetExtended("InstagramDownloadingErrorDate", Now.AddYears(-10), _XML, n)
|
||||||
Else
|
Else
|
||||||
InstagramDownloadingErrorDate = New XMLValue(Of Date)
|
InstagramDownloadingErrorDate = New XMLValue(Of Date)
|
||||||
@@ -176,10 +192,7 @@ Namespace API.Base
|
|||||||
End Sub
|
End Sub
|
||||||
Friend Function GatherInstaHash() As Boolean
|
Friend Function GatherInstaHash() As Boolean
|
||||||
Try
|
Try
|
||||||
Dim rs As New RegexStructure("=" & Chr(34) & "([^" & Chr(34) & "]+?ConsumerLibCommons[^" & Chr(34) & "]+?.js)" & Chr(34), 1) With {
|
Dim rs As New RParams("=""([^""]+?ConsumerLibCommons[^""]+?.js)""", Nothing, 1) With {.MatchTimeOut = 10}
|
||||||
.UseTimeOut = True,
|
|
||||||
.MatchTimeOutSeconds = 10
|
|
||||||
}
|
|
||||||
Dim r$ = Responser.GetResponse("https://instagram.com",, EDP.ThrowException)
|
Dim r$ = Responser.GetResponse("https://instagram.com",, EDP.ThrowException)
|
||||||
If Not r.IsEmptyString Then
|
If Not r.IsEmptyString Then
|
||||||
Dim hStr$ = RegexReplace(r, rs)
|
Dim hStr$ = RegexReplace(r, rs)
|
||||||
@@ -188,10 +201,7 @@ Namespace API.Base
|
|||||||
hStr = $"https://instagram.com/{hStr}"
|
hStr = $"https://instagram.com/{hStr}"
|
||||||
r = Responser.GetResponse(hStr,, EDP.ThrowException)
|
r = Responser.GetResponse(hStr,, EDP.ThrowException)
|
||||||
If Not r.IsEmptyString Then
|
If Not r.IsEmptyString Then
|
||||||
rs = New RegexStructure("generatePaginationActionCreators.+?.profilePosts.byUserId.get.+?queryId:.([\d\w\S]+?)" & Chr(34), 1) With {
|
rs = New RParams("generatePaginationActionCreators.+?.profilePosts.byUserId.get.+?queryId:.([\d\w\S]+?)""", Nothing, 1) With {.MatchTimeOut = 10}
|
||||||
.UseTimeOut = True,
|
|
||||||
.MatchTimeOutSeconds = 10
|
|
||||||
}
|
|
||||||
Dim h$ = RegexReplace(r, rs)
|
Dim h$ = RegexReplace(r, rs)
|
||||||
If Not h.IsEmptyString Then
|
If Not h.IsEmptyString Then
|
||||||
InstaHash.Value = h
|
InstaHash.Value = h
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
' This program is distributed in the hope that it will be useful,
|
' This program is distributed in the hope that it will be useful,
|
||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Imports PersonalUtilities.Forms.Toolbars
|
Imports PersonalUtilities.Forms.Toolbars
|
||||||
Imports System.IO
|
Imports System.IO
|
||||||
Imports System.Net
|
Imports System.Net
|
||||||
@@ -349,7 +350,7 @@ BlockNullPicture:
|
|||||||
Friend ReadOnly Property LVIKey As String Implements IUserData.LVIKey
|
Friend ReadOnly Property LVIKey As String Implements IUserData.LVIKey
|
||||||
Get
|
Get
|
||||||
If Not _IsCollection Then
|
If Not _IsCollection Then
|
||||||
Return $"{Site.ToString.ToUpper.Substring(0, 1)}_{Name}"
|
Return $"{Site.ToString.ToUpper}_{Name}"
|
||||||
Else
|
Else
|
||||||
Return $"CCCC_{CollectionName}"
|
Return $"CCCC_{CollectionName}"
|
||||||
End If
|
End If
|
||||||
@@ -470,7 +471,7 @@ BlockNullPicture:
|
|||||||
Temporary = x.Value(Name_Temporary).FromXML(Of Boolean)(False)
|
Temporary = x.Value(Name_Temporary).FromXML(Of Boolean)(False)
|
||||||
Favorite = x.Value(Name_Favorite).FromXML(Of Boolean)(False)
|
Favorite = x.Value(Name_Favorite).FromXML(Of Boolean)(False)
|
||||||
CreatedByChannel = x.Value(Name_CreatedByChannel).FromXML(Of Boolean)(False)
|
CreatedByChannel = x.Value(Name_CreatedByChannel).FromXML(Of Boolean)(False)
|
||||||
SeparateVideoFolder = AConvert(Of Boolean)(x.Value(Name_SeparateVideoFolder), Nothing)
|
SeparateVideoFolder = AConvert(Of Boolean)(x.Value(Name_SeparateVideoFolder), AModes.Var, Nothing)
|
||||||
ReadyForDownload = x.Value(Name_ReadyForDownload).FromXML(Of Boolean)(True)
|
ReadyForDownload = x.Value(Name_ReadyForDownload).FromXML(Of Boolean)(True)
|
||||||
DownloadImages = x.Value(Name_DownloadImages).FromXML(Of Boolean)(True)
|
DownloadImages = x.Value(Name_DownloadImages).FromXML(Of Boolean)(True)
|
||||||
DownloadVideos = x.Value(Name_DownloadVideos).FromXML(Of Boolean)(True)
|
DownloadVideos = x.Value(Name_DownloadVideos).FromXML(Of Boolean)(True)
|
||||||
@@ -603,6 +604,7 @@ BlockNullPicture:
|
|||||||
Case Sites.Reddit : URL = $"https://www.reddit.com/{IIf(IsChannel, "r", "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 Sites.Instagram : URL = $"https://www.instagram.com/{Name}/"
|
Case Sites.Instagram : URL = $"https://www.instagram.com/{Name}/"
|
||||||
|
Case Sites.RedGifs : URL = $"https://www.redgifs.com/users/{Name}/"
|
||||||
Case Else : MsgBoxE($"Site [{Site}] opening not implemented", MsgBoxStyle.Exclamation)
|
Case Else : MsgBoxE($"Site [{Site}] opening not implemented", MsgBoxStyle.Exclamation)
|
||||||
End Select
|
End Select
|
||||||
If Not URL.IsEmptyString Then Process.Start(URL)
|
If Not URL.IsEmptyString Then Process.Start(URL)
|
||||||
@@ -943,7 +945,7 @@ BlockNullPicture:
|
|||||||
End Sub
|
End Sub
|
||||||
Private Function CheckFile(ByVal f As SFile, ByRef List As IEnumerable(Of SFile)) As SFile
|
Private Function CheckFile(ByVal f As SFile, ByRef List As IEnumerable(Of SFile)) As SFile
|
||||||
If List.ListExists Then
|
If List.ListExists Then
|
||||||
Dim p As New RegexStructure(".+?\s{0,1}\((\d+)\)|.+",,,,,,, String.Empty, EDP.ReturnValue)
|
Dim p As RParams = RParams.DMS(".+?\s{0,1}\((\d+)\)|.+", 0, EDP.ReturnValue)
|
||||||
Dim i% = List.Where(Function(ff) CStr(RegexReplace(ff.Name, p)).Trim.ToLower = f.Name.Trim.ToLower).Count
|
Dim i% = List.Where(Function(ff) CStr(RegexReplace(ff.Name, p)).Trim.ToLower = f.Name.Trim.ToLower).Count
|
||||||
If i > 0 Then f.Name &= $" ({i + 1})"
|
If i > 0 Then f.Name &= $" ({i + 1})"
|
||||||
End If
|
End If
|
||||||
|
|||||||
@@ -7,16 +7,17 @@
|
|||||||
' This program is distributed in the hope that it will be useful,
|
' This program is distributed in the hope that it will be useful,
|
||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
||||||
Imports System.Net
|
Imports System.Net
|
||||||
Imports SCrawler.API.Imgur.Declarations
|
Imports SCrawler.API.Imgur.Declarations
|
||||||
Imports SCrawler.API.Base
|
Imports SCrawler.API.Base
|
||||||
Namespace API.Imgur.Declarations
|
|
||||||
Friend Module Imgur_Declarations
|
|
||||||
Friend ReadOnly PostRegex As New RegexStructure("/([\w\d]+?)(|\.[\w]{0,4})\Z", 1)
|
|
||||||
End Module
|
|
||||||
End Namespace
|
|
||||||
Namespace API.Imgur
|
Namespace API.Imgur
|
||||||
|
Namespace Declarations
|
||||||
|
Friend Module Imgur_Declarations
|
||||||
|
Friend ReadOnly PostRegex As RParams = RParams.DMS("/([\w\d]+?)(|\.[\w]{0,4})\Z", 1)
|
||||||
|
End Module
|
||||||
|
End Namespace
|
||||||
Friend NotInheritable Class Envir
|
Friend NotInheritable Class Envir
|
||||||
Private Sub New()
|
Private Sub New()
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -6,9 +6,10 @@
|
|||||||
'
|
'
|
||||||
' This program is distributed in the hope that it will be useful,
|
' This program is distributed in the hope that it will be useful,
|
||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Namespace API.Instagram
|
Namespace API.Instagram
|
||||||
Friend Module Declarations
|
Friend Module Declarations
|
||||||
Friend ReadOnly FilesPattern As New RegexStructure(".+?([^/\?]+?\.[\w\d]{3,4})(?=(\?|\Z))",,,, 1,,, String.Empty, EDP.ReturnValue)
|
Friend ReadOnly FilesPattern As RParams = RParams.DMS(".+?([^/\?]+?\.[\w\d]{3,4})(?=(\?|\Z))", 1, EDP.ReturnValue)
|
||||||
Friend ReadOnly Property DateProvider As New JsonDate
|
Friend ReadOnly Property DateProvider As New JsonDate
|
||||||
Friend Class JsonDate : Implements ICustomProvider
|
Friend Class JsonDate : Implements ICustomProvider
|
||||||
Friend Function Convert(ByVal Value As Object, ByVal DestinationType As Type, ByVal Provider As IFormatProvider,
|
Friend Function Convert(ByVal Value As Object, ByVal DestinationType As Type, ByVal Provider As IFormatProvider,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Imports System.Threading
|
|||||||
Imports PersonalUtilities.Forms.Toolbars
|
Imports PersonalUtilities.Forms.Toolbars
|
||||||
Namespace API.Instagram
|
Namespace API.Instagram
|
||||||
Friend NotInheritable Class ProfileSaved
|
Friend NotInheritable Class ProfileSaved
|
||||||
Friend Shared ReadOnly Property DataPath As SFile = $"{Settings(Sites.Instagram).Path.PathNoSeparator}\!Saved\"
|
Friend Shared ReadOnly Property DataPath As SFile = Settings(Sites.Instagram).SavedPostsPath
|
||||||
Private Sub New()
|
Private Sub New()
|
||||||
End Sub
|
End Sub
|
||||||
Friend Shared Sub Download(ByRef Bar As MyProgress, ByVal Token As CancellationToken)
|
Friend Shared Sub Download(ByRef Bar As MyProgress, ByVal Token As CancellationToken)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
Imports PersonalUtilities.Functions.Messaging
|
Imports PersonalUtilities.Functions.Messaging
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
||||||
Imports PersonalUtilities.Forms.Toolbars
|
Imports PersonalUtilities.Forms.Toolbars
|
||||||
Imports SCrawler.API.Base
|
Imports SCrawler.API.Base
|
||||||
@@ -414,7 +415,7 @@ Namespace API.Instagram
|
|||||||
Friend Shared Function GetVideoInfo(ByVal URL As String) As IEnumerable(Of UserMedia)
|
Friend Shared Function GetVideoInfo(ByVal URL As String) As IEnumerable(Of UserMedia)
|
||||||
Try
|
Try
|
||||||
If Not URL.IsEmptyString AndAlso URL.Contains("instagram.com") Then
|
If Not URL.IsEmptyString AndAlso URL.Contains("instagram.com") Then
|
||||||
Dim PID$ = RegexReplace(URL, New RegexStructure(".*?instagram.com/p/([_\w\d]+)", 1))
|
Dim PID$ = RegexReplace(URL, RParams.DMS(".*?instagram.com/p/([_\w\d]+)", 1))
|
||||||
If Not PID.IsEmptyString Then
|
If Not PID.IsEmptyString Then
|
||||||
Using t As New UserData
|
Using t As New UserData
|
||||||
t.Responser = New PersonalUtilities.Tools.WEB.Response
|
t.Responser = New PersonalUtilities.Tools.WEB.Response
|
||||||
|
|||||||
@@ -7,13 +7,14 @@
|
|||||||
' This program is distributed in the hope that it will be useful,
|
' This program is distributed in the hope that it will be useful,
|
||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
Imports PersonalUtilities.Functions.XML.Base
|
Imports PersonalUtilities.Functions.XML.Base
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Namespace API.Reddit
|
Namespace API.Reddit
|
||||||
Friend Module Declarations
|
Friend Module Declarations
|
||||||
Friend ReadOnly JsonNodesJson() As NodeParams = {New NodeParams("posts", True, True, True, True, 3)}
|
Friend ReadOnly JsonNodesJson() As NodeParams = {New NodeParams("posts", True, True, True, True, 3)}
|
||||||
Friend ReadOnly ChannelJsonNodes() As NodeParams = {New NodeParams("data", True, True, True, True, 1),
|
Friend ReadOnly ChannelJsonNodes() As NodeParams = {New NodeParams("data", True, True, True, True, 1),
|
||||||
New NodeParams("children", True, True, True)}
|
New NodeParams("children", True, True, True)}
|
||||||
Friend ReadOnly UrlBasePattern As New RegexStructure("(?<=/)([^/]+?\.[\w]{3,4})(?=(\?|\Z))", True, False)
|
Friend ReadOnly UrlBasePattern As RParams = RParams.DM("(?<=/)([^/]+?\.[\w]{3,4})(?=(\?|\Z))", 0)
|
||||||
Friend ReadOnly VideoRegEx As New RegexStructure("http.{0,1}://[^" & Chr(34) & "]+?mp4", True, False)
|
Friend ReadOnly VideoRegEx As RParams = RParams.DM("http.{0,1}://[^" & Chr(34) & "]+?mp4", 0)
|
||||||
Friend ReadOnly DateProvider As New JsonDate
|
Friend ReadOnly DateProvider As New JsonDate
|
||||||
Friend ReadOnly DateProviderChannel As New JsonDateChannel
|
Friend ReadOnly DateProviderChannel As New JsonDateChannel
|
||||||
Private ReadOnly EUR_PROVIDER As New ANumbers(ANumbers.Cultures.EUR)
|
Private ReadOnly EUR_PROVIDER As New ANumbers(ANumbers.Cultures.EUR)
|
||||||
|
|||||||
@@ -9,26 +9,25 @@
|
|||||||
Imports System.Net
|
Imports System.Net
|
||||||
Imports SCrawler.API.Reddit.M3U8_Declarations
|
Imports SCrawler.API.Reddit.M3U8_Declarations
|
||||||
Imports PersonalUtilities.Tools.WEB
|
Imports PersonalUtilities.Tools.WEB
|
||||||
Namespace API.Reddit.M3U8_Declarations
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Friend Module M3U8_Declarations
|
|
||||||
Friend ReadOnly BaseUrlPattern As New RegexStructure("([htps:/]{7,8}.+?/.+?)(?=/)", True, False,,,,,, EDP.ReturnValue)
|
|
||||||
Friend ReadOnly PlayListRegEx_1 As New RegexStructure("(#EXT-X-STREAM-INF)(.+)(RESOLUTION=)(\d+)(.+?[\r\n]{1,2})(.+?)([\r\n]{1,2})", True, False,,,
|
|
||||||
RegexReturn.List,, New List(Of String),
|
|
||||||
New ErrorsDescriber(False, False, True, New List(Of String)))
|
|
||||||
Friend ReadOnly PlayListRegEx_2 As New RegexStructure("(?<=#EXT-X-BYTERANGE.+?[\r\n]{1,2})(.+)(?=[\r\n]{0,2})", True, False,,, RegexReturn.List,,
|
|
||||||
New List(Of String),
|
|
||||||
New ErrorsDescriber(False, False, True, New List(Of String)))
|
|
||||||
Friend ReadOnly DPED As New ErrorsDescriber(EDP.SendInLog + EDP.ReturnValue)
|
|
||||||
End Module
|
|
||||||
End Namespace
|
|
||||||
Namespace API.Reddit
|
Namespace API.Reddit
|
||||||
|
Namespace M3U8_Declarations
|
||||||
|
Friend Module M3U8_Declarations
|
||||||
|
Friend ReadOnly BaseUrlPattern As RParams = RParams.DM("([htps:/]{7,8}.+?/.+?)(?=/)", 0, EDP.ReturnValue)
|
||||||
|
Friend ReadOnly PlayListRegEx_1 As RParams = RParams.DM("(#EXT-X-STREAM-INF)(.+)(RESOLUTION=)(\d+)(.+?[\r\n]{1,2})(.+?)([\r\n]{1,2})", 0,
|
||||||
|
RegexReturn.List, EDP.SendInLog, EDP.ReturnValue)
|
||||||
|
Friend ReadOnly PlayListRegEx_2 As RParams = RParams.DM("(?<=#EXT-X-BYTERANGE.+?[\r\n]{1,2})(.+)(?=[\r\n]{0,2})", 0,
|
||||||
|
RegexReturn.List, EDP.SendInLog, EDP.ReturnValue)
|
||||||
|
Friend ReadOnly DPED As New ErrorsDescriber(EDP.SendInLog + EDP.ReturnValue)
|
||||||
|
End Module
|
||||||
|
End Namespace
|
||||||
Friend NotInheritable Class M3U8
|
Friend NotInheritable Class M3U8
|
||||||
Private Sub New()
|
Private Sub New()
|
||||||
End Sub
|
End Sub
|
||||||
Private Structure Resolution : Implements IRegExCreator, IComparable(Of Resolution)
|
Private Structure Resolution : Implements IRegExCreator, IComparable(Of Resolution)
|
||||||
Friend File As String
|
Friend File As String
|
||||||
Friend Resolution As Integer
|
Friend Resolution As Integer
|
||||||
Friend Function CreateFromArray(ByVal ParamsArray() As String) As IRegExCreator Implements IRegExCreator.CreateFromArray
|
Friend Function CreateFromArray(ByVal ParamsArray() As String) As Object Implements IRegExCreator.CreateFromArray
|
||||||
If ParamsArray.ArrayExists Then
|
If ParamsArray.ArrayExists Then
|
||||||
File = ParamsArray(0)
|
File = ParamsArray(0)
|
||||||
If ParamsArray.Length > 1 Then Resolution = AConvert(Of Integer)(ParamsArray(1), 0)
|
If ParamsArray.Length > 1 Then Resolution = AConvert(Of Integer)(ParamsArray(1), 0)
|
||||||
@@ -45,7 +44,7 @@ Namespace API.Reddit
|
|||||||
Using w As New WebClient
|
Using w As New WebClient
|
||||||
Dim r$ = w.DownloadString(PlayListURL)
|
Dim r$ = w.DownloadString(PlayListURL)
|
||||||
If Not r.IsEmptyString Then
|
If Not r.IsEmptyString Then
|
||||||
Dim l As List(Of Resolution) = RegexFields(Of Resolution)(r, {PlayListRegEx_1}, {6, 4})
|
Dim l As List(Of Resolution) = FNF.RegexFields(Of Resolution)(r, {PlayListRegEx_1}, {6, 4})
|
||||||
If l.ListExists Then
|
If l.ListExists Then
|
||||||
l.Sort()
|
l.Sort()
|
||||||
Dim pls$ = $"{BaseUrl}/{l.First.File}"
|
Dim pls$ = $"{BaseUrl}/{l.First.File}"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Imports System.Threading
|
|||||||
Imports PersonalUtilities.Forms.Toolbars
|
Imports PersonalUtilities.Forms.Toolbars
|
||||||
Namespace API.Reddit
|
Namespace API.Reddit
|
||||||
Friend NotInheritable Class ProfileSaved
|
Friend NotInheritable Class ProfileSaved
|
||||||
Friend Shared ReadOnly Property DataPath As SFile = $"{Settings(Sites.Reddit).Path.PathNoSeparator}\!Saved\"
|
Friend Shared ReadOnly Property DataPath As SFile = Settings(Sites.Reddit).SavedPostsPath
|
||||||
Private Sub New()
|
Private Sub New()
|
||||||
End Sub
|
End Sub
|
||||||
Friend Shared Sub Download(ByRef Bar As MyProgress, ByVal Token As CancellationToken)
|
Friend Shared Sub Download(ByRef Bar As MyProgress, ByVal Token As CancellationToken)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
' This program is distributed in the hope that it will be useful,
|
' This program is distributed in the hope that it will be useful,
|
||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Imports PersonalUtilities.Tools.ImageRenderer
|
Imports PersonalUtilities.Tools.ImageRenderer
|
||||||
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
||||||
Imports System.Net
|
Imports System.Net
|
||||||
@@ -54,12 +55,14 @@ Namespace API.Reddit
|
|||||||
Private Sub New()
|
Private Sub New()
|
||||||
ChannelPostsNames = New List(Of String)
|
ChannelPostsNames = New List(Of String)
|
||||||
_ExistsUsersNames = New List(Of String)
|
_ExistsUsersNames = New List(Of String)
|
||||||
|
_CrossPosts = New List(Of String)
|
||||||
End Sub
|
End Sub
|
||||||
''' <summary>Default initializer</summary>
|
''' <summary>Default initializer</summary>
|
||||||
Friend Sub New(ByVal u As UserInfo, Optional ByVal _LoadUserInformation As Boolean = True, Optional ByVal InvokeImageHandler As Boolean = True)
|
Friend Sub New(ByVal u As UserInfo, Optional ByVal _LoadUserInformation As Boolean = True, Optional ByVal InvokeImageHandler As Boolean = True)
|
||||||
MyBase.New(InvokeImageHandler)
|
MyBase.New(InvokeImageHandler)
|
||||||
ChannelPostsNames = New List(Of String)
|
ChannelPostsNames = New List(Of String)
|
||||||
_ExistsUsersNames = New List(Of String)
|
_ExistsUsersNames = New List(Of String)
|
||||||
|
_CrossPosts = New List(Of String)
|
||||||
User = u
|
User = u
|
||||||
If _LoadUserInformation Then LoadUserInformation()
|
If _LoadUserInformation Then LoadUserInformation()
|
||||||
End Sub
|
End Sub
|
||||||
@@ -70,6 +73,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)
|
||||||
|
_CrossPosts.Clear()
|
||||||
If Not IsSavedPosts AndAlso (IsChannel AndAlso Not ChannelInfo.IsRegularChannel) Then
|
If Not IsSavedPosts AndAlso (IsChannel AndAlso Not ChannelInfo.IsRegularChannel) Then
|
||||||
If Not Responser Is Nothing Then Responser.Dispose()
|
If Not Responser Is Nothing Then Responser.Dispose()
|
||||||
Responser = New PersonalUtilities.Tools.WEB.Response
|
Responser = New PersonalUtilities.Tools.WEB.Response
|
||||||
@@ -108,10 +112,13 @@ Namespace API.Reddit
|
|||||||
#End Region
|
#End Region
|
||||||
#Region "Download Functions (User, Channel)"
|
#Region "Download Functions (User, Channel)"
|
||||||
Private _TotalPostsDownloaded As Integer = 0
|
Private _TotalPostsDownloaded As Integer = 0
|
||||||
|
Private ReadOnly _CrossPosts As List(Of String)
|
||||||
Private Sub DownloadDataUser(ByVal POST As String, ByVal Token As CancellationToken)
|
Private Sub DownloadDataUser(ByVal POST As String, ByVal Token As CancellationToken)
|
||||||
|
Const CPRI$ = "crosspostRootId"
|
||||||
|
Const CPPI$ = "crosspostParentId"
|
||||||
Dim URL$ = String.Empty
|
Dim URL$ = String.Empty
|
||||||
Try
|
Try
|
||||||
Dim PostID$ = String.Empty
|
Dim PostID$ = String.Empty, PostTmp$ = String.Empty
|
||||||
Dim PostDate$
|
Dim PostDate$
|
||||||
Dim n As EContainer, nn As EContainer, s As EContainer
|
Dim n As EContainer, nn As EContainer, s As EContainer
|
||||||
Dim NewPostDetected As Boolean = False
|
Dim NewPostDetected As Boolean = False
|
||||||
@@ -120,8 +127,10 @@ Namespace API.Reddit
|
|||||||
Dim added As Boolean
|
Dim added As Boolean
|
||||||
Dim __ItemType$
|
Dim __ItemType$
|
||||||
Dim tmpType As UTypes
|
Dim tmpType As UTypes
|
||||||
Dim CheckNode As Predicate(Of EContainer) = Function(e) e("author").XmlIfNothingValue("/").ToLower.Equals(Name.ToLower)
|
Dim IsCrossPost As Predicate(Of EContainer) = Function(e) Not (e.Value(CPRI).IsEmptyString And e.Value(CPPI).IsEmptyString)
|
||||||
|
Dim CheckNode As Predicate(Of EContainer) = Function(e) Not ParseUserMediaOnly OrElse e("author").XmlIfNothingValue("/").ToLower.Equals(Name.ToLower)
|
||||||
Dim UPicType As Func(Of String, UTypes) = Function(input) IIf(input = "image", UTypes.Picture, UTypes.GIF)
|
Dim UPicType As Func(Of String, UTypes) = Function(input) IIf(input = "image", UTypes.Picture, UTypes.GIF)
|
||||||
|
Dim _PostID As Func(Of String) = Function() IIf(PostTmp.IsEmptyString, PostID, PostTmp)
|
||||||
|
|
||||||
URL = $"https://gateway.reddit.com/desktopapi/v1/user/{Name}/posts?rtj=only&allow_quarantined=true&allow_over18=1&include=identity&after={POST}&dist=25&sort=new&t=all&layout=classic"
|
URL = $"https://gateway.reddit.com/desktopapi/v1/user/{Name}/posts?rtj=only&allow_quarantined=true&allow_over18=1&include=identity&after={POST}&dist=25&sort=new&t=all&layout=classic"
|
||||||
ThrowAny(Token)
|
ThrowAny(Token)
|
||||||
@@ -134,39 +143,51 @@ Namespace API.Reddit
|
|||||||
For Each nn In n
|
For Each nn In n
|
||||||
ThrowAny(Token)
|
ThrowAny(Token)
|
||||||
If nn.Count > 0 Then
|
If nn.Count > 0 Then
|
||||||
PostID = nn.Name
|
|
||||||
If PostID.IsEmptyString AndAlso nn.Contains("id") Then PostID = nn("id").Value
|
|
||||||
If nn.Contains("created") Then PostDate = nn("created").Value Else PostDate = String.Empty
|
|
||||||
If Not _TempPostsList.Contains(PostID) Then
|
|
||||||
NewPostDetected = True
|
|
||||||
_TempPostsList.Add(PostID)
|
|
||||||
Else
|
|
||||||
ExistsDetected = True
|
|
||||||
Continue For
|
|
||||||
End If
|
|
||||||
|
|
||||||
If CheckNode(nn) Then
|
If CheckNode(nn) Then
|
||||||
|
|
||||||
|
'Obtain post ID
|
||||||
|
PostTmp = nn.Name
|
||||||
|
If PostTmp.IsEmptyString Then PostTmp = nn.Value("id")
|
||||||
|
If PostTmp.IsEmptyString Then Continue For
|
||||||
|
'Check for CrossPost
|
||||||
|
If IsCrossPost(nn) Then
|
||||||
|
_CrossPosts.ListAddList({nn.Value(CPRI), nn.Value(CPPI)}, LNC)
|
||||||
|
Continue For
|
||||||
|
Else
|
||||||
|
If Not _CrossPosts.Contains(PostTmp) Then PostID = PostTmp : PostTmp = String.Empty
|
||||||
|
End If
|
||||||
|
|
||||||
|
'Download decision
|
||||||
|
If Not _TempPostsList.Contains(_PostID()) Then
|
||||||
|
NewPostDetected = True
|
||||||
|
_TempPostsList.Add(_PostID())
|
||||||
|
Else
|
||||||
|
If Not _CrossPosts.Contains(_PostID()) Then ExistsDetected = True
|
||||||
|
Continue For
|
||||||
|
End If
|
||||||
|
If nn.Contains("created") Then PostDate = nn("created").Value Else PostDate = String.Empty
|
||||||
|
|
||||||
_ItemsBefore = _TempMediaList.Count
|
_ItemsBefore = _TempMediaList.Count
|
||||||
added = True
|
added = True
|
||||||
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)
|
||||||
ElseIf Not CreateImgurMedia(s.XmlIfNothingValue, PostID, PostDate,, IsChannel) Then
|
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
|
||||||
Case "gallery" : If Not DownloadGallery(s, PostID, PostDate) Then added = False
|
Case "gallery" : If Not DownloadGallery(s, _PostID(), PostDate) Then added = False
|
||||||
Case "image", "gifvideo"
|
Case "image", "gifvideo"
|
||||||
If s.Contains("content") Then
|
If s.Contains("content") Then
|
||||||
_TempMediaList.ListAddValue(MediaFromData(UPicType(__ItemType), s.Value("content"),
|
_TempMediaList.ListAddValue(MediaFromData(UPicType(__ItemType), s.Value("content"),
|
||||||
PostID, PostDate,, IsChannel), LNC)
|
_PostID(), PostDate,, IsChannel), LNC)
|
||||||
Else
|
Else
|
||||||
added = False
|
added = False
|
||||||
End If
|
End If
|
||||||
Case "video"
|
Case "video"
|
||||||
If Settings.UseM3U8 AndAlso s("hlsUrl").XmlIfNothingValue("/").ToLower.Contains("m3u8") Then
|
If Settings.UseM3U8 AndAlso s("hlsUrl").XmlIfNothingValue("/").ToLower.Contains("m3u8") Then
|
||||||
_TempMediaList.ListAddValue(MediaFromData(UTypes.m3u8, s.Value("hlsUrl"),
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.m3u8, s.Value("hlsUrl"),
|
||||||
PostID, PostDate,, IsChannel), LNC)
|
_PostID(), PostDate,, IsChannel), LNC)
|
||||||
Else
|
Else
|
||||||
added = False
|
added = False
|
||||||
End If
|
End If
|
||||||
@@ -186,7 +207,7 @@ Namespace API.Reddit
|
|||||||
End Select
|
End Select
|
||||||
End With
|
End With
|
||||||
If Not tmpType = UTypes.Undefined Then
|
If Not tmpType = UTypes.Undefined Then
|
||||||
_TempMediaList.ListAddValue(MediaFromData(tmpType, s.Value, PostID, PostDate,, IsChannel), LNC)
|
_TempMediaList.ListAddValue(MediaFromData(tmpType, s.Value, _PostID(), PostDate,, IsChannel), LNC)
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
@@ -263,6 +284,18 @@ 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 Not s.Value({"media", "reddit_video"}, "fallback_url").IsEmptyString Then
|
||||||
|
tmpUrl = s.Value({"media", "reddit_video"}, "fallback_url")
|
||||||
|
If SaveToCache Then
|
||||||
|
tmpUrl = s.Value("thumbnail")
|
||||||
|
If Not tmpUrl.IsEmptyString Then
|
||||||
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.Picture, tmpUrl, PostID, PostDate, _UserID, IsChannel), LNC)
|
||||||
|
_TotalPostsDownloaded += 1
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
_TempMediaList.ListAddValue(MediaFromData(UTypes.VideoPre + UTypes.m3u8, tmpUrl, PostID, PostDate, _UserID, IsChannel), LNC)
|
||||||
|
_TotalPostsDownloaded += 1
|
||||||
|
End If
|
||||||
ElseIf CreateImgurMedia(tmpUrl, PostID, PostDate, _UserID, IsChannel) Then
|
ElseIf CreateImgurMedia(tmpUrl, PostID, PostDate, _UserID, IsChannel) Then
|
||||||
_TotalPostsDownloaded += 1
|
_TotalPostsDownloaded += 1
|
||||||
ElseIf s.Item("media_metadata").XmlIfNothing.Count > 0 Then
|
ElseIf s.Item("media_metadata").XmlIfNothing.Count > 0 Then
|
||||||
@@ -351,15 +384,16 @@ Namespace API.Reddit
|
|||||||
Protected Overrides Sub ReparseVideo(ByVal Token As CancellationToken)
|
Protected Overrides Sub ReparseVideo(ByVal Token As CancellationToken)
|
||||||
Try
|
Try
|
||||||
ThrowAny(Token)
|
ThrowAny(Token)
|
||||||
If _TempMediaList.Count > 0 AndAlso _TempMediaList.Exists(Function(p) p.Type = UTypes.VideoPre) Then
|
Const v2 As UTypes = UTypes.VideoPre + UTypes.m3u8
|
||||||
|
If _TempMediaList.Count > 0 AndAlso _TempMediaList.Exists(Function(p) p.Type = UTypes.VideoPre Or p.Type = v2) Then
|
||||||
Dim r$, v$
|
Dim r$, v$
|
||||||
Dim e As New ErrorsDescriber(EDP.ReturnValue)
|
Dim e As New ErrorsDescriber(EDP.ReturnValue)
|
||||||
Dim m As UserMedia
|
Dim m As UserMedia
|
||||||
For i% = _TempMediaList.Count - 1 To 0 Step -1
|
For i% = _TempMediaList.Count - 1 To 0 Step -1
|
||||||
ThrowAny(Token)
|
ThrowAny(Token)
|
||||||
If _TempMediaList(i).Type = UTypes.VideoPre Then
|
If _TempMediaList(i).Type = UTypes.VideoPre Or _TempMediaList(i).Type = v2 Then
|
||||||
m = _TempMediaList(i)
|
m = _TempMediaList(i)
|
||||||
r = Responser.GetResponse(m.URL,, e)
|
If _TempMediaList(i).Type = UTypes.VideoPre Then r = Responser.GetResponse(m.URL,, e) Else r = m.URL
|
||||||
_TempMediaList(i) = New UserMedia
|
_TempMediaList(i) = New UserMedia
|
||||||
If Not r.IsEmptyString Then
|
If Not r.IsEmptyString Then
|
||||||
v = RegexReplace(r, VideoRegEx)
|
v = RegexReplace(r, VideoRegEx)
|
||||||
@@ -421,6 +455,8 @@ Namespace API.Reddit
|
|||||||
#End Region
|
#End Region
|
||||||
Protected Overrides Sub DownloadContent(ByVal Token As CancellationToken)
|
Protected Overrides Sub DownloadContent(ByVal Token As CancellationToken)
|
||||||
Try
|
Try
|
||||||
|
Const _RFN$ = "RedditVideo"
|
||||||
|
Const RFN$ = _RFN & "{0}"
|
||||||
Dim i%
|
Dim i%
|
||||||
Dim dCount% = 0, dTotal% = 0
|
Dim dCount% = 0, dTotal% = 0
|
||||||
ThrowAny(Token)
|
ThrowAny(Token)
|
||||||
@@ -434,6 +470,10 @@ Namespace API.Reddit
|
|||||||
Else
|
Else
|
||||||
MyDir = MyFile.CutPath.PathNoSeparator
|
MyDir = MyFile.CutPath.PathNoSeparator
|
||||||
End If
|
End If
|
||||||
|
Dim StartRFN% = 0
|
||||||
|
If _ContentNew.Exists(Function(c) c.Type = UTypes.Video And c.URL.Contains("redd.it")) Then
|
||||||
|
StartRFN = SFile.Indexed_GetMaxIndex($"{MyDir}\{IIf(SeparateVideoFolderF, "Video\", String.Empty)}{_RFN}.mp4",, New SFileNumbers(_RFN, String.Empty), EDP.ReturnValue)
|
||||||
|
End If
|
||||||
Dim HashList As New List(Of String)
|
Dim HashList As New List(Of String)
|
||||||
If _ContentList.Count > 0 Then HashList.ListAddList((From h In _ContentList Where Not h.MD5.IsEmptyString Select h.MD5), LNC)
|
If _ContentList.Count > 0 Then HashList.ListAddList((From h In _ContentList Where Not h.MD5.IsEmptyString Select h.MD5), LNC)
|
||||||
Dim f As SFile
|
Dim f As SFile
|
||||||
@@ -531,6 +571,10 @@ Namespace API.Reddit
|
|||||||
Try
|
Try
|
||||||
If (v.Type = UTypes.Video Or v.Type = UTypes.m3u8 Or (ImgurUrls.Count > 0 AndAlso f.Extension = "mp4")) And
|
If (v.Type = UTypes.Video Or v.Type = UTypes.m3u8 Or (ImgurUrls.Count > 0 AndAlso f.Extension = "mp4")) And
|
||||||
vsf Then f.Path = $"{f.PathWithSeparator}Video"
|
vsf Then f.Path = $"{f.PathWithSeparator}Video"
|
||||||
|
If v.Type = UTypes.Video AndAlso v.URL.Contains("redd.it") Then
|
||||||
|
StartRFN += 1
|
||||||
|
f.Name = String.Format(RFN, StartRFN)
|
||||||
|
End If
|
||||||
If v.Type = UTypes.m3u8 Then
|
If v.Type = UTypes.m3u8 Then
|
||||||
f = M3U8.Download(v.URL, f)
|
f = M3U8.Download(v.URL, f)
|
||||||
ElseIf ImgurUrls.Count > 0 Then
|
ElseIf ImgurUrls.Count > 0 Then
|
||||||
@@ -596,7 +640,7 @@ Namespace API.Reddit
|
|||||||
Return 1
|
Return 1
|
||||||
End Function
|
End Function
|
||||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||||
If Not disposedValue And disposing Then ChannelPostsNames.Clear() : _ExistsUsersNames.Clear()
|
If Not disposedValue And disposing Then ChannelPostsNames.Clear() : _ExistsUsersNames.Clear() : _CrossPosts.Clear()
|
||||||
MyBase.Dispose(disposing)
|
MyBase.Dispose(disposing)
|
||||||
End Sub
|
End Sub
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
' This program is distributed in the hope that it will be useful,
|
' This program is distributed in the hope that it will be useful,
|
||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
||||||
Imports System.Threading
|
Imports System.Threading
|
||||||
Imports System.Net
|
Imports System.Net
|
||||||
|
|||||||
@@ -7,11 +7,12 @@
|
|||||||
' This program is distributed in the hope that it will be useful,
|
' This program is distributed in the hope that it will be useful,
|
||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
Imports PersonalUtilities.Functions.XML.Base
|
Imports PersonalUtilities.Functions.XML.Base
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Namespace API.Twitter
|
Namespace API.Twitter
|
||||||
Friend Module Declarations
|
Friend Module Declarations
|
||||||
Friend DateProvider As New ADateTime(ADateTime.Formats.BaseDateTime)
|
Friend DateProvider As New ADateTime(ADateTime.Formats.BaseDateTime)
|
||||||
Friend ReadOnly VideoNode As NodeParams() = {New NodeParams("video_info", True, True, True, True, 10)}
|
Friend ReadOnly VideoNode As NodeParams() = {New NodeParams("video_info", True, True, True, True, 10)}
|
||||||
Friend ReadOnly VideoSizeRegEx As New RegexStructure("\d+x(\d+)",,,, 1,,, String.Empty, EDP.ReturnValue)
|
Friend ReadOnly VideoSizeRegEx As RParams = RParams.DMS("\d+x(\d+)", 1, EDP.ReturnValue)
|
||||||
Friend ReadOnly UserIdRegEx As New RegexStructure("user_id.:.(\d+)",,,, 1,,, String.Empty, EDP.ReturnValue)
|
Friend ReadOnly UserIdRegEx As RParams = RParams.DMS("user_id.:.(\d+)", 1, EDP.ReturnValue)
|
||||||
End Module
|
End Module
|
||||||
End Namespace
|
End Namespace
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
Imports PersonalUtilities.Tools.WEB
|
Imports PersonalUtilities.Tools.WEB
|
||||||
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
Imports PersonalUtilities.Tools.WebDocuments.JSON
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Imports System.Net
|
Imports System.Net
|
||||||
Imports System.Threading
|
Imports System.Threading
|
||||||
Imports SCrawler.API.Base
|
Imports SCrawler.API.Base
|
||||||
@@ -101,7 +102,7 @@ Namespace API.Twitter
|
|||||||
Friend Shared Function GetVideoInfo(ByVal URL As String) As IEnumerable(Of UserMedia)
|
Friend Shared Function GetVideoInfo(ByVal URL As String) As IEnumerable(Of UserMedia)
|
||||||
Try
|
Try
|
||||||
If URL.Contains("twitter") Then
|
If URL.Contains("twitter") Then
|
||||||
Dim PostID$ = RegexReplace(URL, New RegexStructure("(?<=/)\d+", True, False,,,,, String.Empty))
|
Dim PostID$ = RegexReplace(URL, RParams.DM("(?<=/)\d+", 0))
|
||||||
If Not PostID.IsEmptyString Then
|
If Not PostID.IsEmptyString Then
|
||||||
Dim r$ = DirectCast(Settings(Sites.Twitter).Responser.Copy(), Response).
|
Dim r$ = DirectCast(Settings(Sites.Twitter).Responser.Copy(), Response).
|
||||||
GetResponse($"https://api.twitter.com/1.1/statuses/show.json?id={PostID}",, EDP.ReturnValue)
|
GetResponse($"https://api.twitter.com/1.1/statuses/show.json?id={PostID}",, EDP.ReturnValue)
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ Friend Class ChannelViewForm : Implements IChannelLimits
|
|||||||
Private Property DownloadLimitCount As Integer? Implements IChannelLimits.DownloadLimitCount
|
Private Property DownloadLimitCount As Integer? Implements IChannelLimits.DownloadLimitCount
|
||||||
Get
|
Get
|
||||||
If OPT_LIMITS_COUNT.Checked Then
|
If OPT_LIMITS_COUNT.Checked Then
|
||||||
Return AConvert(Of Integer)(TXT_LIMIT.Text, Nothing)
|
Return AConvert(Of Integer)(TXT_LIMIT.Text, AModes.Var, Nothing)
|
||||||
Else
|
Else
|
||||||
Return Nothing
|
Return Nothing
|
||||||
End If
|
End If
|
||||||
@@ -107,7 +107,7 @@ Friend Class ChannelViewForm : Implements IChannelLimits
|
|||||||
Private Property DownloadLimitDate As Date? Implements IChannelLimits.DownloadLimitDate
|
Private Property DownloadLimitDate As Date? Implements IChannelLimits.DownloadLimitDate
|
||||||
Get
|
Get
|
||||||
If OPT_LIMITS_DATE.Checked Then
|
If OPT_LIMITS_DATE.Checked Then
|
||||||
Return AConvert(Of Date)(TXT_LIMIT.Value, Nothing)
|
Return AConvert(Of Date)(TXT_LIMIT.Value, AModes.Var, Nothing)
|
||||||
Else
|
Else
|
||||||
Return Nothing
|
Return Nothing
|
||||||
End If
|
End If
|
||||||
|
|||||||
139
SCrawler/Editors/GlobalSettingsForm.Designer.vb
generated
139
SCrawler/Editors/GlobalSettingsForm.Designer.vb
generated
@@ -35,7 +35,11 @@
|
|||||||
Dim TAB_DEFS_CHANNELS As System.Windows.Forms.TabPage
|
Dim TAB_DEFS_CHANNELS As System.Windows.Forms.TabPage
|
||||||
Dim TP_CHANNELS As System.Windows.Forms.TableLayoutPanel
|
Dim TP_CHANNELS As System.Windows.Forms.TableLayoutPanel
|
||||||
Dim TAB_DEFS_REDDIT As System.Windows.Forms.TabPage
|
Dim TAB_DEFS_REDDIT As System.Windows.Forms.TabPage
|
||||||
|
Dim ActionButton7 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||||
|
Dim ActionButton8 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||||
Dim TAB_DEFS_TWITTER As System.Windows.Forms.TabPage
|
Dim TAB_DEFS_TWITTER As System.Windows.Forms.TabPage
|
||||||
|
Dim ActionButton9 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||||
|
Dim ActionButton10 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
|
||||||
Me.TXT_GLOBAL_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
Me.TXT_GLOBAL_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
Me.TXT_IMAGE_LARGE = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
Me.TXT_IMAGE_LARGE = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
Me.TXT_IMAGE_SMALL = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
Me.TXT_IMAGE_SMALL = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
@@ -53,6 +57,7 @@
|
|||||||
Me.OPT_FILE_DATE_END = New System.Windows.Forms.RadioButton()
|
Me.OPT_FILE_DATE_END = New System.Windows.Forms.RadioButton()
|
||||||
Me.CH_EXIT_CONFIRM = New System.Windows.Forms.CheckBox()
|
Me.CH_EXIT_CONFIRM = New System.Windows.Forms.CheckBox()
|
||||||
Me.CH_CLOSE_TO_TRAY = New System.Windows.Forms.CheckBox()
|
Me.CH_CLOSE_TO_TRAY = New System.Windows.Forms.CheckBox()
|
||||||
|
Me.CH_SHOW_NOTIFY = New System.Windows.Forms.CheckBox()
|
||||||
Me.CH_COPY_CHANNEL_USER_IMAGE = New System.Windows.Forms.CheckBox()
|
Me.CH_COPY_CHANNEL_USER_IMAGE = New System.Windows.Forms.CheckBox()
|
||||||
Me.CH_DEF_TEMP = New System.Windows.Forms.CheckBox()
|
Me.CH_DEF_TEMP = New System.Windows.Forms.CheckBox()
|
||||||
Me.CH_DOWN_IMAGES = New System.Windows.Forms.CheckBox()
|
Me.CH_DOWN_IMAGES = New System.Windows.Forms.CheckBox()
|
||||||
@@ -64,6 +69,8 @@
|
|||||||
Me.TXT_CHANNEL_USER_POST_LIMIT = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
Me.TXT_CHANNEL_USER_POST_LIMIT = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
Me.DEFS_REDDIT = New SCrawler.Editors.SiteDefaults()
|
Me.DEFS_REDDIT = New SCrawler.Editors.SiteDefaults()
|
||||||
Me.TXT_REDDIT_SAVED_POSTS_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
Me.TXT_REDDIT_SAVED_POSTS_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
|
Me.CH_REDDIT_USER_MEDIA = New System.Windows.Forms.CheckBox()
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
Me.DEFS_TWITTER = New SCrawler.Editors.SiteDefaults()
|
Me.DEFS_TWITTER = New SCrawler.Editors.SiteDefaults()
|
||||||
Me.CH_TWITTER_USER_MEDIA = New System.Windows.Forms.CheckBox()
|
Me.CH_TWITTER_USER_MEDIA = New System.Windows.Forms.CheckBox()
|
||||||
Me.TXT_REQ_WAIT_TIMER = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
Me.TXT_REQ_WAIT_TIMER = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
@@ -73,10 +80,10 @@
|
|||||||
Me.TAB_DEFS_INSTAGRAM = New System.Windows.Forms.TabPage()
|
Me.TAB_DEFS_INSTAGRAM = New System.Windows.Forms.TabPage()
|
||||||
Me.DEFS_INST = New SCrawler.Editors.SiteDefaults()
|
Me.DEFS_INST = New SCrawler.Editors.SiteDefaults()
|
||||||
Me.TXT_INST_SAVED_POSTS_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
Me.TXT_INST_SAVED_POSTS_USER = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH = New PersonalUtilities.Forms.Controls.TextBoxExtended()
|
||||||
Me.TAB_DEFS_REDGIFS = New System.Windows.Forms.TabPage()
|
Me.TAB_DEFS_REDGIFS = New System.Windows.Forms.TabPage()
|
||||||
Me.DEFS_REDGIFS = New SCrawler.Editors.SiteDefaults()
|
Me.DEFS_REDGIFS = New SCrawler.Editors.SiteDefaults()
|
||||||
Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer()
|
Me.CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer()
|
||||||
Me.CH_SHOW_NOTIFY = New System.Windows.Forms.CheckBox()
|
|
||||||
TP_BASIS = New System.Windows.Forms.TableLayoutPanel()
|
TP_BASIS = New System.Windows.Forms.TableLayoutPanel()
|
||||||
TP_IMAGES = New System.Windows.Forms.TableLayoutPanel()
|
TP_IMAGES = New System.Windows.Forms.TableLayoutPanel()
|
||||||
TP_FILE_NAME = New System.Windows.Forms.TableLayoutPanel()
|
TP_FILE_NAME = New System.Windows.Forms.TableLayoutPanel()
|
||||||
@@ -114,6 +121,7 @@
|
|||||||
TAB_DEFS_REDDIT.SuspendLayout()
|
TAB_DEFS_REDDIT.SuspendLayout()
|
||||||
Me.DEFS_REDDIT.SuspendLayout()
|
Me.DEFS_REDDIT.SuspendLayout()
|
||||||
CType(Me.TXT_REDDIT_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.TXT_REDDIT_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
|
CType(Me.TXT_REDDIT_SAVED_POSTS_PATH, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
TAB_DEFS_TWITTER.SuspendLayout()
|
TAB_DEFS_TWITTER.SuspendLayout()
|
||||||
Me.DEFS_TWITTER.SuspendLayout()
|
Me.DEFS_TWITTER.SuspendLayout()
|
||||||
CType(Me.TXT_REQ_WAIT_TIMER, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.TXT_REQ_WAIT_TIMER, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
@@ -123,6 +131,7 @@
|
|||||||
Me.TAB_DEFS_INSTAGRAM.SuspendLayout()
|
Me.TAB_DEFS_INSTAGRAM.SuspendLayout()
|
||||||
Me.DEFS_INST.SuspendLayout()
|
Me.DEFS_INST.SuspendLayout()
|
||||||
CType(Me.TXT_INST_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.TXT_INST_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
|
CType(Me.TXT_INST_SAVED_POSTS_PATH, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
Me.TAB_DEFS_REDGIFS.SuspendLayout()
|
Me.TAB_DEFS_REDGIFS.SuspendLayout()
|
||||||
Me.CONTAINER_MAIN.ContentPanel.SuspendLayout()
|
Me.CONTAINER_MAIN.ContentPanel.SuspendLayout()
|
||||||
Me.CONTAINER_MAIN.SuspendLayout()
|
Me.CONTAINER_MAIN.SuspendLayout()
|
||||||
@@ -162,7 +171,7 @@
|
|||||||
TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
TP_BASIS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
TP_BASIS.Size = New System.Drawing.Size(570, 341)
|
TP_BASIS.Size = New System.Drawing.Size(570, 366)
|
||||||
TP_BASIS.TabIndex = 0
|
TP_BASIS.TabIndex = 0
|
||||||
'
|
'
|
||||||
'TXT_GLOBAL_PATH
|
'TXT_GLOBAL_PATH
|
||||||
@@ -469,6 +478,17 @@
|
|||||||
Me.CH_CLOSE_TO_TRAY.Text = "Close to tray"
|
Me.CH_CLOSE_TO_TRAY.Text = "Close to tray"
|
||||||
Me.CH_CLOSE_TO_TRAY.UseVisualStyleBackColor = True
|
Me.CH_CLOSE_TO_TRAY.UseVisualStyleBackColor = True
|
||||||
'
|
'
|
||||||
|
'CH_SHOW_NOTIFY
|
||||||
|
'
|
||||||
|
Me.CH_SHOW_NOTIFY.AutoSize = True
|
||||||
|
Me.CH_SHOW_NOTIFY.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
|
Me.CH_SHOW_NOTIFY.Location = New System.Drawing.Point(4, 318)
|
||||||
|
Me.CH_SHOW_NOTIFY.Name = "CH_SHOW_NOTIFY"
|
||||||
|
Me.CH_SHOW_NOTIFY.Size = New System.Drawing.Size(562, 19)
|
||||||
|
Me.CH_SHOW_NOTIFY.TabIndex = 11
|
||||||
|
Me.CH_SHOW_NOTIFY.Text = "Show notifications"
|
||||||
|
Me.CH_SHOW_NOTIFY.UseVisualStyleBackColor = True
|
||||||
|
'
|
||||||
'CH_COPY_CHANNEL_USER_IMAGE
|
'CH_COPY_CHANNEL_USER_IMAGE
|
||||||
'
|
'
|
||||||
Me.CH_COPY_CHANNEL_USER_IMAGE.AutoSize = True
|
Me.CH_COPY_CHANNEL_USER_IMAGE.AutoSize = True
|
||||||
@@ -593,7 +613,7 @@
|
|||||||
TAB_BASIS.Location = New System.Drawing.Point(4, 22)
|
TAB_BASIS.Location = New System.Drawing.Point(4, 22)
|
||||||
TAB_BASIS.Name = "TAB_BASIS"
|
TAB_BASIS.Name = "TAB_BASIS"
|
||||||
TAB_BASIS.Padding = New System.Windows.Forms.Padding(3)
|
TAB_BASIS.Padding = New System.Windows.Forms.Padding(3)
|
||||||
TAB_BASIS.Size = New System.Drawing.Size(576, 347)
|
TAB_BASIS.Size = New System.Drawing.Size(576, 372)
|
||||||
TAB_BASIS.TabIndex = 0
|
TAB_BASIS.TabIndex = 0
|
||||||
TAB_BASIS.Text = "Basis"
|
TAB_BASIS.Text = "Basis"
|
||||||
'
|
'
|
||||||
@@ -603,7 +623,7 @@
|
|||||||
TAB_DEFAULTS.Location = New System.Drawing.Point(4, 22)
|
TAB_DEFAULTS.Location = New System.Drawing.Point(4, 22)
|
||||||
TAB_DEFAULTS.Name = "TAB_DEFAULTS"
|
TAB_DEFAULTS.Name = "TAB_DEFAULTS"
|
||||||
TAB_DEFAULTS.Padding = New System.Windows.Forms.Padding(3)
|
TAB_DEFAULTS.Padding = New System.Windows.Forms.Padding(3)
|
||||||
TAB_DEFAULTS.Size = New System.Drawing.Size(576, 358)
|
TAB_DEFAULTS.Size = New System.Drawing.Size(576, 372)
|
||||||
TAB_DEFAULTS.TabIndex = 1
|
TAB_DEFAULTS.TabIndex = 1
|
||||||
TAB_DEFAULTS.Text = "Defaults"
|
TAB_DEFAULTS.Text = "Defaults"
|
||||||
'
|
'
|
||||||
@@ -625,7 +645,7 @@
|
|||||||
TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
TP_DEFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
TP_DEFS.Size = New System.Drawing.Size(570, 352)
|
TP_DEFS.Size = New System.Drawing.Size(570, 366)
|
||||||
TP_DEFS.TabIndex = 0
|
TP_DEFS.TabIndex = 0
|
||||||
'
|
'
|
||||||
'TAB_DEFS_CHANNELS
|
'TAB_DEFS_CHANNELS
|
||||||
@@ -634,7 +654,7 @@
|
|||||||
TAB_DEFS_CHANNELS.Location = New System.Drawing.Point(4, 22)
|
TAB_DEFS_CHANNELS.Location = New System.Drawing.Point(4, 22)
|
||||||
TAB_DEFS_CHANNELS.Name = "TAB_DEFS_CHANNELS"
|
TAB_DEFS_CHANNELS.Name = "TAB_DEFS_CHANNELS"
|
||||||
TAB_DEFS_CHANNELS.Padding = New System.Windows.Forms.Padding(3)
|
TAB_DEFS_CHANNELS.Padding = New System.Windows.Forms.Padding(3)
|
||||||
TAB_DEFS_CHANNELS.Size = New System.Drawing.Size(576, 358)
|
TAB_DEFS_CHANNELS.Size = New System.Drawing.Size(576, 372)
|
||||||
TAB_DEFS_CHANNELS.TabIndex = 4
|
TAB_DEFS_CHANNELS.TabIndex = 4
|
||||||
TAB_DEFS_CHANNELS.Text = "Channels"
|
TAB_DEFS_CHANNELS.Text = "Channels"
|
||||||
'
|
'
|
||||||
@@ -658,7 +678,7 @@
|
|||||||
TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||||
TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
TP_CHANNELS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
|
||||||
TP_CHANNELS.Size = New System.Drawing.Size(570, 352)
|
TP_CHANNELS.Size = New System.Drawing.Size(570, 366)
|
||||||
TP_CHANNELS.TabIndex = 0
|
TP_CHANNELS.TabIndex = 0
|
||||||
'
|
'
|
||||||
'TXT_CHANNEL_USER_POST_LIMIT
|
'TXT_CHANNEL_USER_POST_LIMIT
|
||||||
@@ -687,7 +707,7 @@
|
|||||||
TAB_DEFS_REDDIT.Location = New System.Drawing.Point(4, 22)
|
TAB_DEFS_REDDIT.Location = New System.Drawing.Point(4, 22)
|
||||||
TAB_DEFS_REDDIT.Name = "TAB_DEFS_REDDIT"
|
TAB_DEFS_REDDIT.Name = "TAB_DEFS_REDDIT"
|
||||||
TAB_DEFS_REDDIT.Padding = New System.Windows.Forms.Padding(3)
|
TAB_DEFS_REDDIT.Padding = New System.Windows.Forms.Padding(3)
|
||||||
TAB_DEFS_REDDIT.Size = New System.Drawing.Size(576, 358)
|
TAB_DEFS_REDDIT.Size = New System.Drawing.Size(576, 372)
|
||||||
TAB_DEFS_REDDIT.TabIndex = 2
|
TAB_DEFS_REDDIT.TabIndex = 2
|
||||||
TAB_DEFS_REDDIT.Text = "Reddit"
|
TAB_DEFS_REDDIT.Text = "Reddit"
|
||||||
'
|
'
|
||||||
@@ -696,27 +716,61 @@
|
|||||||
Me.DEFS_REDDIT.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single]
|
Me.DEFS_REDDIT.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.[Single]
|
||||||
Me.DEFS_REDDIT.ColumnCount = 1
|
Me.DEFS_REDDIT.ColumnCount = 1
|
||||||
Me.DEFS_REDDIT.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
Me.DEFS_REDDIT.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
Me.DEFS_REDDIT.Controls.Add(Me.TXT_REDDIT_SAVED_POSTS_USER, 0, 3)
|
Me.DEFS_REDDIT.Controls.Add(Me.TXT_REDDIT_SAVED_POSTS_USER, 0, 4)
|
||||||
|
Me.DEFS_REDDIT.Controls.Add(Me.CH_REDDIT_USER_MEDIA, 0, 3)
|
||||||
|
Me.DEFS_REDDIT.Controls.Add(Me.TXT_REDDIT_SAVED_POSTS_PATH, 0, 5)
|
||||||
Me.DEFS_REDDIT.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.DEFS_REDDIT.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.DEFS_REDDIT.Location = New System.Drawing.Point(3, 3)
|
Me.DEFS_REDDIT.Location = New System.Drawing.Point(3, 3)
|
||||||
Me.DEFS_REDDIT.Name = "DEFS_REDDIT"
|
Me.DEFS_REDDIT.Name = "DEFS_REDDIT"
|
||||||
Me.DEFS_REDDIT.RowCount = 5
|
Me.DEFS_REDDIT.RowCount = 7
|
||||||
|
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||||
|
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||||
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
Me.DEFS_REDDIT.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
Me.DEFS_REDDIT.Size = New System.Drawing.Size(570, 352)
|
Me.DEFS_REDDIT.Size = New System.Drawing.Size(570, 366)
|
||||||
Me.DEFS_REDDIT.TabIndex = 1
|
Me.DEFS_REDDIT.TabIndex = 1
|
||||||
'
|
'
|
||||||
'TXT_REDDIT_SAVED_POSTS_USER
|
'TXT_REDDIT_SAVED_POSTS_USER
|
||||||
'
|
'
|
||||||
Me.TXT_REDDIT_SAVED_POSTS_USER.CaptionText = "Saved posts user"
|
Me.TXT_REDDIT_SAVED_POSTS_USER.CaptionText = "Saved posts user"
|
||||||
Me.TXT_REDDIT_SAVED_POSTS_USER.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.TXT_REDDIT_SAVED_POSTS_USER.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.TXT_REDDIT_SAVED_POSTS_USER.Location = New System.Drawing.Point(4, 82)
|
Me.TXT_REDDIT_SAVED_POSTS_USER.Location = New System.Drawing.Point(4, 108)
|
||||||
Me.TXT_REDDIT_SAVED_POSTS_USER.Name = "TXT_REDDIT_SAVED_POSTS_USER"
|
Me.TXT_REDDIT_SAVED_POSTS_USER.Name = "TXT_REDDIT_SAVED_POSTS_USER"
|
||||||
Me.TXT_REDDIT_SAVED_POSTS_USER.Size = New System.Drawing.Size(562, 22)
|
Me.TXT_REDDIT_SAVED_POSTS_USER.Size = New System.Drawing.Size(562, 22)
|
||||||
Me.TXT_REDDIT_SAVED_POSTS_USER.TabIndex = 3
|
Me.TXT_REDDIT_SAVED_POSTS_USER.TabIndex = 4
|
||||||
|
'
|
||||||
|
'CH_REDDIT_USER_MEDIA
|
||||||
|
'
|
||||||
|
Me.CH_REDDIT_USER_MEDIA.AutoSize = True
|
||||||
|
Me.CH_REDDIT_USER_MEDIA.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
|
Me.CH_REDDIT_USER_MEDIA.Location = New System.Drawing.Point(4, 82)
|
||||||
|
Me.CH_REDDIT_USER_MEDIA.Name = "CH_REDDIT_USER_MEDIA"
|
||||||
|
Me.CH_REDDIT_USER_MEDIA.Size = New System.Drawing.Size(562, 19)
|
||||||
|
Me.CH_REDDIT_USER_MEDIA.TabIndex = 3
|
||||||
|
Me.CH_REDDIT_USER_MEDIA.Text = "Get user media only"
|
||||||
|
Me.CH_REDDIT_USER_MEDIA.UseVisualStyleBackColor = True
|
||||||
|
'
|
||||||
|
'TXT_REDDIT_SAVED_POSTS_PATH
|
||||||
|
'
|
||||||
|
ActionButton7.BackgroundImage = CType(resources.GetObject("ActionButton7.BackgroundImage"), System.Drawing.Image)
|
||||||
|
ActionButton7.Index = 0
|
||||||
|
ActionButton7.Name = "BTT_OPEN"
|
||||||
|
ActionButton8.BackgroundImage = CType(resources.GetObject("ActionButton8.BackgroundImage"), System.Drawing.Image)
|
||||||
|
ActionButton8.Index = 1
|
||||||
|
ActionButton8.Name = "BTT_CLEAR"
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.Buttons.Add(ActionButton7)
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.Buttons.Add(ActionButton8)
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.CaptionText = "Saved posts path"
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.CaptionToolTipEnabled = True
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.CaptionToolTipText = "Special path (clear to use default)"
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.Location = New System.Drawing.Point(4, 137)
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.Name = "TXT_REDDIT_SAVED_POSTS_PATH"
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.Size = New System.Drawing.Size(562, 22)
|
||||||
|
Me.TXT_REDDIT_SAVED_POSTS_PATH.TabIndex = 8
|
||||||
'
|
'
|
||||||
'TAB_DEFS_TWITTER
|
'TAB_DEFS_TWITTER
|
||||||
'
|
'
|
||||||
@@ -724,7 +778,7 @@
|
|||||||
TAB_DEFS_TWITTER.Location = New System.Drawing.Point(4, 22)
|
TAB_DEFS_TWITTER.Location = New System.Drawing.Point(4, 22)
|
||||||
TAB_DEFS_TWITTER.Name = "TAB_DEFS_TWITTER"
|
TAB_DEFS_TWITTER.Name = "TAB_DEFS_TWITTER"
|
||||||
TAB_DEFS_TWITTER.Padding = New System.Windows.Forms.Padding(3)
|
TAB_DEFS_TWITTER.Padding = New System.Windows.Forms.Padding(3)
|
||||||
TAB_DEFS_TWITTER.Size = New System.Drawing.Size(576, 358)
|
TAB_DEFS_TWITTER.Size = New System.Drawing.Size(576, 372)
|
||||||
TAB_DEFS_TWITTER.TabIndex = 3
|
TAB_DEFS_TWITTER.TabIndex = 3
|
||||||
TAB_DEFS_TWITTER.Text = "Twitter"
|
TAB_DEFS_TWITTER.Text = "Twitter"
|
||||||
'
|
'
|
||||||
@@ -743,7 +797,7 @@
|
|||||||
Me.DEFS_TWITTER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_TWITTER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_TWITTER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_TWITTER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_TWITTER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
Me.DEFS_TWITTER.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
Me.DEFS_TWITTER.Size = New System.Drawing.Size(570, 352)
|
Me.DEFS_TWITTER.Size = New System.Drawing.Size(570, 366)
|
||||||
Me.DEFS_TWITTER.TabIndex = 1
|
Me.DEFS_TWITTER.TabIndex = 1
|
||||||
'
|
'
|
||||||
'CH_TWITTER_USER_MEDIA
|
'CH_TWITTER_USER_MEDIA
|
||||||
@@ -800,7 +854,7 @@
|
|||||||
Me.TAB_MAIN.Location = New System.Drawing.Point(0, 0)
|
Me.TAB_MAIN.Location = New System.Drawing.Point(0, 0)
|
||||||
Me.TAB_MAIN.Name = "TAB_MAIN"
|
Me.TAB_MAIN.Name = "TAB_MAIN"
|
||||||
Me.TAB_MAIN.SelectedIndex = 0
|
Me.TAB_MAIN.SelectedIndex = 0
|
||||||
Me.TAB_MAIN.Size = New System.Drawing.Size(584, 373)
|
Me.TAB_MAIN.Size = New System.Drawing.Size(584, 398)
|
||||||
Me.TAB_MAIN.TabIndex = 1
|
Me.TAB_MAIN.TabIndex = 1
|
||||||
'
|
'
|
||||||
'TAB_DEFS_INSTAGRAM
|
'TAB_DEFS_INSTAGRAM
|
||||||
@@ -809,7 +863,7 @@
|
|||||||
Me.TAB_DEFS_INSTAGRAM.Controls.Add(Me.DEFS_INST)
|
Me.TAB_DEFS_INSTAGRAM.Controls.Add(Me.DEFS_INST)
|
||||||
Me.TAB_DEFS_INSTAGRAM.Location = New System.Drawing.Point(4, 22)
|
Me.TAB_DEFS_INSTAGRAM.Location = New System.Drawing.Point(4, 22)
|
||||||
Me.TAB_DEFS_INSTAGRAM.Name = "TAB_DEFS_INSTAGRAM"
|
Me.TAB_DEFS_INSTAGRAM.Name = "TAB_DEFS_INSTAGRAM"
|
||||||
Me.TAB_DEFS_INSTAGRAM.Size = New System.Drawing.Size(576, 358)
|
Me.TAB_DEFS_INSTAGRAM.Size = New System.Drawing.Size(576, 372)
|
||||||
Me.TAB_DEFS_INSTAGRAM.TabIndex = 5
|
Me.TAB_DEFS_INSTAGRAM.TabIndex = 5
|
||||||
Me.TAB_DEFS_INSTAGRAM.Text = "Instagram"
|
Me.TAB_DEFS_INSTAGRAM.Text = "Instagram"
|
||||||
'
|
'
|
||||||
@@ -823,10 +877,11 @@
|
|||||||
Me.DEFS_INST.Controls.Add(Me.TXT_REQ_COUNT, 0, 4)
|
Me.DEFS_INST.Controls.Add(Me.TXT_REQ_COUNT, 0, 4)
|
||||||
Me.DEFS_INST.Controls.Add(Me.TXT_REQ_WAIT_TIMER, 0, 3)
|
Me.DEFS_INST.Controls.Add(Me.TXT_REQ_WAIT_TIMER, 0, 3)
|
||||||
Me.DEFS_INST.Controls.Add(Me.TXT_INST_SAVED_POSTS_USER, 0, 6)
|
Me.DEFS_INST.Controls.Add(Me.TXT_INST_SAVED_POSTS_USER, 0, 6)
|
||||||
|
Me.DEFS_INST.Controls.Add(Me.TXT_INST_SAVED_POSTS_PATH, 0, 7)
|
||||||
Me.DEFS_INST.Dock = System.Windows.Forms.DockStyle.Fill
|
Me.DEFS_INST.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
Me.DEFS_INST.Location = New System.Drawing.Point(0, 0)
|
Me.DEFS_INST.Location = New System.Drawing.Point(0, 0)
|
||||||
Me.DEFS_INST.Name = "DEFS_INST"
|
Me.DEFS_INST.Name = "DEFS_INST"
|
||||||
Me.DEFS_INST.RowCount = 8
|
Me.DEFS_INST.RowCount = 9
|
||||||
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
@@ -834,8 +889,9 @@
|
|||||||
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||||
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||||
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||||
|
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
|
||||||
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
Me.DEFS_INST.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
Me.DEFS_INST.Size = New System.Drawing.Size(576, 358)
|
Me.DEFS_INST.Size = New System.Drawing.Size(576, 372)
|
||||||
Me.DEFS_INST.TabIndex = 1
|
Me.DEFS_INST.TabIndex = 1
|
||||||
'
|
'
|
||||||
'TXT_INST_SAVED_POSTS_USER
|
'TXT_INST_SAVED_POSTS_USER
|
||||||
@@ -848,13 +904,33 @@
|
|||||||
Me.TXT_INST_SAVED_POSTS_USER.Size = New System.Drawing.Size(568, 22)
|
Me.TXT_INST_SAVED_POSTS_USER.Size = New System.Drawing.Size(568, 22)
|
||||||
Me.TXT_INST_SAVED_POSTS_USER.TabIndex = 9
|
Me.TXT_INST_SAVED_POSTS_USER.TabIndex = 9
|
||||||
'
|
'
|
||||||
|
'TXT_INST_SAVED_POSTS_PATH
|
||||||
|
'
|
||||||
|
ActionButton9.BackgroundImage = CType(resources.GetObject("ActionButton9.BackgroundImage"), System.Drawing.Image)
|
||||||
|
ActionButton9.Index = 0
|
||||||
|
ActionButton9.Name = "BTT_OPEN"
|
||||||
|
ActionButton10.BackgroundImage = CType(resources.GetObject("ActionButton10.BackgroundImage"), System.Drawing.Image)
|
||||||
|
ActionButton10.Index = 1
|
||||||
|
ActionButton10.Name = "BTT_CLEAR"
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.Buttons.Add(ActionButton9)
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.Buttons.Add(ActionButton10)
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.CaptionText = "Saved posts path"
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.CaptionToolTipEnabled = True
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.CaptionToolTipText = "Special path (clear to use default)"
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.CaptionWidth = 120.0R
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.Location = New System.Drawing.Point(4, 198)
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.Name = "TXT_INST_SAVED_POSTS_PATH"
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.Size = New System.Drawing.Size(568, 22)
|
||||||
|
Me.TXT_INST_SAVED_POSTS_PATH.TabIndex = 13
|
||||||
|
'
|
||||||
'TAB_DEFS_REDGIFS
|
'TAB_DEFS_REDGIFS
|
||||||
'
|
'
|
||||||
Me.TAB_DEFS_REDGIFS.BackColor = System.Drawing.SystemColors.Control
|
Me.TAB_DEFS_REDGIFS.BackColor = System.Drawing.SystemColors.Control
|
||||||
Me.TAB_DEFS_REDGIFS.Controls.Add(Me.DEFS_REDGIFS)
|
Me.TAB_DEFS_REDGIFS.Controls.Add(Me.DEFS_REDGIFS)
|
||||||
Me.TAB_DEFS_REDGIFS.Location = New System.Drawing.Point(4, 22)
|
Me.TAB_DEFS_REDGIFS.Location = New System.Drawing.Point(4, 22)
|
||||||
Me.TAB_DEFS_REDGIFS.Name = "TAB_DEFS_REDGIFS"
|
Me.TAB_DEFS_REDGIFS.Name = "TAB_DEFS_REDGIFS"
|
||||||
Me.TAB_DEFS_REDGIFS.Size = New System.Drawing.Size(576, 358)
|
Me.TAB_DEFS_REDGIFS.Size = New System.Drawing.Size(576, 372)
|
||||||
Me.TAB_DEFS_REDGIFS.TabIndex = 6
|
Me.TAB_DEFS_REDGIFS.TabIndex = 6
|
||||||
Me.TAB_DEFS_REDGIFS.Text = "RedGifs"
|
Me.TAB_DEFS_REDGIFS.Text = "RedGifs"
|
||||||
'
|
'
|
||||||
@@ -871,7 +947,7 @@
|
|||||||
Me.DEFS_REDGIFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_REDGIFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_REDGIFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
Me.DEFS_REDGIFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!))
|
||||||
Me.DEFS_REDGIFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
Me.DEFS_REDGIFS.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
|
||||||
Me.DEFS_REDGIFS.Size = New System.Drawing.Size(576, 358)
|
Me.DEFS_REDGIFS.Size = New System.Drawing.Size(576, 372)
|
||||||
Me.DEFS_REDGIFS.TabIndex = 0
|
Me.DEFS_REDGIFS.TabIndex = 0
|
||||||
'
|
'
|
||||||
'CONTAINER_MAIN
|
'CONTAINER_MAIN
|
||||||
@@ -880,7 +956,7 @@
|
|||||||
'CONTAINER_MAIN.ContentPanel
|
'CONTAINER_MAIN.ContentPanel
|
||||||
'
|
'
|
||||||
Me.CONTAINER_MAIN.ContentPanel.Controls.Add(Me.TAB_MAIN)
|
Me.CONTAINER_MAIN.ContentPanel.Controls.Add(Me.TAB_MAIN)
|
||||||
Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(584, 373)
|
Me.CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(584, 398)
|
||||||
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)
|
||||||
@@ -890,17 +966,6 @@
|
|||||||
Me.CONTAINER_MAIN.TabIndex = 0
|
Me.CONTAINER_MAIN.TabIndex = 0
|
||||||
Me.CONTAINER_MAIN.TopToolStripPanelVisible = False
|
Me.CONTAINER_MAIN.TopToolStripPanelVisible = False
|
||||||
'
|
'
|
||||||
'CH_SHOW_NOTIFY
|
|
||||||
'
|
|
||||||
Me.CH_SHOW_NOTIFY.AutoSize = True
|
|
||||||
Me.CH_SHOW_NOTIFY.Dock = System.Windows.Forms.DockStyle.Fill
|
|
||||||
Me.CH_SHOW_NOTIFY.Location = New System.Drawing.Point(4, 318)
|
|
||||||
Me.CH_SHOW_NOTIFY.Name = "CH_SHOW_NOTIFY"
|
|
||||||
Me.CH_SHOW_NOTIFY.Size = New System.Drawing.Size(562, 19)
|
|
||||||
Me.CH_SHOW_NOTIFY.TabIndex = 11
|
|
||||||
Me.CH_SHOW_NOTIFY.Text = "Show notifications"
|
|
||||||
Me.CH_SHOW_NOTIFY.UseVisualStyleBackColor = True
|
|
||||||
'
|
|
||||||
'GlobalSettingsForm
|
'GlobalSettingsForm
|
||||||
'
|
'
|
||||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||||
@@ -945,7 +1010,9 @@
|
|||||||
CType(Me.TXT_CHANNEL_USER_POST_LIMIT, System.ComponentModel.ISupportInitialize).EndInit()
|
CType(Me.TXT_CHANNEL_USER_POST_LIMIT, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
TAB_DEFS_REDDIT.ResumeLayout(False)
|
TAB_DEFS_REDDIT.ResumeLayout(False)
|
||||||
Me.DEFS_REDDIT.ResumeLayout(False)
|
Me.DEFS_REDDIT.ResumeLayout(False)
|
||||||
|
Me.DEFS_REDDIT.PerformLayout()
|
||||||
CType(Me.TXT_REDDIT_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).EndInit()
|
CType(Me.TXT_REDDIT_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
|
CType(Me.TXT_REDDIT_SAVED_POSTS_PATH, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
TAB_DEFS_TWITTER.ResumeLayout(False)
|
TAB_DEFS_TWITTER.ResumeLayout(False)
|
||||||
Me.DEFS_TWITTER.ResumeLayout(False)
|
Me.DEFS_TWITTER.ResumeLayout(False)
|
||||||
Me.DEFS_TWITTER.PerformLayout()
|
Me.DEFS_TWITTER.PerformLayout()
|
||||||
@@ -956,6 +1023,7 @@
|
|||||||
Me.TAB_DEFS_INSTAGRAM.ResumeLayout(False)
|
Me.TAB_DEFS_INSTAGRAM.ResumeLayout(False)
|
||||||
Me.DEFS_INST.ResumeLayout(False)
|
Me.DEFS_INST.ResumeLayout(False)
|
||||||
CType(Me.TXT_INST_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).EndInit()
|
CType(Me.TXT_INST_SAVED_POSTS_USER, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
|
CType(Me.TXT_INST_SAVED_POSTS_PATH, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
Me.TAB_DEFS_REDGIFS.ResumeLayout(False)
|
Me.TAB_DEFS_REDGIFS.ResumeLayout(False)
|
||||||
Me.CONTAINER_MAIN.ContentPanel.ResumeLayout(False)
|
Me.CONTAINER_MAIN.ContentPanel.ResumeLayout(False)
|
||||||
Me.CONTAINER_MAIN.ResumeLayout(False)
|
Me.CONTAINER_MAIN.ResumeLayout(False)
|
||||||
@@ -998,12 +1066,15 @@
|
|||||||
Private WithEvents TXT_REQ_COUNT As PersonalUtilities.Forms.Controls.TextBoxExtended
|
Private WithEvents TXT_REQ_COUNT As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||||
Private WithEvents TXT_LIMIT_TIMER As PersonalUtilities.Forms.Controls.TextBoxExtended
|
Private WithEvents TXT_LIMIT_TIMER As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||||
Private WithEvents TAB_DEFS_REDGIFS As TabPage
|
Private WithEvents TAB_DEFS_REDGIFS As TabPage
|
||||||
Friend WithEvents TAB_MAIN As TabControl
|
Private WithEvents TAB_MAIN As TabControl
|
||||||
Private WithEvents DEFS_TWITTER As SiteDefaults
|
Private WithEvents DEFS_TWITTER As SiteDefaults
|
||||||
Private WithEvents DEFS_REDDIT As SiteDefaults
|
Private WithEvents DEFS_REDDIT As SiteDefaults
|
||||||
Private WithEvents DEFS_INST As SiteDefaults
|
Private WithEvents DEFS_INST As SiteDefaults
|
||||||
Private WithEvents DEFS_REDGIFS As SiteDefaults
|
Private WithEvents DEFS_REDGIFS As SiteDefaults
|
||||||
Private WithEvents TXT_INST_SAVED_POSTS_USER As PersonalUtilities.Forms.Controls.TextBoxExtended
|
Private WithEvents TXT_INST_SAVED_POSTS_USER As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||||
Private WithEvents CH_SHOW_NOTIFY As CheckBox
|
Private WithEvents CH_SHOW_NOTIFY As CheckBox
|
||||||
|
Private WithEvents CH_REDDIT_USER_MEDIA As CheckBox
|
||||||
|
Private WithEvents TXT_REDDIT_SAVED_POSTS_PATH As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||||
|
Private WithEvents TXT_INST_SAVED_POSTS_PATH As PersonalUtilities.Forms.Controls.TextBoxExtended
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
@@ -232,9 +232,47 @@ If checked, videos will be stored in separate folder; otherwise, videos will be
|
|||||||
<metadata name="TAB_DEFS_REDDIT.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="TAB_DEFS_REDDIT.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>False</value>
|
<value>False</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<data name="ActionButton7.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
|
wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
|
||||||
|
WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
|
||||||
|
aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
|
||||||
|
5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
|
||||||
|
vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
|
||||||
|
cMaRN0UdBBkAAAAASUVORK5CYII=
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="ActionButton8.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
|
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||||
|
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||||
|
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
<metadata name="TAB_DEFS_TWITTER.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="TAB_DEFS_TWITTER.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>False</value>
|
<value>False</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<data name="ActionButton9.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
|
wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
|
||||||
|
WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
|
||||||
|
aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
|
||||||
|
5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
|
||||||
|
vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
|
||||||
|
cMaRN0UdBBkAAAAASUVORK5CYII=
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="ActionButton10.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
|
xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go
|
||||||
|
tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX
|
||||||
|
AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
AAABAA8AAAAQAAEABAAwOgAA9gAAADAwEAABAAQAaAYAACg7AAAgIBAAAQAEAOgCAACQQQAAGBgQAAEA
|
AAABAA8AAAAQAAEABAAwOgAA9gAAADAwEAABAAQAaAYAACg7AAAgIBAAAQAEAOgCAACQQQAAGBgQAAEA
|
||||||
|
|||||||
@@ -91,7 +91,9 @@ Namespace Editors
|
|||||||
'Reddit
|
'Reddit
|
||||||
With .Site(Sites.Reddit)
|
With .Site(Sites.Reddit)
|
||||||
SetChecker(DEFS_REDDIT, Sites.Reddit)
|
SetChecker(DEFS_REDDIT, Sites.Reddit)
|
||||||
|
CH_REDDIT_USER_MEDIA.Checked = .GetUserMediaOnly
|
||||||
TXT_REDDIT_SAVED_POSTS_USER.Text = .SavedPostsUserName
|
TXT_REDDIT_SAVED_POSTS_USER.Text = .SavedPostsUserName
|
||||||
|
TXT_REDDIT_SAVED_POSTS_PATH.Text = .SavedPostsPath(False)
|
||||||
End With
|
End With
|
||||||
'Twitter
|
'Twitter
|
||||||
With .Site(Sites.Twitter)
|
With .Site(Sites.Twitter)
|
||||||
@@ -105,6 +107,7 @@ Namespace Editors
|
|||||||
TXT_REQ_COUNT.Text = .RequestsWaitTimerTaskCount
|
TXT_REQ_COUNT.Text = .RequestsWaitTimerTaskCount
|
||||||
TXT_LIMIT_TIMER.Text = .SleepTimerOnPostsLimit
|
TXT_LIMIT_TIMER.Text = .SleepTimerOnPostsLimit
|
||||||
TXT_INST_SAVED_POSTS_USER.Text = .SavedPostsUserName
|
TXT_INST_SAVED_POSTS_USER.Text = .SavedPostsUserName
|
||||||
|
TXT_INST_SAVED_POSTS_PATH.Text = .SavedPostsPath(False)
|
||||||
End With
|
End With
|
||||||
'RedGifs
|
'RedGifs
|
||||||
SetChecker(DEFS_REDGIFS, Sites.RedGifs)
|
SetChecker(DEFS_REDGIFS, Sites.RedGifs)
|
||||||
@@ -226,7 +229,9 @@ Namespace Editors
|
|||||||
'Reddit
|
'Reddit
|
||||||
With .Site(Sites.Reddit)
|
With .Site(Sites.Reddit)
|
||||||
SetPropByChecker(DEFS_REDDIT, Sites.Reddit)
|
SetPropByChecker(DEFS_REDDIT, Sites.Reddit)
|
||||||
|
.GetUserMediaOnly.Value = CH_REDDIT_USER_MEDIA.Checked
|
||||||
.SavedPostsUserName.Value = TXT_REDDIT_SAVED_POSTS_USER.Text
|
.SavedPostsUserName.Value = TXT_REDDIT_SAVED_POSTS_USER.Text
|
||||||
|
.SavedPostsPath = TXT_REDDIT_SAVED_POSTS_PATH.Text
|
||||||
End With
|
End With
|
||||||
'Twitter
|
'Twitter
|
||||||
With .Site(Sites.Twitter)
|
With .Site(Sites.Twitter)
|
||||||
@@ -240,6 +245,7 @@ Namespace Editors
|
|||||||
.RequestsWaitTimerTaskCount.Value = AConvert(Of Integer)(TXT_REQ_COUNT.Text)
|
.RequestsWaitTimerTaskCount.Value = AConvert(Of Integer)(TXT_REQ_COUNT.Text)
|
||||||
.SleepTimerOnPostsLimit.Value = AConvert(Of Integer)(TXT_LIMIT_TIMER.Text)
|
.SleepTimerOnPostsLimit.Value = AConvert(Of Integer)(TXT_LIMIT_TIMER.Text)
|
||||||
.SavedPostsUserName.Value = TXT_INST_SAVED_POSTS_USER.Text
|
.SavedPostsUserName.Value = TXT_INST_SAVED_POSTS_USER.Text
|
||||||
|
.SavedPostsPath = TXT_INST_SAVED_POSTS_PATH.Text
|
||||||
End With
|
End With
|
||||||
'RedGifs
|
'RedGifs
|
||||||
SetPropByChecker(DEFS_REDGIFS, Sites.RedGifs)
|
SetPropByChecker(DEFS_REDGIFS, Sites.RedGifs)
|
||||||
@@ -286,5 +292,17 @@ Namespace Editors
|
|||||||
CH_FILE_TIME.Enabled = b
|
CH_FILE_TIME.Enabled = b
|
||||||
ChangePositionControlsEnabling()
|
ChangePositionControlsEnabling()
|
||||||
End Sub
|
End Sub
|
||||||
|
Private Sub TXT_REDDIT_SAVED_POSTS_PATH_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_REDDIT_SAVED_POSTS_PATH.ActionOnButtonClick
|
||||||
|
If Sender.DefaultButton = ActionButton.DefaultButtons.Open Then
|
||||||
|
Dim f As SFile = SFile.SelectPath
|
||||||
|
If Not f.IsEmptyString Then TXT_REDDIT_SAVED_POSTS_PATH.Text = f
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
Private Sub TXT_INST_SAVED_POSTS_PATH_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_INST_SAVED_POSTS_PATH.ActionOnButtonClick
|
||||||
|
If Sender.DefaultButton = ActionButton.DefaultButtons.Open Then
|
||||||
|
Dim f As SFile = SFile.SelectPath
|
||||||
|
If Not f.IsEmptyString Then TXT_INST_SAVED_POSTS_PATH.Text = f
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
@@ -35,7 +35,7 @@ Namespace Editors
|
|||||||
Text = MySite.ToString
|
Text = MySite.ToString
|
||||||
|
|
||||||
With Settings(MySite)
|
With Settings(MySite)
|
||||||
TXT_PATH.Text = .Path
|
TXT_PATH.Text = .Path(False)
|
||||||
With .Responser
|
With .Responser
|
||||||
If .Cookies Is Nothing Then .Cookies = New CookieKeeper(.CookiesDomain)
|
If .Cookies Is Nothing Then .Cookies = New CookieKeeper(.CookiesDomain)
|
||||||
SetCookieText()
|
SetCookieText()
|
||||||
@@ -128,7 +128,7 @@ Namespace Editors
|
|||||||
End Sub
|
End Sub
|
||||||
Private Sub TXT_PATH_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_PATH.ActionOnButtonClick
|
Private Sub TXT_PATH_ActionOnButtonClick(ByVal Sender As ActionButton) Handles TXT_PATH.ActionOnButtonClick
|
||||||
If Sender.DefaultButton = ActionButton.DefaultButtons.Open Then
|
If Sender.DefaultButton = ActionButton.DefaultButtons.Open Then
|
||||||
Dim f As SFile = SFile.SelectPath(Settings(MySite).Path)
|
Dim f As SFile = SFile.SelectPath(Settings(MySite).Path(False))
|
||||||
If Not f.IsEmptyString Then TXT_PATH.Text = f
|
If Not f.IsEmptyString Then TXT_PATH.Text = f
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ Imports System.ComponentModel
|
|||||||
Imports PersonalUtilities.Forms
|
Imports PersonalUtilities.Forms
|
||||||
Imports PersonalUtilities.Forms.Controls.Base
|
Imports PersonalUtilities.Forms.Controls.Base
|
||||||
Imports PersonalUtilities.Forms.Toolbars
|
Imports PersonalUtilities.Forms.Toolbars
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Imports SCrawler.API.Base
|
Imports SCrawler.API.Base
|
||||||
Namespace Editors
|
Namespace Editors
|
||||||
Friend Class UserCreatorForm : Implements IOkCancelToolbar
|
Friend Class UserCreatorForm : Implements IOkCancelToolbar
|
||||||
@@ -33,11 +34,7 @@ Namespace Editors
|
|||||||
End Property
|
End Property
|
||||||
Friend ReadOnly Property UserMediaOnly As Boolean
|
Friend ReadOnly Property UserMediaOnly As Boolean
|
||||||
Get
|
Get
|
||||||
If User.Site = Sites.Twitter Then
|
Return CH_PARSE_USER_MEDIA.Checked
|
||||||
Return CH_PARSE_USER_MEDIA.Checked
|
|
||||||
Else
|
|
||||||
Return False
|
|
||||||
End If
|
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
Friend ReadOnly Property UserReady As Boolean
|
Friend ReadOnly Property UserReady As Boolean
|
||||||
@@ -65,7 +62,7 @@ Namespace Editors
|
|||||||
Return TXT_USER_FRIENDLY.Text
|
Return TXT_USER_FRIENDLY.Text
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
Private ReadOnly _SpecPathPattern As New RegexStructure("\w:\\.*", True, False,,,,, String.Empty, EDP.ReturnValue)
|
Private ReadOnly _SpecPathPattern As RParams = RParams.DM("\w:\\.*", 0, EDP.ReturnValue)
|
||||||
Private ReadOnly Property SpecialPath(ByVal s As Sites) As SFile
|
Private ReadOnly Property SpecialPath(ByVal s As Sites) As SFile
|
||||||
Get
|
Get
|
||||||
If TXT_SPEC_FOLDER.IsEmptyString Then
|
If TXT_SPEC_FOLDER.IsEmptyString Then
|
||||||
@@ -105,7 +102,6 @@ Namespace Editors
|
|||||||
OPT_REDDIT.Checked = False
|
OPT_REDDIT.Checked = False
|
||||||
OPT_TWITTER.Checked = False
|
OPT_TWITTER.Checked = False
|
||||||
OPT_INSTAGRAM.Checked = False
|
OPT_INSTAGRAM.Checked = False
|
||||||
CH_PARSE_USER_MEDIA.Enabled = False
|
|
||||||
CH_READY_FOR_DOWN.Checked = True
|
CH_READY_FOR_DOWN.Checked = True
|
||||||
CH_TEMP.Checked = Settings.DefaultTemporary
|
CH_TEMP.Checked = Settings.DefaultTemporary
|
||||||
CH_DOWN_IMAGES.Checked = Settings.DefaultDownloadImages
|
CH_DOWN_IMAGES.Checked = Settings.DefaultDownloadImages
|
||||||
@@ -115,7 +111,7 @@ Namespace Editors
|
|||||||
TXT_USER.Text = User.Name
|
TXT_USER.Text = User.Name
|
||||||
TXT_SPEC_FOLDER.Text = User.SpecialPath
|
TXT_SPEC_FOLDER.Text = User.SpecialPath
|
||||||
Select Case User.Site
|
Select Case User.Site
|
||||||
Case Sites.Reddit : OPT_REDDIT.Checked = True : CH_PARSE_USER_MEDIA.Enabled = False
|
Case Sites.Reddit : OPT_REDDIT.Checked = True
|
||||||
Case Sites.Twitter : OPT_TWITTER.Checked = True
|
Case Sites.Twitter : OPT_TWITTER.Checked = True
|
||||||
Case Sites.Instagram : OPT_INSTAGRAM.Checked = True
|
Case Sites.Instagram : OPT_INSTAGRAM.Checked = True
|
||||||
Case Sites.RedGifs : OPT_REDGIFS.Checked = True
|
Case Sites.RedGifs : OPT_REDGIFS.Checked = True
|
||||||
@@ -212,7 +208,7 @@ Namespace Editors
|
|||||||
Else
|
Else
|
||||||
.Labels.ListAddList(UserLabels, LAP.NotContainsOnly, LAP.ClearBeforeAdd)
|
.Labels.ListAddList(UserLabels, LAP.NotContainsOnly, LAP.ClearBeforeAdd)
|
||||||
End If
|
End If
|
||||||
If OPT_TWITTER.Checked Then .ParseUserMediaOnly = CH_PARSE_USER_MEDIA.Checked
|
.ParseUserMediaOnly = CH_PARSE_USER_MEDIA.Checked
|
||||||
.UpdateUserInformation()
|
.UpdateUserInformation()
|
||||||
End With
|
End With
|
||||||
End If
|
End If
|
||||||
@@ -231,13 +227,13 @@ CloseForm:
|
|||||||
Private Sub ToolbarBttCancel() Implements IOkCancelToolbar.ToolbarBttCancel
|
Private Sub ToolbarBttCancel() Implements IOkCancelToolbar.ToolbarBttCancel
|
||||||
MyDef.CloseForm(IIf(StartIndex >= 0, DialogResult.OK, DialogResult.Cancel))
|
MyDef.CloseForm(IIf(StartIndex >= 0, DialogResult.OK, DialogResult.Cancel))
|
||||||
End Sub
|
End Sub
|
||||||
Private ReadOnly TwitterRegEx As New RegexStructure("[htps:/]{7,8}.*?twitter.com/([^/]+)", 1)
|
Private ReadOnly TwitterRegEx As RParams = RParams.DMS("[htps:/]{7,8}.*?twitter.com/([^/]+)", 1)
|
||||||
Private ReadOnly RedditRegEx1 As New RegexStructure("[htps:/]{7,8}.*?reddit.com/user/([^/]+)", 1)
|
Private ReadOnly RedditRegEx1 As RParams = RParams.DMS("[htps:/]{7,8}.*?reddit.com/user/([^/]+)", 1)
|
||||||
Private ReadOnly RedditRegEx2 As New RegexStructure(".?u/([^/]+)", 1)
|
Private ReadOnly RedditRegEx2 As RParams = RParams.DMS(".?u/([^/]+)", 1)
|
||||||
Private ReadOnly RedditChannelRegEx1 As New RegexStructure("[htps:/]{7,8}.*?reddit.com/r/([^/]+)", 1)
|
Private ReadOnly RedditChannelRegEx1 As RParams = RParams.DMS("[htps:/]{7,8}.*?reddit.com/r/([^/]+)", 1)
|
||||||
Private ReadOnly RedditChannelRegEx2 As New RegexStructure(".?r/([^/]+)", 1)
|
Private ReadOnly RedditChannelRegEx2 As RParams = RParams.DMS(".?r/([^/]+)", 1)
|
||||||
Private ReadOnly InstagramRegEx As New RegexStructure("[htps:/]{7,8}.*?instagram.com/([^/]+)", 1)
|
Private ReadOnly InstagramRegEx As RParams = RParams.DMS("[htps:/]{7,8}.*?instagram.com/([^/]+)", 1)
|
||||||
Private ReadOnly RedGifsRegEx As New RegexStructure("[htps:/]{7,8}.*?redgifs.com/users/([^/]+)", 1)
|
Private ReadOnly RedGifsRegEx As RParams = RParams.DMS("[htps:/]{7,8}.*?redgifs.com/users/([^/]+)", 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
|
||||||
@@ -275,7 +271,7 @@ CloseForm:
|
|||||||
End If
|
End If
|
||||||
Return {Sites.Undefined, False}
|
Return {Sites.Undefined, False}
|
||||||
End Function
|
End Function
|
||||||
Private Function CheckRegex(ByRef TXT As String, ByVal r As RegexStructure) As Boolean
|
Private Function CheckRegex(ByRef TXT As String, ByVal r As RParams) As Boolean
|
||||||
Dim s$ = RegexReplace(TXT, r)
|
Dim s$ = RegexReplace(TXT, r)
|
||||||
If Not s.IsEmptyString Then TXT = s : Return True Else Return False
|
If Not s.IsEmptyString Then TXT = s : Return True Else Return False
|
||||||
End Function
|
End Function
|
||||||
@@ -312,8 +308,7 @@ CloseForm:
|
|||||||
CH_TEMP.Checked = .Temporary
|
CH_TEMP.Checked = .Temporary
|
||||||
CH_DOWN_IMAGES.Checked = .DownloadImages
|
CH_DOWN_IMAGES.Checked = .DownloadImages
|
||||||
CH_DOWN_VIDEOS.Checked = .DownloadVideos
|
CH_DOWN_VIDEOS.Checked = .DownloadVideos
|
||||||
CH_PARSE_USER_MEDIA.Checked = s = Sites.Twitter AndAlso .GetUserMediaOnly.Value
|
CH_PARSE_USER_MEDIA.Checked = .GetUserMediaOnly.Value
|
||||||
CH_PARSE_USER_MEDIA.Enabled = s = Sites.Twitter
|
|
||||||
CH_READY_FOR_DOWN.Checked = Not CH_TEMP.Checked
|
CH_READY_FOR_DOWN.Checked = Not CH_TEMP.Checked
|
||||||
End With
|
End With
|
||||||
End If
|
End If
|
||||||
@@ -322,7 +317,6 @@ CloseForm:
|
|||||||
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
|
CH_AUTO_DETECT_SITE.Enabled = True
|
||||||
CH_PARSE_USER_MEDIA.Enabled = True
|
|
||||||
Else
|
Else
|
||||||
TXT_DESCR.GroupBoxText = "Description"
|
TXT_DESCR.GroupBoxText = "Description"
|
||||||
CH_AUTO_DETECT_SITE.Checked = False
|
CH_AUTO_DETECT_SITE.Checked = False
|
||||||
@@ -396,7 +390,7 @@ CloseForm:
|
|||||||
.DownloadImages = CH_DOWN_IMAGES.Checked
|
.DownloadImages = CH_DOWN_IMAGES.Checked
|
||||||
.DownloadVideos = CH_DOWN_VIDEOS.Checked
|
.DownloadVideos = CH_DOWN_VIDEOS.Checked
|
||||||
.Labels.ListAddList(UserLabels)
|
.Labels.ListAddList(UserLabels)
|
||||||
If s = Sites.Twitter Then .ParseUserMediaOnly = CH_PARSE_USER_MEDIA.Checked
|
.ParseUserMediaOnly = CH_PARSE_USER_MEDIA.Checked
|
||||||
.UpdateUserInformation()
|
.UpdateUserInformation()
|
||||||
End With
|
End With
|
||||||
Added += 1
|
Added += 1
|
||||||
|
|||||||
@@ -330,7 +330,8 @@ CloseResume:
|
|||||||
If f.StartIndex >= 0 Then
|
If f.StartIndex >= 0 Then
|
||||||
OnUsersAddedHandler(f.StartIndex)
|
OnUsersAddedHandler(f.StartIndex)
|
||||||
Else
|
Else
|
||||||
i = Settings.Users.FindIndex(Function(u) u.Site = f.User.Site And u.Name = f.User.Name)
|
Dim SimpleUser As Predicate(Of IUserData) = Function(u) u.Site = f.User.Site And u.Name = f.User.Name
|
||||||
|
i = Settings.Users.FindIndex(Function(u) If(u.IsCollection, DirectCast(u, UserDataBind).Collections.Exists(SimpleUser), SimpleUser.Invoke(u)))
|
||||||
If i < 0 Then
|
If i < 0 Then
|
||||||
If Not UserBanned(f.User.Name) Then
|
If Not UserBanned(f.User.Name) Then
|
||||||
Settings.UpdateUsersList(f.User)
|
Settings.UpdateUsersList(f.User)
|
||||||
@@ -1002,7 +1003,7 @@ CloseResume:
|
|||||||
Dim l%? = Nothing
|
Dim l%? = Nothing
|
||||||
If UseLimits Then
|
If UseLimits Then
|
||||||
Do
|
Do
|
||||||
l = AConvert(Of Integer)(InputBoxE("Enter top posts limit for downloading:", "Download limit", 10), Nothing)
|
l = AConvert(Of Integer)(InputBoxE("Enter top posts limit for downloading:", "Download limit", 10), AModes.Var, Nothing)
|
||||||
If l.HasValue Then
|
If l.HasValue Then
|
||||||
Select Case MsgBoxE(New MMessage($"You are set up downloading top [{l.Value}] posts", "Download limit",
|
Select Case MsgBoxE(New MMessage($"You are set up downloading top [{l.Value}] posts", "Download limit",
|
||||||
{"Confirm", "Try again", "Disable limit", "Cancel"}) With {.ButtonsPerRow = 2}).Index
|
{"Confirm", "Try again", "Disable limit", "Cancel"}) With {.ButtonsPerRow = 2}).Index
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
' This program is distributed in the hope that it will be useful,
|
' This program is distributed in the hope that it will be useful,
|
||||||
' but WITHOUT ANY WARRANTY
|
' but WITHOUT ANY WARRANTY
|
||||||
Imports PersonalUtilities.Functions.XML
|
Imports PersonalUtilities.Functions.XML
|
||||||
|
Imports PersonalUtilities.Functions.RegularExpressions
|
||||||
Imports PersonalUtilities.Tools.WEB
|
Imports PersonalUtilities.Tools.WEB
|
||||||
Imports PersonalUtilities.Forms.Toolbars
|
Imports PersonalUtilities.Forms.Toolbars
|
||||||
Imports SCrawler.API
|
Imports SCrawler.API
|
||||||
@@ -14,8 +15,8 @@ Imports SCrawler.API.Base
|
|||||||
Friend Module MainMod
|
Friend Module MainMod
|
||||||
Friend Settings As SettingsCLS
|
Friend Settings As SettingsCLS
|
||||||
Friend Const SettingsFolderName As String = "Settings"
|
Friend Const SettingsFolderName As String = "Settings"
|
||||||
Friend ReadOnly LinkPattern As New RegexStructure("[htps:]{0,6}[/]{0,2}(.+)", 1)
|
Friend ReadOnly LinkPattern As RParams = RParams.DMS("[htps:]{0,6}[/]{0,2}(.+)", 1)
|
||||||
Friend ReadOnly FilesPattern As New RegexStructure("[^\./]+?\.\w+", True, False, 1,,,, String.Empty, EDP.ReturnValue)
|
Friend ReadOnly FilesPattern As RParams = RParams.DM("[^\./]+?\.\w+", 1, EDP.ReturnValue)
|
||||||
Friend Const LVI_TempOption As String = "Temp"
|
Friend Const LVI_TempOption As String = "Temp"
|
||||||
Friend Const LVI_FavOption As String = "Favorite"
|
Friend Const LVI_FavOption As String = "Favorite"
|
||||||
Friend Const CannelsLabelName As String = "Channels"
|
Friend Const CannelsLabelName As String = "Channels"
|
||||||
|
|||||||
@@ -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("2.0.0.2")>
|
<Assembly: AssemblyVersion("2.0.0.4")>
|
||||||
<Assembly: AssemblyFileVersion("2.0.0.2")>
|
<Assembly: AssemblyFileVersion("2.0.0.4")>
|
||||||
<Assembly: NeutralResourcesLanguage("en")>
|
<Assembly: NeutralResourcesLanguage("en")>
|
||||||
|
|||||||
@@ -51,11 +51,8 @@ Friend Class SettingsCLS : Implements IDisposable
|
|||||||
|
|
||||||
Dim n() As String = {"Defaults"}
|
Dim n() As String = {"Defaults"}
|
||||||
DefaultTemporary = New XMLValue(Of Boolean)("Temporary", False, MyXML, n)
|
DefaultTemporary = New XMLValue(Of Boolean)("Temporary", False, MyXML, n)
|
||||||
DefaultTemporary.ReplaceByValue("DefaultTemporary")
|
|
||||||
DefaultDownloadImages = New XMLValue(Of Boolean)("DownloadImages", True, MyXML, n)
|
DefaultDownloadImages = New XMLValue(Of Boolean)("DownloadImages", True, MyXML, n)
|
||||||
DefaultDownloadImages.ReplaceByValue("DefaultDownloadImages")
|
|
||||||
DefaultDownloadVideos = New XMLValue(Of Boolean)("DownloadVideos", True, MyXML, n)
|
DefaultDownloadVideos = New XMLValue(Of Boolean)("DownloadVideos", True, MyXML, n)
|
||||||
DefaultDownloadVideos.ReplaceByValue("DefaultDownloadVideos")
|
|
||||||
ChangeReadyForDownOnTempChange = New XMLValue(Of Boolean)("ChangeReadyForDownOnTempChange", True, MyXML, n)
|
ChangeReadyForDownOnTempChange = New XMLValue(Of Boolean)("ChangeReadyForDownOnTempChange", True, MyXML, n)
|
||||||
|
|
||||||
MySites = New Dictionary(Of Sites, SiteSettings) From {
|
MySites = New Dictionary(Of Sites, SiteSettings) From {
|
||||||
@@ -89,33 +86,21 @@ Friend Class SettingsCLS : Implements IDisposable
|
|||||||
ChannelsDefaultTemporary = New XMLValue(Of Boolean)("ChannelsDefaultTemporary", True, MyXML, n)
|
ChannelsDefaultTemporary = New XMLValue(Of Boolean)("ChannelsDefaultTemporary", True, MyXML, n)
|
||||||
ChannelsRegularCheckMD5 = New XMLValue(Of Boolean)("ChannelsRegularCheckMD5", False, MyXML, n)
|
ChannelsRegularCheckMD5 = New XMLValue(Of Boolean)("ChannelsRegularCheckMD5", False, MyXML, n)
|
||||||
ChannelsImagesRows = New XMLValue(Of Integer)("ImagesRows", 2, MyXML, n)
|
ChannelsImagesRows = New XMLValue(Of Integer)("ImagesRows", 2, MyXML, n)
|
||||||
ChannelsImagesRows.ReplaceByValue("ChannelsImagesRows")
|
|
||||||
ChannelsImagesColumns = New XMLValue(Of Integer)("ImagesColumns", 5, MyXML, n)
|
ChannelsImagesColumns = New XMLValue(Of Integer)("ImagesColumns", 5, MyXML, n)
|
||||||
ChannelsImagesColumns.ReplaceByValue("ChannelsImagesColumns")
|
|
||||||
ChannelsHideExistsUser = New XMLValue(Of Boolean)("HideExistsUser", True, MyXML, n)
|
ChannelsHideExistsUser = New XMLValue(Of Boolean)("HideExistsUser", True, MyXML, n)
|
||||||
ChannelsHideExistsUser.ReplaceByValue("ChannelsHideExistsUser")
|
|
||||||
ChannelsMaxJobsCount = New XMLValue(Of Integer)("MaxJobsCount", DefaultMaxDownloadingTasks, MyXML, n)
|
ChannelsMaxJobsCount = New XMLValue(Of Integer)("MaxJobsCount", DefaultMaxDownloadingTasks, MyXML, n)
|
||||||
ChannelsMaxJobsCount.ReplaceByValue("ChannelsMaxJobsCount")
|
|
||||||
|
|
||||||
n = {"Users"}
|
n = {"Users"}
|
||||||
FromChannelDownloadTop = New XMLValue(Of Integer)("FromChannelDownloadTop", 10, MyXML, n)
|
FromChannelDownloadTop = New XMLValue(Of Integer)("FromChannelDownloadTop", 10, MyXML, n)
|
||||||
FromChannelDownloadTop.ReplaceByValue("FromChannelDownloadTop")
|
|
||||||
FromChannelDownloadTopUse = New XMLValue(Of Boolean)("FromChannelDownloadTopUse", False, MyXML, n)
|
FromChannelDownloadTopUse = New XMLValue(Of Boolean)("FromChannelDownloadTopUse", False, MyXML, n)
|
||||||
FromChannelDownloadTopUse.ReplaceByValue("FromChannelDownloadTopUse")
|
|
||||||
FromChannelCopyImageToUser = New XMLValue(Of Boolean)("FromChannelCopyImageToUser", True, MyXML, n)
|
FromChannelCopyImageToUser = New XMLValue(Of Boolean)("FromChannelCopyImageToUser", True, MyXML, n)
|
||||||
FromChannelCopyImageToUser.ReplaceByValue("FromChannelCopyImageToUser")
|
|
||||||
|
|
||||||
n = {"Users", "FileName"}
|
n = {"Users", "FileName"}
|
||||||
MaxUsersJobsCount = New XMLValue(Of Integer)("MaxJobsCount", DefaultMaxDownloadingTasks, MyXML, n)
|
MaxUsersJobsCount = New XMLValue(Of Integer)("MaxJobsCount", DefaultMaxDownloadingTasks, MyXML, n)
|
||||||
MaxUsersJobsCount.ReplaceByValue("MaxUsersJobsCount")
|
|
||||||
FileAddDateToFileName = New XMLValue(Of Boolean)("FileAddDateToFileName", False, MyXML, n) With {.OnChangeFunction = AddressOf ChangeDateProvider}
|
FileAddDateToFileName = New XMLValue(Of Boolean)("FileAddDateToFileName", False, MyXML, n) With {.OnChangeFunction = AddressOf ChangeDateProvider}
|
||||||
FileAddDateToFileName.ReplaceByValue("FileAddDateToFileName")
|
|
||||||
FileAddTimeToFileName = New XMLValue(Of Boolean)("FileAddTimeToFileName", False, MyXML, n) With {.OnChangeFunction = AddressOf ChangeDateProvider}
|
FileAddTimeToFileName = New XMLValue(Of Boolean)("FileAddTimeToFileName", False, MyXML, n) With {.OnChangeFunction = AddressOf ChangeDateProvider}
|
||||||
FileAddTimeToFileName.ReplaceByValue("FileAddTimeToFileName")
|
|
||||||
FileDateTimePositionEnd = New XMLValue(Of Boolean)("FileDateTimePositionEnd", True, MyXML, n) With {.OnChangeFunction = AddressOf ChangeDateProvider}
|
FileDateTimePositionEnd = New XMLValue(Of Boolean)("FileDateTimePositionEnd", True, MyXML, n) With {.OnChangeFunction = AddressOf ChangeDateProvider}
|
||||||
FileDateTimePositionEnd.ReplaceByValue("FileDateTimePositionEnd")
|
|
||||||
FileReplaceNameByDate = New XMLValue(Of Boolean)("FileReplaceNameByDate", False, MyXML, n)
|
FileReplaceNameByDate = New XMLValue(Of Boolean)("FileReplaceNameByDate", False, MyXML, n)
|
||||||
FileReplaceNameByDate.ReplaceByValue("FileReplaceNameByDate")
|
|
||||||
|
|
||||||
CheckUpdatesAtStart = New XMLValue(Of Boolean)("CheckUpdatesAtStart", True, MyXML)
|
CheckUpdatesAtStart = New XMLValue(Of Boolean)("CheckUpdatesAtStart", True, MyXML)
|
||||||
ShowNewVersionNotification = New XMLValue(Of Boolean)("ShowNewVersionNotification", True, MyXML)
|
ShowNewVersionNotification = New XMLValue(Of Boolean)("ShowNewVersionNotification", True, MyXML)
|
||||||
|
|||||||
@@ -184,8 +184,8 @@ Friend Class TDownloader : Implements IDisposable
|
|||||||
If _Job.Count > 0 Then
|
If _Job.Count > 0 Then
|
||||||
Const nf As ANumbers.Formats = ANumbers.Formats.Number
|
Const nf As ANumbers.Formats = ANumbers.Formats.Number
|
||||||
Dim t As New List(Of Task)
|
Dim t As New List(Of Task)
|
||||||
Dim i% = -1
|
Dim i% = 0
|
||||||
Dim j% = Settings.MaxUsersJobsCount - 1
|
Dim j% = Settings.MaxUsersJobsCount
|
||||||
Dim limit% = IIf(_Job.Site = Sites.Instagram, 1, j)
|
Dim limit% = IIf(_Job.Site = Sites.Instagram, 1, j)
|
||||||
Dim Keys As New List(Of String)
|
Dim Keys As New List(Of String)
|
||||||
Dim h As Boolean = False
|
Dim h As Boolean = False
|
||||||
|
|||||||
Reference in New Issue
Block a user