#!/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 = <