-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
108 lines (100 loc) · 4.09 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using FREE_OSINT_Lib;
namespace FREE_OSINT_LinkedIn_Metadata_Extractor
{
class Program : IGeneral_module, IProcessing_Module
{
private string title = "FREE-OSINT LinkedIn Metadata Extractor";
private string description = "Extracts Name, Surname and Picture URL from profile metadata. Apply only on FREE-OSINT_Google_Custom_Search LinkedIn results";
private string extracted_node_title = "FREE-OSINT LinkedIn Metadata Extractor";
static void Main(string[] args)
{
}
public string Description()
{
return this.description;
}
public TreeNode Process(TreeNode treeNode)
{
TreeNode finalNode = new TreeNode(extracted_node_title);
List<TreeNode> extracted_list = new List<TreeNode>();
if (treeNode.Nodes.Count > 0)
{
foreach (TreeNode sub in treeNode.Nodes)
{
TreeNode extracted;
extracted = extract_metadata(sub);
if (extracted != null)
extracted_list.Add(extracted);
}
}
finalNode.Nodes.AddRange(extracted_list.ToArray());
return finalNode;
}
private TreeNode extract_metadata(TreeNode subnode)
{
if (subnode.Nodes.Count > 0)
{
TreeNode link = null;
foreach (TreeNode subsubNode in subnode.Nodes)
{
if (subsubNode.Text.Contains("linkedin.com"))
{
link = subsubNode;
}
if (subsubNode.Text.Equals("Metadata"))
{
String first_name = "";
String last_name = "";
String image_link = "";
foreach (TreeNode meta_node in subsubNode.Nodes)
{
if (meta_node.Text.Contains("og:image"))
{
image_link = meta_node.Text.Split(new string[] { ": \"" }, StringSplitOptions.None)[1];
image_link = image_link.Remove(image_link.Length - 1);
}
else if (meta_node.Text.Contains("profile:last_name"))
{
last_name = meta_node.Text.Split(new string[] { ": \"" }, StringSplitOptions.None)[1];
last_name = last_name.Remove(last_name.Length - 1);
}
else if (meta_node.Text.Contains("profile:first_name"))
{
first_name = meta_node.Text.Split(new string[] { ": \"" }, StringSplitOptions.None)[1];
first_name = first_name.Remove(first_name.Length - 1);
}
}
if(first_name.Length > 1 || last_name.Length > 1)
{
TreeNode extracted = new TreeNode(first_name + " " + last_name);
extracted.Nodes.Add(new TreeNode(first_name));
extracted.Nodes.Add(new TreeNode(last_name));
extracted.Nodes.Add(new TreeNode(link.Text));
extracted.Nodes.Add(new TreeNode(image_link));
return extracted;
}
}
else if (subsubNode.Nodes.Count > 0)
{
return extract_metadata(subsubNode);
}
}
return null;
}
else
{
return null;
}
}
public string Title()
{
return this.title;
}
}
}