#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Flickr::API;
use XML::LibXML;
use Compress::Zlib; # boggle
# flickr initialisation
my $key = 'c0541c9d4fc19d7e829d940b693b0553';
my $secret = '89f28baaebe79b56';
my $api = new Flickr::API({'key' => $key, 'secret' => $secret});
my $user_id = shift || "48600109393@N01";
# dbi initialisation
my $dbh = DBI->connect("dbi:SQLite:dbname=$ENV{'HOME'}/Desktop/flickr-public-groups.db");
db_create($dbh);
my @groups = get_all_group_ids($user_id);
### Flickr
sub get_all_group_ids {
my ($group_ids, $pages) = get_group_ids($user_id, 1);
foreach my $page (2..$pages) {
push @{ $group_ids }, @{ get_group_ids($user_id, $page) };
}
return ($group_ids);
}
sub get_group_ids {
my $user_id = shift || die "No user ID";
my $page = shift || 1;
my $photo_ids = {};
my $info = get_flickr_data('flickr.groups.pools.getGroups',
{ 'user_id' => $user_id,
'per_page' => 400,
'page' => $page,
});
my $nodes = $info->findnodes('/rsp/groupss');
my $pages = $nodes->[0]->findvalue('@pages');
print " Got page $page (of $pages) of groups\n";
my $group_nodes = $info->findnodes('//group');
foreach my $group_node (@{ $group_nodes }) {
#
#
#
#
my $nsid = $group_node->getAttribute('nsid');
$group_ids->{$id}{'nsid'} = $id;
$group_ids->{$id}{'owner'} = $user_id;
foreach my $attr (get_meta_fields()) {
$group_ids->{$id}{$attr} = $group_node->getAttribute($attr);
}
}
return ($group_ids, $pages);
}
# flickr.groups.pools.getGroups;
}
### Database
sub db_create {
my $dbh = shift;
my $create = <