Advertisement
Ikillnukes

Untitled

Aug 23rd, 2013
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.             Process.Start(File_Users)
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement