diff options
Diffstat (limited to 'bucky2/rest/topsy-nndb.pl')
| -rwxr-xr-x | bucky2/rest/topsy-nndb.pl | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/bucky2/rest/topsy-nndb.pl b/bucky2/rest/topsy-nndb.pl new file mode 100755 index 0000000..c749a71 --- /dev/null +++ b/bucky2/rest/topsy-nndb.pl @@ -0,0 +1,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; + } |
