[Koha] Post recently catalogued books to a Facebook page
Witoszynskyj Stephan
stephan at wito.org
Fri Feb 6 08:53:38 NZDT 2015
There’s a small error. I forgot to remove two lines from a previous version:
my $tmpdir = File::Temp->newdir();
my $dirname = $tmpdir->dirname;
Stephan
Am 05.02.2015 um 20:40 schrieb Witoszynskyj Stephan <stephan at wito.org>:
> Hi,
>
> I recently wrote on this list that I’m about to develop a script that posts recently catalogued books to a Facebook page. Well, I found some time faster then I thought, so here’s my simple script. I’ll run it using koha-foreach in a cronjob.
>
> It does nothing fancy it just posts a list of recently catalogued books in the form
>
> author: title
> http://yourlibrary.org/bib/number
>
> in the time line of a Facebook page. I also tried uploading cover images, but that didn’t work that well.
>
> Actually, the whole script is rather trivial. Figuring out how to get access tokens for Facebook having the correct permissions took much longer then developing the script. So, I tried to summarize the steps necessary to get the tokens in the script’s comments. I hope they are helpful.
>
> Cheers,
> Stephan
>
> #!/usr/bin/perl
>
> use utf8;
> use Modern::Perl;
> use C4::Context;
> use Facebook::Graph;
>
> # This program posts a list of recently catalogued books to Facebook "Page".
> # To be able to get the required access tokens you have to have administrator
> # rights for the page.
> #
> # 1. Register as developer on Facebook's developer site:
> # https://developers.facebook.com
> # 2. Add an app on Facebook's developer site. Use "advanced Setup", choose a
> # name and the category "Apps for pages". You'll get an app id and an app
> # secret
> # 3. get an user access token on https://developers.facebook.com/tools/explorer
> # by clicking "Get Access Token", set the "Extended Permissions" manage_pages and publish_actions (make sure that you do that for your app and not for Graph Explorer)
> # 4. extend the expiration date of the access token by submitting the following
> # GET request:
> # /oauth/access_token?grant_type=fb_exchange_token&client_id={app-id}&client_secret={app-secret}&fb_exchange_token={short-lived-token}
> # You can this using wget:
> # wget -O token "https://graph.facebook.com/wget -O token "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={app-id}&client_secret={app-secret}&fb_exchange_token={short-lived-token}
> # the file token will then contain your token
> # 5. determine your user id e.g. by http://graph.facebook.com/yourusername
> # 6. get the page access token by submitting the following GET request in
> # Graph API explorer:
> # /{user-id}/accounts
> # You will get a data structure containing a number of key
> # value pairs for each page you administrate. Get the page id and page
> # access token for the page you want to post to
>
>
> my $fb_access_token = „"; # your page access token goes here
>
> my $maxdays = 7;
> my $base_url = 'http://yourlibrary.org';
>
>
> my $fb = Facebook::Graph->new;
> $fb->access_token($fb_access_token);
>
> my $tmpdir = File::Temp->newdir();
> my $dirname = $tmpdir->dirname;
>
> my $dbh = C4::Context->dbh;
>
> my $query = "SELECT b.biblionumber,b.author,b.title,i.itemcallnumber FROM biblio b, items i WHERE b.biblionumber = i.biblionumber AND DATEDIFF(CURRENT_DATE,b.datecreated) < ? GROUP BY b.biblionumber,b.author,b.title,i.itemcallnumber ORDER BY i.itemcallnumber,b.author COLLATE utf8_unicode_ci";
>
> my $sth = $dbh->prepare($query);
> $sth->execute($maxdays);
>
> my @data;
> my $message = "Recently catalogued books\n\n";
> my $rows_returned = 0;
>
> while (@data = $sth->fetchrow_array()) {
> my $biblionumber = $data[0];
> my $author = $data[1];
> my $title = $data[2];
> my $itemcallnumber = $data[3];
>
> if ($author) {
> $message .= $author.": ";
> }
> $message .= $title."\n";
> $message .= $base_url.'/bib/.$biblionumber."\n\n";
>
> $rows_returned++;
> }
>
> if ($rows_returned) {
> my $response = $fb->add_post
> ->set_message($message)
> ->publish;
>
> # print $response->as_string()."\n";
> # my $msg_id = $response->as_hashref()->{id};
> }
>
> _______________________________________________
> Koha mailing list http://koha-community.org
> Koha at lists.katipo.co.nz
> http://lists.katipo.co.nz/mailman/listinfo/koha
More information about the Koha
mailing list