mirror of
https://github.com/AAndyProgram/SCrawler.git
synced 2026-03-14 15:52:18 +00:00
Added GoTo Start/End channels buttons Fixed saved Reddit posts downloading Fixed Reddit accessibility check Disabled main progress bar progress when downloading saved posts Added Date and Time for Stories and Tagged Photos
67 lines
3.3 KiB
VB.net
67 lines
3.3 KiB
VB.net
' Copyright (C) 2022 Andy
|
|
' This program is free software: you can redistribute it and/or modify
|
|
' it under the terms of the GNU General Public License as published by
|
|
' the Free Software Foundation, either version 3 of the License, or
|
|
' (at your option) any later version.
|
|
'
|
|
' This program is distributed in the hope that it will be useful,
|
|
' but WITHOUT ANY WARRANTY
|
|
Imports System.Net
|
|
Imports PersonalUtilities.Functions.RegularExpressions
|
|
Namespace API.Base
|
|
Friend NotInheritable Class DownDetector
|
|
Private Shared ReadOnly Property Params As New RParams("x:.'([\S]+?)',.y:.(\d+)", -1, Nothing, RegexReturn.List)
|
|
Private Sub New()
|
|
End Sub
|
|
Friend Structure Data : Implements IRegExCreator, IComparable(Of Data)
|
|
Friend [Date] As Date
|
|
Friend Value As Integer
|
|
Friend Function CreateFromArray(ByVal ParamsArray() As String) As Object Implements IRegExCreator.CreateFromArray
|
|
If ParamsArray.ListExists Then
|
|
Try : [Date] = Date.Parse(ParamsArray(0)) : Catch : End Try
|
|
If ParamsArray.Length > 1 Then Value = AConvert(Of Integer)(ParamsArray(1), 0)
|
|
End If
|
|
Return Me
|
|
End Function
|
|
Public Overrides Function ToString() As String
|
|
Return $"{AConvert(Of String)([Date], ADateTime.Formats.BaseDateTime, String.Empty)} [{Value}]"
|
|
End Function
|
|
Friend Function CompareTo(ByVal Other As Data) As Integer Implements IComparable(Of Data).CompareTo
|
|
Return [Date].CompareTo(Other.Date) * -1
|
|
End Function
|
|
End Structure
|
|
Friend Shared Function GetData(ByVal Site As String) As List(Of Data)
|
|
Try
|
|
Dim l As List(Of Data) = Nothing
|
|
Dim l2 As List(Of Data) = Nothing
|
|
Using w As New WebClient
|
|
Dim r$ = w.DownloadString($"https://downdetector.co.uk/status/{Site}/")
|
|
If Not r.IsEmptyString Then
|
|
l = FNF.RegexFields(Of Data)(r, {Params}, {1, 2})
|
|
If l.ListExists(2) Then
|
|
l.Sort()
|
|
l2 = New List(Of Data)
|
|
Dim d As Data
|
|
Dim eDates As New List(Of Date)
|
|
Dim MaxValue As Func(Of Date, Integer) = Function(dd) (From ddd In l Where ddd.Date = dd Select ddd.Value).DefaultIfEmpty(0).Max
|
|
For i% = 0 To l.Count - 1
|
|
If Not eDates.Contains(l(i).Date) Then
|
|
d = l(i)
|
|
d.Value = MaxValue(d.Date)
|
|
l2.Add(d)
|
|
eDates.Add(d.Date)
|
|
End If
|
|
Next
|
|
eDates.Clear()
|
|
l.Clear()
|
|
l2.Sort()
|
|
End If
|
|
End If
|
|
End Using
|
|
Return l2
|
|
Catch ex As Exception
|
|
Return ErrorsDescriber.Execute(EDP.SendInLog + EDP.ReturnValue, ex, $"[DownDetector.GetData({Site})]")
|
|
End Try
|
|
End Function
|
|
End Class
|
|
End Namespace |