Difference between revisions of "Twitter"
(→Adding a twitter channel to eprints is dead easy.) |
|||
| Line 2: | Line 2: | ||
== Adding a twitter channel to eprints is dead easy. == | == Adding a twitter channel to eprints is dead easy. == | ||
| − | + | Set up a new twitter account for your repository if not already done so. | |
| − | + | Sign into your twitter account on [https://dev.twitter.com/] and then click "Register an app". Fill in the form: | |
| − | + | * Name: enter your repository URL | |
| + | * Description: enter anything | ||
| + | * Home page: enter your repository URL | ||
| + | * Organization: enter anything | ||
| + | * Application Type: Client | ||
| + | * Default Access Type: Read & Write | ||
| − | + | In your repository add the following to a new configuration file in cfg.d/ (e.g. called twitter.pl): | |
| + | |||
| + | * Change ''oauth_consumer_key'' and ''oauth_consumer_secret'' to the values found on the twitter application page. | ||
| + | * Change ''oauth_token'' and ''oauth_token_secret'' to the values found on the "My Access Token" page linked from the twitter application page. | ||
<pre><nowiki> | <pre><nowiki> | ||
| − | + | use LWP::Authen::OAuth; # install from CPAN | |
| − | + | ||
| + | $c->{twitter}->{authen} = { | ||
| + | oauth_consumer_key => 'c2nOQSd2asDF9nhqFKCWg', | ||
| + | oauth_consumer_secret => '9hz7hoNIpk29slqtJ46yOg7HXAqOPrETnueNGrTXu4', | ||
| + | oauth_token => '15203291-1qVbfWHh9Sa8sjdkmqyP8eB9XyxhouZhPnRrKnwQj', | ||
| + | oauth_token_secret => 'SZmj2zKsVGrEpPDDaZBrE92ksLwf0oBJ8X4medYoX8', | ||
| + | }; | ||
| + | |||
| + | $c->{eprint_status_change} = sub | ||
| + | { | ||
my( $eprint, $old_status, $new_status ) = @_; | my( $eprint, $old_status, $new_status ) = @_; | ||
if( $new_status eq "archive" ) | if( $new_status eq "archive" ) | ||
{ | { | ||
| − | my $ | + | my $ua = LWP::UserAgent->new; |
| − | my $ | + | my $url = URI->new( 'http://is.gd/api.php' ); |
| − | + | $url->query_form( | |
| − | my $shorturl = | + | longurl => $eprint->get_url |
| + | ); | ||
| + | my $shorturl = $ua->get( $url )->content; | ||
my $title = $eprint->get_value( "title" ); | my $title = $eprint->get_value( "title" ); | ||
| − | $title =~ s/ | + | { |
| − | my $ | + | use bytes; |
| − | + | $title =~ s/^(.{0,100})/$1/; | |
| + | } | ||
| + | my $tweet = "$title - $shorturl"; | ||
| + | |||
| + | my $oua = LWP::Authen::OAuth->new( | ||
| + | %{$eprint->{session}->config( "twitter", "authen" )}, | ||
| + | ); | ||
| + | my $r = $oua->post( 'http://api.twitter.com/1/statuses/update.json', [ | ||
| + | status => $tweet, | ||
| + | ] ); | ||
| + | if( $r->is_error ) | ||
| + | { | ||
| + | $eprint->{session}->log( "Tweet failed: ".$r->as_string ); | ||
| + | } | ||
} | } | ||
| − | + | ||
| + | }; | ||
</nowiki></pre> | </nowiki></pre> | ||
| − | |||
| − | |||
* Restart Apache ( /etc/init.d/apache2 force-reload , or similar) | * Restart Apache ( /etc/init.d/apache2 force-reload , or similar) | ||
| − | * | + | * Log in and deposit an item to test |
| + | ==== Examples ==== | ||
| − | |||
* http://twitter.com/eprintsecs - ECS EPrints, Southampton | * http://twitter.com/eprintsecs - ECS EPrints, Southampton | ||
Revision as of 14:01, 31 March 2011
Adding a twitter channel to eprints is dead easy.
Set up a new twitter account for your repository if not already done so.
Sign into your twitter account on [1] and then click "Register an app". Fill in the form:
- Name: enter your repository URL
- Description: enter anything
- Home page: enter your repository URL
- Organization: enter anything
- Application Type: Client
- Default Access Type: Read & Write
In your repository add the following to a new configuration file in cfg.d/ (e.g. called twitter.pl):
- Change oauth_consumer_key and oauth_consumer_secret to the values found on the twitter application page.
- Change oauth_token and oauth_token_secret to the values found on the "My Access Token" page linked from the twitter application page.
use LWP::Authen::OAuth; # install from CPAN
$c->{twitter}->{authen} = {
oauth_consumer_key => 'c2nOQSd2asDF9nhqFKCWg',
oauth_consumer_secret => '9hz7hoNIpk29slqtJ46yOg7HXAqOPrETnueNGrTXu4',
oauth_token => '15203291-1qVbfWHh9Sa8sjdkmqyP8eB9XyxhouZhPnRrKnwQj',
oauth_token_secret => 'SZmj2zKsVGrEpPDDaZBrE92ksLwf0oBJ8X4medYoX8',
};
$c->{eprint_status_change} = sub
{
my( $eprint, $old_status, $new_status ) = @_;
if( $new_status eq "archive" )
{
my $ua = LWP::UserAgent->new;
my $url = URI->new( 'http://is.gd/api.php' );
$url->query_form(
longurl => $eprint->get_url
);
my $shorturl = $ua->get( $url )->content;
my $title = $eprint->get_value( "title" );
{
use bytes;
$title =~ s/^(.{0,100})/$1/;
}
my $tweet = "$title - $shorturl";
my $oua = LWP::Authen::OAuth->new(
%{$eprint->{session}->config( "twitter", "authen" )},
);
my $r = $oua->post( 'http://api.twitter.com/1/statuses/update.json', [
status => $tweet,
] );
if( $r->is_error )
{
$eprint->{session}->log( "Tweet failed: ".$r->as_string );
}
}
};
- Restart Apache ( /etc/init.d/apache2 force-reload , or similar)
- Log in and deposit an item to test
Examples
- http://twitter.com/eprintsecs - ECS EPrints, Southampton