You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.2 KiB
Perl

#!/usr/bin/perl -w
use DBI;
use XML::Simple qw(:strict);
$root = '/var/www/yolanda';
#set global config variable
$config = XMLin("$root/config/backend.xml", KeyAttr => {string => 'id'}, ForceArray => [ 'string' ], ContentKey => '-content');
$config = $config->{"strings"}->{"string"};
$dbh = DBI->connect("DBI:mysql:".$config->{"database_name"}.":".$config->{"database_host"}, $config->{"database_username"}, $config->{"database_password"}) or die $DBI::errstr;
#get all subjects
$sth = $dbh->prepare("select subject from videos");
$sth->execute();
#cycle through all video subjects
while(($subject) = $sth->fetchrow_array())
{
#TODO: make split char configureable
@subject = split(' ', $subject);
#cycle through all tags of video
foreach my $val (@subject)
{
#add/increment correct hash value
%hash->{$val}++;
}
}
$sth->finish();
#sort by count
@sorted = sort {$hash{$b} cmp $hash{$a}} keys %hash;
#clean tagcloud
$dbh->do("delete from tagcloud");
$sth = $dbh->prepare("insert into tagcloud (text, count) values (?, ?)");
#insert "page_tag_count" tags into tagcloud table
for($i=0;$i<$config->{"page_tag_count"} and $i<=$#sorted;$i++)
{
$sth->execute( $sorted[$i], %hash->{$sorted[$i]} );
}