View difference between Paste ID: 4TfvbJbh and my3kDXDc
SHOW: | | - or go back to the newest paste.
1
#Region "Uses"
2
Imports System.IO
3
Imports System.Net
4
Imports System.Text.RegularExpressions
5
#End Region
6
7
Public Class Form1
8
9
#Region "Variables"
10
11
    ReadOnly Last_User_A As String = "El último usuario registrado es <strong><a href=""/u\d+"
12
    ReadOnly Last_User_B As String = "\d+" 'Regex.Replace(Last_User_A, "El último usuario registrado es <strong><a href=""/u", "")
13
    ReadOnly User_Title_A As String = "\>Perfil - \w+"
14
    'ReadOnly User_Title_B As String = "^(?:\S+\s){2}(\S+)" 'Regex.Replace(User_Title_A, "\>Perfil - ", "")
15
    ReadOnly File_Users As String = ".\Users-" & DateTime_To_Unix(Date.Now) & ".txt"
16
    ReadOnly Users_Pattern As String = "ID: {0} - Nick: {1}"
17
    Private Foroactivo_Users As New List(Of Tuple(Of Integer, String))
18
    Private IndexPattern As Integer = 0
19
    Dim urlDistinta As String
20
21
#End Region
22
23
#Region "Funciones"
24
25
    Private Function Get_URL_SourceCode(ByVal url As String) As String
26
27
        Try
28
            Return New StreamReader(Net.HttpWebRequest.Create(url).GetResponse().GetResponseStream()).ReadToEnd()
29
        Catch ex As Exception
30
            Throw New Exception(ex.Message)
31
            Return Nothing
32
        End Try
33
34
    End Function
35
36
    Private Function Last_User(ByVal url As String) As Long
37
38
        Dim Source As String = Get_URL_SourceCode(url)
39
40
        Return CLng(Convert.ToString(Regex.Match( _
41
                    Convert.ToString(Regex.Match( _
42
                    Source, Last_User_A).Groups(0)), _
43
                    Last_User_B).Groups(0) _
44
                    ))
45
46
    End Function
47
48
    Private Function Get_User_Nick(ByVal Id As Integer, ByVal url As String) As String
49
50
        Dim Foroactivo_Query As String = url.Replace(url.Substring(url.LastIndexOf("/") + 1), "")
51
        Dim SearchPattern As String = "u" & Id + 1
52
53
        Dim Source As String = Get_URL_SourceCode(String.Format("{0}{1}", Foroactivo_Query, SearchPattern))
54
55
        Return Convert.ToString(Regex.Match(Source, User_Title_A)).Replace(">Perfil - ", "")
56
57
        'Return Convert.ToString(Regex.Match(Source, User_Title_B).Groups(0))
58
    End Function
59
60
    Private Function DateTime_To_Unix(ByVal DateTime As DateTime) As Long
61
        Return DateDiff(DateInterval.Second, #1/1/1970#, DateTime)
62
    End Function
63
64
    Private Function Determine_Is_ForoActivo(ByVal url As String) As Boolean
65
        Dim Source As String = Get_URL_SourceCode(url)
66
        If Source.Contains("-ltr.css") Then
67
            Return True
68
        Else
69
            Return False
70
        End If
71
    End Function
72
73
    Public Function Count_Character(ByVal str As String, ByVal character As Char, _
74
                                    Optional ByVal IgnoreCase As Boolean = False) As Integer
75
76
        Return IIf(IgnoreCase, _
77
                   str.ToLower.Count(Function(c As Char) c = Convert.ToChar(character.ToString.ToLower)), _
78
                   str.Count(Function(c As Char) c = character))
79
80
    End Function
81
82
    Public Function Validate_URL(ByVal URL As String) As Boolean
83
        Try
84
85
            Dim Response As Net.WebResponse = Nothing
86
            Dim WebReq As Net.HttpWebRequest = Net.HttpWebRequest.Create(URL)
87
            Response = WebReq.GetResponse
88
            Response.Close()
89
            Return True
90
        Catch ex As Exception
91
            Return False
92
        End Try
93
    End Function
94
95
    Function Url_Is_Diferent(url As String, urldistinta As String) As Boolean
96
97
        If urldistinta = IIf(url.Last = "/", url.Substring(0, url.LastIndexOf("/")), url) Then
98
            Return True
99
        Else
100
            Return False
101
        End If
102
103
    End Function
104
105
#End Region
106
107
#Region "Subs"
108
109
    Private Sub Update_ToolStrip_Progress()
110
111
        Threading.Interlocked.Increment(IndexPattern)
112
        Threading.Interlocked.Increment(ProgressBar1.Value)
113
114
        Label2.Text = _
115
String.Format("Procesando {0} de {1} usuario(s)...", _
116
              IndexPattern.ToString, Last_User(TextBox1.Text))
117
118
    End Sub
119
120
    Private Sub Calcular_Users(ByVal url As String)
121
        Try
122
123
            ProgressBar1.Maximum = Last_User(url)
124
125
            For i As Integer = 0 To Last_User(url) - 1
126
127
                Dim User_Id = i + 1
128
                Dim User_Nick = Get_User_Nick(i, TextBox1.Text)
129
130
                File.AppendAllText(File_Users, String.Format(Users_Pattern, User_Id, User_Nick) & Environment.NewLine)
131
132
                Update_ToolStrip_Progress()
133
134
            Next i
135
136
            'MsgBox("¡Proceso acabado!", MsgBoxStyle.Information, "Información")
137-
        If Validate_URL(TextBox1.Text) = True AndAlso Determine_Is_ForoActivo(TextBox1.Text) = True Then
137+
138
139
        Catch ex As Exception When TextBox1.Text = String.Empty
140
            MsgBox("Debes poner algo", MsgBoxStyle.Critical, "Error")
141
        End Try
142
    End Sub
143
144
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
145
        ProgressBar1.Visible = True
146
        Calcular_Users(TextBox1.Text)
147
        IndexPattern = 0
148
        ProgressBar1.Value = 0
149
        Label2.Text = "Acabado..."
150
        ProgressBar1.Visible = False
151
    End Sub
152
153
    Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.TextChanged
154
        Me.Refresh()
155
    End Sub
156
157
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
158
        If Count_Character(TextBox1.Text, "/") = 3 AndAlso Url_Is_Diferent(TextBox1.Text, urlDistinta) = False AndAlso Validate_URL(TextBox1.Text) = True AndAlso Determine_Is_ForoActivo(TextBox1.Text) = True Then
159
            Label2.Text = String.Format("Listo para obtener el nick de {0} usuarios...", Last_User(TextBox1.Text) - 1)
160
            urlDistinta = TextBox1.Text
161
        End If
162
    End Sub
163
164
#End Region
165
166
End Class