Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Net;
using System.IO;
using System.Web;
using System.Resources;
namespace PastebinDumper
{
class Program
{
static bool booldump;
static string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\PastebinDump\";
static void Main(string[] args)
{
Console.Title = "Pastebin Dumper - by supercracker13";
bool run = true;
string tempstring = "";
while (run)
{
Console.WriteLine("--- Help ---");
Console.WriteLine("install: Install PastebinDumper");
Console.WriteLine("dump: Start Dumping");
Console.WriteLine("exit: Close the Program");
Console.Write("> ");
tempstring = Console.ReadLine();
switch (tempstring)
{
case "dump":
Console.WriteLine();
Console.WriteLine("Press [Enter] to stop dumping");
Console.WriteLine();
booldump = true;
Thread dumper = new Thread(dumpingThread);
dumper.Start();
Console.ReadLine();
booldump = false;
break;
case "exit":
Environment.Exit(0);
break;
case "test":
loadCSS();
break;
case "install":
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
if (!Directory.Exists(path + "css"))
Directory.CreateDirectory(path + "css");
if (!File.Exists(path + "_OverView.html"))
{
string[] arr = new string[] {"<table border=3>"
, "<tr>"
, "<th>Name</th>"
, "<th>Url</th>"
, "<th>Syntax</th>"
, "<th>Time</th>"
, "</tr>"
, "</table>"};
File.WriteAllLines(path + "_OverView.html", arr);
}
loadCSS();
Console.WriteLine();
Console.WriteLine("Installed!");
Console.WriteLine();
break;
}
}
}
public class PasteData
{
public string Name { get; set; }
public string Syntax { get; set; }
public string Url { get; set; }
public DateTime Time { get; set; }
}
static void loadCSS()
{
string csslist = Encoding.UTF8.GetString(Properties.Resources.csslist);
string[] cssfiles = csslist.Split(Environment.NewLine.ToCharArray());
foreach (string i1 in cssfiles)
{
if (i1 != "")
{
//temper += "case \"" + i1 + "\":" + Environment.NewLine;
//temper += "File.WriteAllText(path + @\"css\\\" + i1 + \".css\", Properties.Resources." + i1 + ");" + Environment.NewLine;
//temper += "break;" + Environment.NewLine + Environment.NewLine;
if (!File.Exists(path + @"css\" + i1 + ".css"))
switch (i1)
{
#region CSSFiles
case "asp":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.asp);
break;
case "avisynth":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.avisynth);
break;
case "awk":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.awk);
break;
case "bash":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.bash);
break;
case "c":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.c);
break;
case "cpp":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.cpp);
break;
case "csharp":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.csharp);
break;
case "css":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.css);
break;
case "diff":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.diff);
break;
case "dos":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.dos);
break;
case "html4strict":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.html4strict);
break;
case "java":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.java);
break;
case "javascript":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.javascript);
break;
case "lua":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.lua);
break;
case "main_test":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.main_test);
break;
case "mysql":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.mysql);
break;
case "php":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.php);
break;
case "phyton":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.phyton);
break;
case "ruby":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.ruby);
break;
case "sql":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.sql);
break;
case "tcl":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.tcl);
break;
case "text":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.text);
break;
case "vs":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.vs);
break;
case "yaml":
File.WriteAllText(path + @"css\" + i1 + ".css", Properties.Resources.yaml);
break;
#endregion
}
}
}
}
static void dumpingThread()
{
try
{
WebClient wc = new WebClient();
string[] quellcodearray;
string quellcodestring;
bool startreading, newone, exist;
PasteData temppaste = new PasteData();
List<PasteData> pastelist = new List<PasteData>();
DateTime tempdt;
int time;
string tempfilename;
string[] overviewfile = File.ReadAllLines(path + "_OverView.html");
StreamWriter sw = new StreamWriter(path + "_OverView.html");
foreach (string i1 in overviewfile)
if (!i1.Contains("</table>")) sw.WriteLine(i1);
sw.Close();
string[] arr;
while (booldump)
{
try
{
tempfilename = Path.GetTempFileName();
wc.DownloadFile("http://pastebin.com/archive/", tempfilename);
quellcodearray = File.ReadAllText(tempfilename).Split(Environment.NewLine.ToCharArray());
File.Delete(tempfilename);
quellcodestring = "";
startreading = false;
newone = false;
foreach (string i1 in quellcodearray)
{
#region Prepair to read
if (i1.Contains("<table class=\"maintable\""))
startreading = true;
else if (i1.Contains("</table>"))
startreading = false;
if (startreading)
{
if (i1.Contains("<tr>"))
newone = true;
else if (i1.Contains("</tr>"))
newone = false;
if (i1.Contains("<img src=\""))
{
temppaste = new PasteData();
temppaste.Url = "http://pastebin.com" + i1.Split('>')[2].Split('"')[1];
temppaste.Name = i1.Split('>')[3].Split('<')[0];
}
else if (i1.Contains("<td>"))
{
tempdt = new DateTime();
tempdt = DateTime.Now;
if (i1.Contains("s"))
{
time = int.Parse(i1.Split('s')[0].Split('>')[1]);
tempdt = tempdt.AddSeconds(time * -1);
}
else if (i1.Contains("m"))
{
time = int.Parse(i1.Split('m')[0].Split('>')[1]);
tempdt = tempdt.AddMinutes(time * -1);
}
temppaste.Time = tempdt;
}
else if (i1.Contains("<td align=\""))
{
temppaste.Syntax = i1.Split('>')[2].Split('<')[0];
exist = false;
foreach (PasteData i2 in pastelist)
if (i2.Url == temppaste.Url)
exist = true;
if (!exist)
pastelist.Add(temppaste);
}
}
#endregion
}
foreach (PasteData i1 in pastelist)
{
if (booldump)
{
if (!File.Exists(path + i1.Url.Split('/')[3] + ".html"))
{
quellcodestring = "";
Console.WriteLine(i1.Name);
//Console.ReadLine();
tempfilename = Path.GetTempFileName();
wc.DownloadFile(i1.Url, tempfilename);
quellcodearray = File.ReadAllText(tempfilename).Split(Environment.NewLine.ToCharArray());
//foreach (string i2 in quellcodearray)
//{
// quellcodestring += i2 + Environment.NewLine;
//}
quellcodestring = analyseThread(quellcodearray);
File.WriteAllText(path + i1.Url.Split('/')[3] + ".html", quellcodestring, Encoding.UTF8);
arr = new string[] { "<tr>"
,"<td><a href=\"" + i1.Url.Split('/')[3] + ".html\">" + i1.Name + "</a></td>"
,"<td>" + i1.Url + "</td>"
,"<td>" + i1.Time.ToString("dd.MM.yyyy, HH:mm:ss") + "</td>"
,"<td>" + i1.Syntax + "</td>"
,"</tr>"};
File.AppendAllLines(path + "_OverView.html", arr);
}
}
else
break;
}
}
catch { }
Thread.Sleep(1000);
}
}
catch
{
Console.WriteLine("Please install the programm before you start dumping files");
Console.WriteLine("Press Enter...");
Console.WriteLine();
}
}
static string analyseThread(string[] quellcode)
{
string tempstring = "";
string titleline = "", stylesheetline = "";
bool use = true;
bool proof = false;
bool secproof = false;
bool otherproof = false;
foreach (string i1 in quellcode)
{
if (i1.Contains("<div class=\"content_title\">"))
use = false;
if (use)
if (i1.Contains("<link href=\"/cache/css/") && i1.Contains("rel=\"stylesheet\" type=\"text/css\" />"))
stylesheetline = i1.Replace("/cache/css/", "css/").Replace("/i/", "css/");
else if (i1.Contains("<title>") && i1.Contains("</title>"))
titleline = i1.Replace(" - Pastebin.com", "");
else if (i1.Contains("<head>") && proof == false)
proof = true;
else if (i1.Contains("</head>") && proof == true)
{
proof = false;
tempstring += "<head>" + Environment.NewLine
+ stylesheetline + Environment.NewLine
+ titleline + Environment.NewLine
+ "</head>" + Environment.NewLine;
}
else if (i1.Contains("accesskey=\"n\""))
tempstring += "<li></li>" + Environment.NewLine;
else if (i1.Contains("<div id=\"header_middle_search\">") && secproof == false)
secproof = true;
else if (i1.Contains("</div>") && secproof == true)
secproof = false;
else if (i1.Contains("<div id=\"header_bottom\">"))
{
secproof = true;
proof = true;
}
else if (i1.Contains("onclick=\"location.href='/'\""))
tempstring += i1.Replace("location.href='/'", "") + Environment.NewLine;
else if (i1.Contains("<a href=\"/\">PASTEBIN</a>"))
tempstring += "<a href=\"_OverView.html\">PASTEBIN</a>" + Environment.NewLine;
else if (i1.Contains("</div>") && secproof == false && proof == true)
proof = false;
else if (i1.Contains("<div id=\"content_right\">"))
otherproof = true;
else if (i1.Contains("<div id=\"content_left\">"))
{
otherproof = false;
tempstring += "<div id=\"content_left\">" + Environment.NewLine;
}
else if (i1.Contains("<div class=\"paste_box_frame\">"))
otherproof = true;
else if (i1.Contains("<div id=\"selectable\">"))
{
otherproof = false;
tempstring += "<div id=\"code_frame\">" + Environment.NewLine
+ "<div id=\"selectable\">" + Environment.NewLine;
}
else if (!proof && !secproof && !otherproof)
if (!i1.Contains("allowTransparency=\"true\"></iframe>") && !i1.Contains("<a href=\"http://veryviral.com/\""))
tempstring += i1 + Environment.NewLine;
}
return tempstring;
}
}
}