summaryrefslogtreecommitdiff
path: root/bucky2/rest/topsy-nndb.pl
blob: c749a71c00bece4fc40c22302a53a031eaf79a78 (plain)
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;
	}