Advertisement
Ikillnukes

Untitled

Aug 23rd, 2013
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 4.80 KB | None | 0 0
  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.  
  20. #End Region
  21.  
  22. #Region "Funciones"
  23.  
  24.     Private Function Get_URL_SourceCode(ByVal url As String) As String
  25.  
  26.         Try
  27.             Return New StreamReader(Net.HttpWebRequest.Create(url).GetResponse().GetResponseStream()).ReadToEnd()
  28.         Catch ex As Exception
  29.             Throw New Exception(ex.Message)
  30.             Return Nothing
  31.         End Try
  32.  
  33.     End Function
  34.  
  35.     Private Function Last_User(ByVal url As String) As Long
  36.  
  37.         Dim Source As String = Get_URL_SourceCode(url)
  38.  
  39.         Return CLng(Convert.ToString(Regex.Match( _
  40.                     Convert.ToString(Regex.Match( _
  41.                     Source, Last_User_A).Groups(0)), _
  42.                     Last_User_B).Groups(0) _
  43.                     ))
  44.  
  45.     End Function
  46.  
  47.     Private Function Get_User_Nick(ByVal Id As Integer, ByVal url As String) As String
  48.  
  49.         Dim Foroactivo_Query As String = url.Replace(url.Substring(url.LastIndexOf("/") + 1), "")
  50.         Dim SearchPattern As String = "u" & Id + 1
  51.  
  52.         Dim Source As String = Get_URL_SourceCode(String.Format("{0}{1}", Foroactivo_Query, SearchPattern))
  53.  
  54.         Return Convert.ToString(Regex.Match(Source, User_Title_A)).Replace(">Perfil - ", "")
  55.  
  56.         'Return Convert.ToString(Regex.Match(Source, User_Title_B).Groups(0))
  57.     End Function
  58.  
  59.     Private Function DateTime_To_Unix(ByVal DateTime As DateTime) As Long
  60.         Return DateDiff(DateInterval.Second, #1/1/1970#, DateTime)
  61.     End Function
  62.  
  63.     Private Function Determine_Is_ForoActivo(ByVal url As String) As Boolean
  64.         Dim Source As String = Get_URL_SourceCode(url)
  65.         If Source.Contains("-ltr.css") Then
  66.             Return True
  67.         Else
  68.             Return False
  69.         End If
  70.     End Function
  71.  
  72.     Public Function Validate_URL(ByVal URL As String) As Boolean
  73.         Try
  74.             Dim Response As Net.WebResponse = Nothing
  75.             Dim WebReq As Net.HttpWebRequest = Net.HttpWebRequest.Create(URL)
  76.             Response = WebReq.GetResponse
  77.             Response.Close()
  78.             Return True
  79.         Catch ex As Exception
  80.             Return False
  81.         End Try
  82.     End Function
  83.  
  84. #End Region
  85.  
  86. #Region "Subs"
  87.  
  88.     Private Sub Update_ToolStrip_Progress()
  89.  
  90.         Threading.Interlocked.Increment(IndexPattern)
  91.         Threading.Interlocked.Increment(ProgressBar1.Value)
  92.  
  93.         Label2.Text = _
  94. String.Format("Procesando {0} de {1} usuario(s)...", _
  95.               IndexPattern.ToString, Last_User(TextBox1.Text))
  96.  
  97.     End Sub
  98.  
  99.     Private Sub Calcular_Users(ByVal url As String)
  100.         Try
  101.  
  102.             ProgressBar1.Maximum = Last_User(url)
  103.  
  104.             For i As Integer = 0 To Last_User(url) - 1
  105.  
  106.                 Dim User_Id = i + 1
  107.                 Dim User_Nick = Get_User_Nick(i, TextBox1.Text)
  108.  
  109.                 File.AppendAllText(File_Users, String.Format(Users_Pattern, User_Id, User_Nick) & Environment.NewLine)
  110.  
  111.                 Update_ToolStrip_Progress()
  112.  
  113.             Next i
  114.  
  115.             'MsgBox("¡Proceso acabado!", MsgBoxStyle.Information, "Información")
  116.             Process.Start(File_Users)
  117.  
  118.         Catch ex As Exception When TextBox1.Text = String.Empty
  119.             MsgBox("Debes poner algo", MsgBoxStyle.Critical, "Error")
  120.         End Try
  121.     End Sub
  122.  
  123.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  124.         ProgressBar1.Visible = True
  125.         Calcular_Users(TextBox1.Text)
  126.         IndexPattern = 0
  127.         ProgressBar1.Value = 0
  128.         Label2.Text = "Acabado..."
  129.         ProgressBar1.Visible = False
  130.     End Sub
  131.  
  132.     Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.TextChanged
  133.         Me.Refresh()
  134.     End Sub
  135.  
  136.     Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
  137.         If Validate_URL(TextBox1.Text) = True AndAlso Determine_Is_ForoActivo(TextBox1.Text) = True Then
  138.             Label2.Text = String.Format("Listo para obtener el nick de {0} usuarios...", Last_User(TextBox1.Text) - 1)
  139.         End If
  140.     End Sub
  141.  
  142. #End Region
  143.  
  144. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement