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
109
|
#!/usr/bin/perl
use lib "../lib";
use Rest::Topsy;
use Data::Dumper;
my $topsy = new Rest::Topsy;
#my $tasks = initialize_names($topsy);
#save_task_history($topsy, $tasks);
#exit;
my $tasks = load_task_history($topsy);
#print Dumper($tasks);
#exit;
my $i = 0;
# foreach my $task (sort {$a->{'date'} <=> $b->{'date'}} @$tasks)
foreach my $task (sort task_sort @$tasks)
{
my $tracking_data = $topsy->topsy_search($task->{'name'});
foreach my $k (keys %$tracking_data)
{ $task->{$k} = $tracking_data->{$k}; }
$task->{'date'} = time;
if ($i++ == 20)
{
save_task_history($topsy, $tasks);
$i = 0;
}
sleep 35 + (int rand 20);
}
save_task_history($topsy, $tasks);
exit;
sub task_sort
{
$b->{'hour'} <=> $a->{'hour'} ||
$b->{'day'} <=> $a->{'day'} ||
$b->{'week'} <=> $a->{'week'} ||
$b->{'month'} <=> $a->{'month'} ||
$b->{'all'} <=> $a->{'all'} ||
$a->{'date'} <=> $b->{'date'}
}
sub initialize_names
{
my ($self) = @_;
my $data = $self->read_data('../tmp/nndb/all-names-living.txt');
my @lines = split "\n", $data;
my $names = {};
foreach my $line (@lines)
{
next unless $line;
my ($id, $name) = split "\t", $line;
if (exists ($names->{$name}))
{ $names->{$name} = -1 * $id; }
else
{ $names->{$name} = $id; }
}
my $tasks = [];
foreach my $name (keys %$names)
{
my $hash = {};
$hash->{'id'} = abs $names->{$name};
$hash->{'name'} = $name;
$hash->{'date'} = -1;
if ($names->{$name} < 1)
{
$hash->{'doppelganger'} = 1;
}
push @$tasks, $hash;
}
return $tasks;
}
sub save_task_history
{
my ($self, $tasks) = @_;
my @keys = qw[id name date doppelganger all month week day hour];
my @lines;
foreach my $task (@$tasks)
{
my @input;
for (my $i = 0; $i < @keys; $i++)
{
push @input, $task->{$keys[$i]};
}
my $line = join "\t", @input;
push @lines, $line;
}
my $data = join "\n", @lines;
$self->write_data("../tmp/nndb/tasks.txt", $data);
}
sub load_task_history
{
my ($self) = @_;
my $data = $self->read_data('../tmp/nndb/tasks.txt');
my @lines = split "\n", $data;
my @keys = qw[id name date doppelganger all month week day hour];
my $tasks = [];
foreach my $line (@lines)
{
next unless $line;
my (@input) = split "\t", $line;
my $hash = {};
for (my $i = 0; $i < @input; $i++)
{
$hash->{$keys[$i]} = $input[$i];
}
push @$tasks, $hash;
}
return $tasks;
}
|