]*?id=""([^""]+)[^\>]*?\>)\s*\
]*?\>[^\<\>]*?\\s*\
)",
19 | 0, RegexReturn.List, RegexOptions.Singleline, RegexOptions.IgnoreCase, EDP.ReturnValue)
20 | Friend ReadOnly Regex_Video As RParams = RParams.DMS("", 1, EDP.ReturnValue,
15 | CType(Function(Input$) Input.StringTrim, Func(Of String, String)))
16 | Friend ReadOnly FirstM3U8FileRegEx As RParams = RParams.DM("RESOLUTION=\d+x(\d+).*?[\r\n]+?([^#]*?\.m3u8.*)", 0, RegexReturn.List)
17 | Friend ReadOnly SecondM3U8FileRegEx As RParams = RParams.DM("(#EXT-X-MAP.URI=""([^""]+((?<=\.)([^\?\.]{2,5})(?=(\?|\Z|"")))(.+|))""|#EXTINF[^\r\n]*[\r\n]+(([^\r\n]+((?<=\.)([^\?\.\r\n]{2,5})(?=(\?[^\r\n]+|[\r\n]+)))([^\r\n]+|))([\r\n]+|\Z)))", 0, RegexReturn.List)
18 | End Module
19 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/API/Xhamster/UserExchangeOptions.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Imports SCrawler.Plugin.Attributes
10 | Namespace API.Xhamster
11 | Friend Class UserExchangeOptions
12 |
14 | Friend Property QueryString As String
15 | Friend Sub New()
16 | End Sub
17 | Friend Sub New(ByVal u As UserData)
18 | QueryString = u.QueryString
19 | End Sub
20 | End Class
21 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/API/YouTube/UserExchangeOptions.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Imports SCrawler.Plugin.Attributes
10 | Namespace API.YouTube
11 | Friend Class UserExchangeOptions
12 |
13 | Friend Property DownloadVideos As Boolean
14 |
15 | Friend Property DownloadShorts As Boolean
16 |
17 | Friend Property DownloadPlaylists As Boolean
18 |
19 | Friend Property DownloadCommunityImages As Boolean
20 |
21 | Friend Property DownloadCommunityVideos As Boolean
22 |
23 | Friend Property UseCookies As Boolean
24 |
25 | Friend Property ChannelID As String
26 | Friend Sub New(ByVal u As UserData)
27 | DownloadVideos = u.DownloadYTVideos
28 | DownloadShorts = u.DownloadYTShorts
29 | DownloadPlaylists = u.DownloadYTPlaylists
30 | DownloadCommunityImages = u.DownloadYTCommunityImages
31 | DownloadCommunityVideos = u.DownloadYTCommunityVideos
32 | UseCookies = u.YTUseCookies
33 | ChannelID = u.ChannelID
34 | End Sub
35 | Friend Sub New(ByVal s As SiteSettings)
36 | DownloadVideos = s.DownloadVideos.Value
37 | DownloadShorts = s.DownloadShorts.Value
38 | DownloadPlaylists = s.DownloadPlaylists.Value
39 | DownloadCommunityImages = s.DownloadCommunityImages.Value
40 | DownloadCommunityVideos = s.DownloadCommunityVideos.Value
41 | UseCookies = s.UseCookies.Value
42 | End Sub
43 | End Class
44 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/API/YouTube/YTPreProgress.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Imports PersonalUtilities.Forms.Toolbars
10 | Namespace API.YouTube
11 | Friend Class YTPreProgress : Inherits MyProgress
12 | Private ReadOnly AssocProgress As PreProgress
13 | Friend Sub New(ByRef ExtProgress As PreProgress)
14 | AssocProgress = ExtProgress
15 | End Sub
16 | Public Overrides Property Maximum As Double
17 | Get
18 | Return _Maximum
19 | End Get
20 | Set(ByVal Max As Double)
21 | _Maximum = Max
22 | AssocProgress.ChangeMax(Max, False)
23 | End Set
24 | End Property
25 | Public Overrides Sub Perform(Optional ByVal Value As Double = 1)
26 | AssocProgress.Perform(Value)
27 | End Sub
28 | Public Overrides Sub Done()
29 | AssocProgress.Done()
30 | End Sub
31 | Public Overrides Property Visible(Optional ByVal ProgressBar As Boolean = True, Optional ByVal Label As Boolean = True) As Boolean
32 | Get
33 | Return True
34 | End Get
35 | Set : End Set
36 | End Property
37 | End Class
38 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/API/YouTube/YTSettings_Internal.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Imports PersonalUtilities.Functions.XML.Base
10 | Namespace API.YouTube
11 | Friend Class YTSettings_Internal : Inherits Base.YouTubeSettings
12 | Private DataUpdated As Boolean = False
13 | Friend CookiesUpdated As Boolean = False
14 | Friend Sub ResetUpdate()
15 | XMLValuesEndEdit(Me)
16 | DataUpdated = False
17 | CookiesUpdated = False
18 | End Sub
19 | Friend Sub PerformUpdate()
20 | If DataUpdated Then
21 | MyBase.BeginUpdate()
22 | MyBase.Apply()
23 | MyBase.EndUpdate()
24 | ElseIf CookiesUpdated Then
25 | ApplyCookies()
26 | End If
27 | End Sub
28 | Protected Overrides Sub Apply()
29 | DataUpdated = True
30 | End Sub
31 | Protected Overrides Sub BeginUpdate()
32 | End Sub
33 | Protected Overrides Sub EndUpdate()
34 | End Sub
35 | Protected Overrides Sub EndEdit()
36 | End Sub
37 | End Class
38 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/ArrowDownIcon_Blue_24.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/ArrowDownIcon_Blue_24.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/BookmarkIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/BookmarkIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/GroupByIcon_16.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/GroupByIcon_16.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/RSSIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/RSSIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/RainbowIcon_48.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/RainbowIcon_48.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SettingsIcon_48.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SettingsIcon_48.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/BlueskyIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/BlueskyIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/FacebookIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/FacebookIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/InstagramIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/InstagramIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/JFFIcon_64.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/JFFIcon_64.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/LPSGIcon_48.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/LPSGIcon_48.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/MastodonIcon_48.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/MastodonIcon_48.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/OnlyFansIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/OnlyFansIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/PinterestIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/PinterestIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/PornHubIcon_16.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/PornHubIcon_16.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/RedGifsIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/RedGifsIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/RedditIcon_128.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/RedditIcon_128.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/ThisVidIcon_16.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/ThisVidIcon_16.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/ThreadsIcon_192.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/ThreadsIcon_192.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/TikTokIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/TikTokIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/TwitterIconNew_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/TwitterIconNew_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/TwitterIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/TwitterIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/XhamsterIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/XhamsterIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/SiteIcons/XvideosIcon_48.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/SiteIcons/XvideosIcon_48.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/TagIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/TagIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Icons/UsersIcon_32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Icons/UsersIcon_32.ico
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/ApplicationPic_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/ApplicationPic_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/ArrowDownPic_Blue_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/ArrowDownPic_Blue_24.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/BookmarkBlack_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/BookmarkBlack_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/BrushToolPic_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/BrushToolPic_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/CutPic_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/CutPic_48.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/DBPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/DBPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/DeletePic_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/DeletePic_24.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/FindPic_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/FindPic_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/FolderPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/FolderPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/GlobePic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/GlobePic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/HeartPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/HeartPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/InfoPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/InfoPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/MessagePic_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/MessagePic_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/OkPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/OkPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/PastePic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/PastePic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/Pause_Blue_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/Pause_Blue_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/PencilPic_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/PencilPic_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/PicturePic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/PicturePic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/PinPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/PinPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/PlusPic_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/PlusPic_24.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/RSSPic_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/RSSPic_512.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/RefreshPic_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/RefreshPic_24.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/ScriptPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/ScriptPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SettingsPic_16.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SettingsPic_16.bmp
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/BlueskyPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/BlueskyPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/FacebookPic_37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/FacebookPic_37.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/InstagramPic_76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/InstagramPic_76.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/JFFPic_76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/JFFPic_76.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/LPSGPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/LPSGPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/MastodonPic_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/MastodonPic_48.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/OnlyFansPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/OnlyFansPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/PinterestPic_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/PinterestPic_48.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/PornHubPic_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/PornHubPic_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/RedGifsPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/RedGifsPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/RedditPic_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/RedditPic_512.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/ThisVidPic_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/ThisVidPic_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/TikTokPic_192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/TikTokPic_192.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/XhamsterPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/XhamsterPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/SitePictures/XvideosPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/SitePictures/XvideosPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/StarPic_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/StarPic_24.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/StartPic_Green_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/StartPic_Green_16.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/StopPic_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/StopPic_32.png
--------------------------------------------------------------------------------
/SCrawler/Content/Pictures/TagPic_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AAndyProgram/SCrawler/ff0c4587eb31731b140c260999c3b60c13fe976c/SCrawler/Content/Pictures/TagPic_24.png
--------------------------------------------------------------------------------
/SCrawler/Download/Feed/FeedMoveCopyTo.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Imports UTypes = SCrawler.API.Base.UserMedia.Types
10 | Namespace DownloadObjects
11 | Friend Structure FeedMoveCopyTo
12 | Friend Destination As SFile
13 | Friend SeparateVideoFolder As Boolean
14 | Friend ReplaceUserProfile As Boolean
15 | Friend ReplaceUserProfile_CreateIfNull As Boolean
16 | Friend ReplaceUserProfile_Profile As API.Base.IUserData
17 | Friend ReadOnly Property DestinationTrue(ByVal Media As TDownloader.UserMediaD) As SFile
18 | Get
19 | If SeparateVideoFolder Then
20 | Dim f$ = Destination.PathWithSeparator
21 | With Media.Data
22 | If Not (.Type = UTypes.Picture Or .Type = UTypes.GIF Or .Type = UTypes.Text) Then f &= "Video\"
23 | End With
24 | Return f
25 | Else
26 | Return Destination
27 | End If
28 | End Get
29 | End Property
30 | End Structure
31 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/Download/STDownloader/Declarations.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Imports PersonalUtilities.Tools
10 | Namespace DownloadObjects.STDownloader
11 | Friend Module Declarations
12 | Private _MyFilesCache As CacheKeeper = Nothing
13 | Friend ReadOnly Property MyFilesCache As CacheKeeper
14 | Get
15 | If _MyFilesCache Is Nothing Then _MyFilesCache = New CacheKeeper(DownloaderDataFolder) With {.DeleteCacheOnDispose = False, .DeleteRootOnDispose = False}
16 | Return _MyFilesCache
17 | End Get
18 | End Property
19 | End Module
20 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/Download/STDownloader/VideoDownloaderForm.Designer.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Namespace DownloadObjects.STDownloader
10 |
11 | Partial Friend Class VideoDownloaderForm : Inherits SCrawler.DownloadObjects.STDownloader.VideoListForm
12 |
13 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
14 | If disposing AndAlso components IsNot Nothing Then
15 | components.Dispose()
16 | End If
17 | MyBase.Dispose(disposing)
18 | End Sub
19 | Private components As System.ComponentModel.IContainer
20 |
21 | Private Sub InitializeComponent()
22 | Me.SuspendLayout()
23 | '
24 | 'VideoDownloaderForm
25 | '
26 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
27 | Me.ClientSize = New System.Drawing.Size(584, 461)
28 | Me.MinimumSize = New System.Drawing.Size(300, 200)
29 | Me.Name = "VideoDownloaderForm"
30 | Me.ResumeLayout(False)
31 | Me.PerformLayout()
32 |
33 | End Sub
34 | End Class
35 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/Editors/SiteSelectionForm.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Imports PersonalUtilities.Forms
10 | Imports PersonalUtilities.Forms.Controls.Base
11 | Namespace Editors
12 | Friend Class SiteSelectionForm
13 | Private WithEvents MyDefs As DefaultFormOptions
14 | Friend ReadOnly Property SelectedSites As List(Of String)
15 | Friend Sub New(ByVal s As List(Of String))
16 | InitializeComponent()
17 | SelectedSites.ListAddList(s)
18 | If SelectedSites Is Nothing Then SelectedSites = New List(Of String)
19 | MyDefs = New DefaultFormOptions(Me, Settings.Design)
20 | End Sub
21 | Private Sub SiteSelectionForm_Load(sender As Object, e As EventArgs) Handles Me.Load
22 | Try
23 | With MyDefs
24 | .MyViewInitialize(True)
25 | .AddOkCancelToolbar()
26 | CMB_SITES.BeginUpdate()
27 | Dim sl As List(Of String) = Settings.Plugins.Select(Function(p) p.Name).ToList
28 | CMB_SITES.Items.AddRange(sl.Select(Function(s) New ListItem(s)))
29 | Dim l As New List(Of Integer)
30 | If SelectedSites.Count > 0 Then sl.ForEach(Sub(s) If SelectedSites.Contains(s) Then l.Add(sl.IndexOf(s)))
31 | sl.Clear()
32 | CMB_SITES.EndUpdate()
33 | If l.Count > 0 Then CMB_SITES.ListCheckedIndexes = l : l.Clear()
34 | .DelegateClosingChecker = False
35 | .EndLoaderOperations()
36 | .MyOkCancel.EnableOK = True
37 | End With
38 | Catch ex As Exception
39 | MyDefs.InvokeLoaderError(ex)
40 | End Try
41 | End Sub
42 | Private Sub SiteSelectionForm_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
43 | SelectedSites.Clear()
44 | End Sub
45 | Private Sub MyDefs_ButtonOkClick(ByVal Sender As Object, ByVal e As KeyHandleEventArgs) Handles MyDefs.ButtonOkClick
46 | Try
47 | SelectedSites.ListAddList(CMB_SITES.Items.CheckedItems.Select(Function(i) CStr(i.Value(0))), LAP.ClearBeforeAdd)
48 | MyDefs.CloseForm()
49 | Catch ex As Exception
50 | ErrorsDescriber.Execute(EDP.LogMessageValue, ex)
51 | End Try
52 | End Sub
53 | End Class
54 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/GlobalSuppressions.vb:
--------------------------------------------------------------------------------
1 | ' This file is used by Code Analysis to maintain SuppressMessage
2 | ' attributes that are applied to this project.
3 | ' Project-level suppressions either have no target or are given
4 | ' a specific target and scoped to a namespace, type, member, etc.
5 | Imports System.Diagnostics.CodeAnalysis
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/SCrawler/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | 'NOTE: This file is auto-generated; do not modify it directly. To make changes,
18 | ' or if you encounter build errors in this file, go to the Project Designer
19 | ' (go to Project Properties or double-click the My Project node in
20 | ' Solution Explorer), and make changes on the Application tab.
21 | '
22 | Partial Friend Class MyApplication
23 |
24 | _
25 | Public Sub New()
26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
27 | Me.IsSingleInstance = true
28 | Me.EnableVisualStyles = true
29 | Me.SaveMySettingsOnExit = false
30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
31 | End Sub
32 |
33 | _
34 | Protected Overrides Sub OnCreateMainForm()
35 | Me.MainForm = Global.SCrawler.MainFrame
36 | End Sub
37 | End Class
38 | End Namespace
39 |
--------------------------------------------------------------------------------
/SCrawler/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | MainFrame
5 | true
6 | 0
7 | true
8 | 0
9 | false
10 |
--------------------------------------------------------------------------------
/SCrawler/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System.Resources
2 | Imports System
3 | Imports System.Reflection
4 | Imports System.Runtime.InteropServices
5 |
6 | ' General Information about an assembly is controlled through the following
7 | ' set of attributes. Change these attribute values to modify the information
8 | ' associated with an assembly.
9 |
10 | ' Review the values of the assembly attributes
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 'The following GUID is for the ID of the typelib if this project is exposed to COM
22 |
23 |
24 | ' Version information for an assembly consists of the following four values:
25 | '
26 | ' Major Version
27 | ' Minor Version
28 | ' Build Number
29 | ' Revision
30 | '
31 | ' You can specify all the values or you can default the Build and Revision Numbers
32 | ' by using the '*' as shown below:
33 | '
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/SCrawler/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SCrawler/PluginsEnvironment/Hosts/LogHost.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Namespace Plugin.Hosts
10 | Friend Class LogHost : Implements ILogProvider
11 | Friend Sub Add(ByVal Message As String) Implements ILogProvider.Add
12 | MyMainLOG = Message
13 | End Sub
14 | Friend Sub Add(ByVal ex As Exception, ByVal Message As String,
15 | Optional ByVal ShowMainMsg As Boolean = False, Optional ByVal ShowErrorMsg As Boolean = False,
16 | Optional ByVal SendToLog As Boolean = True) Implements ILogProvider.Add
17 | ErrorsDescriber.Execute(New ErrorsDescriber(ShowMainMsg, ShowErrorMsg, SendToLog), ex, Message)
18 | End Sub
19 | End Class
20 | End Namespace
--------------------------------------------------------------------------------
/SCrawler/ToolStripKeysButton.vb:
--------------------------------------------------------------------------------
1 | ' Copyright (C) 2023 Andy https://github.com/AAndyProgram
2 | ' This program is free software: you can redistribute it and/or modify
3 | ' it under the terms of the GNU General Public License as published by
4 | ' the Free Software Foundation, either version 3 of the License, or
5 | ' (at your option) any later version.
6 | '
7 | ' This program is distributed in the hope that it will be useful,
8 | ' but WITHOUT ANY WARRANTY
9 | Imports System.ComponentModel
10 | Imports PersonalUtilities.Forms.Controls.KeyClick
11 | Public Class ToolStripKeyMenuItem : Inherits ToolStripMenuItemKeyClick
12 | Public Sub New()
13 | MyEventArgs = New MyKeyEventArgs
14 | End Sub
15 | Public Sub New(ByVal Text As String, ByVal Image As Image)
16 | MyBase.New(Text, Image)
17 | MyEventArgs = New MyKeyEventArgs
18 | End Sub
19 | Friend Const FeedToolTipText As String = "Click: download, include in the feed." & vbCr & "Ctrl+Click: download, exclude from feed."
20 | Private _AddFeedText As Boolean = True
21 | Public Property AddFeedText As Boolean
22 | Get
23 | Return _AddFeedText
24 | End Get
25 | Set(ByVal _AddFeedText As Boolean)
26 | Me._AddFeedText = _AddFeedText
27 | ToolTipText = _ToolTipTextOriginal
28 | End Set
29 | End Property
30 | Protected _ToolTipTextOriginal As String = String.Empty
31 | Public Overloads Property ToolTipText As String
32 | Get
33 | Return _ToolTipTextOriginal
34 | End Get
35 | Set(ByVal t As String)
36 | _ToolTipTextOriginal = t
37 | If AddFeedText Then
38 | If _ToolTipTextOriginal.IsEmptyString Then
39 | MyBase.ToolTipText = FeedToolTipText
40 | Else
41 | MyBase.ToolTipText = $"{_ToolTipTextOriginal}{vbCr}{FeedToolTipText}"
42 | End If
43 | Else
44 | MyBase.ToolTipText = _ToolTipTextOriginal
45 | End If
46 | End Set
47 | End Property
48 | End Class
49 | Public Class MyKeyEventArgs : Inherits KeyClickEventArgs
50 | Public Property IncludeInTheFeed As Boolean
51 | Get
52 | Return Not _Control
53 | End Get
54 | Set(ByVal Included As Boolean)
55 | _Control = Not Included
56 | End Set
57 | End Property
58 | Public Sub New()
59 | MyBase.New()
60 | End Sub
61 | Public Sub New(ByVal e As KeyEventArgs)
62 | MyBase.New(e)
63 | End Sub
64 | End Class
--------------------------------------------------------------------------------
/SCrawler/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Tools/ArchiveSCrawlerUsersDataFiles.bat:
--------------------------------------------------------------------------------
1 | REM This script is written for WinRAR. It only archives user data files. Not user content!
2 | REM Replace 'd:\Downloads\SocialNetworks\SCrawlerBackup.rar' with the archive destination.
3 | REM Replace 'd:\Downloads\SocialNetworks\' with the path to your SCrawler data folder.
4 | REM THIS SCRIPT IS NOT SUITABLE FOR 7ZIP OR OTHER ARCHIVING PROGRAMS.
5 | REM But I believe 7Zip also has CLI commands
6 |
7 | REM This line archives SCrawler settings files.
8 | "C:\Program Files\WinRAR\WinRAR.exe" a -r -ep1 -o+ -ag_YYYYMMDD_HHMMSS -m5 -tl "D:\MyPrograms\SCrawler\Backup\Settings.rar" "D:\MyPrograms\SCrawler\Settings\"
9 |
10 | REM This line archives SCrawler users' settings files.
11 | "C:\Program Files\WinRAR\WinRAR.exe" a -r -ep1 -o+ -ag_YYYYMMDD_HHMMSS -m5 -tl -n*.txt -n*.xml "D:\MyPrograms\SCrawler\Backup\SCrawlerBackup.rar" "D:\MyPrograms\SCrawler\Data\"
--------------------------------------------------------------------------------
/Tools/DeleteGDLTempFiles.bat:
--------------------------------------------------------------------------------
1 | REM https://superuser.com/a/577640/1410018
2 |
3 | @echo off
4 |
5 | set dirname=_MEI
6 | set usewildcard=true
7 | set found=false
8 | if %usewildcard% == true (
9 | set dirname=*%dirname%*
10 | )
11 | set directorytosearch=%UserProfile%\AppData\Local\Temp
12 | echo Searching for %dirname% in %directorytosearch%
13 |
14 | for /d %%i in (%directorytosearch%\%dirname%) do (
15 | IF EXIST %%i (
16 | set found=true
17 | echo Deleting the folder %%i
18 | rmdir /s /q "%%i"
19 | )
20 | )
21 |
22 | if NOT "%found%" == "true" (
23 | echo No directories were found with the name of %dirname%
24 | )
--------------------------------------------------------------------------------
/Tools/NET.FrameworkVersion.ps1:
--------------------------------------------------------------------------------
1 | try{Set-ExecutionPolicy Unrestricted CurrentUser -ErrorAction SilentlyContinue}catch{}
2 | $arr=Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\|Select-Object Name
3 | $mv=0
4 | $found=0
5 | foreach($v in $arr){if($v.Name -match "v4.0."){$mv=$v.Name}}
6 | if($mv -ne 0)
7 | {
8 | $arr=Get-ChildItem -Path Registry::"$mv\SKUs\"|Select-Object Name
9 | if($arr.Count -ge 0)
10 | {
11 | foreach($v in $arr){if($v.Name -match "v4.6.1"){$found=1}}
12 | }
13 | }
14 | if($found -eq 0)
15 | {
16 | $a=Read-Host -Prompt "NET.Framework v4.6.1 not installed. Would you like to go to the Microsoft site to download this version? (y/n)"
17 | if($a -eq "y"){Start https://dotnet.microsoft.com/en-us/download/dotnet-framework/net461}
18 | }
19 | else
20 | {Read-Host "NET.Framework v4.6.1 installed. Press Enter to close."}
--------------------------------------------------------------------------------