Bitly v4のURL短縮をPerlで実装
昨年の4月にBitlyからAPIをバージョン3を使える時期を、パンデミックの影響もありしばらく延期するというお知らせメールが届いたのですが、私のほうはとくにパンデミックで忙しくなったわけではないので、Perlスクリプトで使用していたバージョン3をバージョン4に更新しようと思い、作りました。
あれから1年が経ったんだなぁ、という感慨とともに、備忘録を兼ねて書いておきます。
おそらく現在はバージョン3は使えなくなったのではないかと思いますが、私の認識が間違っているようでしたら、教えてください。
Bitly Developerへの登録
もしBitlyのアカウントをお持ちでない場合は登録を行ってください。
私は通常のメールアドレスによる登録を行いました。
すでにアカウントをお持ちの方は予めログインしておいてください。
続いて以下のURLへ行き、
Introduction | Bitly Developer
Generate an access token.のリンクをクリックしてください。
Bitlyコンソール画面にジャンプし、GENERATE ACCESS TOKENという画面が開きますので、Bitlyアカウントのパスワードを入力してください。
GENERATE TOKENボタンを押すとアクセストークンが生成されます。
これを覚えておいてください。他の方には見せないでくださいね。
Perlスクリプトを作成
以下のようなPerlスクリプトファイルを作成してください。
# !/usr/bin/env perl
use strict;
use diagnostics;
use HTTP::Headers;
use HTTP::Request;
use LWP::UserAgent;
use JSON;
my $token = '先程作成したアクセストークン';
my $bearer = "Bearer $token";
# Bitly api v4 のURL短縮URLはこちらです。
my $base_url = 'https://api-ssl.bitly.com/v4/shorten';
my $header = HTTP::Headers->new('Authorization' => $bearer, 'Content-Type' => 'application/json');
my $request = HTTP::Request->new('POST', $base_url, $header);
my $long_url = 'https://qiita.com/bontaro_1';
print "このURLを縮めます => $long_url\n";
my $json = "{ \"long_url\" : \"$long_url\" }";
$request->content($json);
my $ua = LWP::UserAgent->new;
my $response = $ua->request($request);
my $content = $response->content;
print "JSON文字列 => $content\n";
my $response_content = JSON::decode_json($content);
my $short_link = $response_content->{'link'};
if ($short_link) {
print "短縮URL => $short_link\n";
} else {
print "短縮URL作成失敗.\n";
}
HTTP::Headers, HTTP::Request, LWP::UserAgent, JSONのライブラリはもしまだインストールされていないようでしたらCPAN等でインストールしてください。
Perlスクリプトを実行
上記perlスクリプトを実行すると以下のような出力となります。
このURLを縮めます => https://qiita.com/bontaro_1
JSON文字列 => {
"created_at":"2021-04-20T05:45:22+0000",
"id":"bit.ly/*******",
"link":"https://bit.ly/*******",
"custom_bitlinks":[],
"long_url":"https://qiita.com/bontaro_1",
"archived":false,
"tags":[],
"deeplinks":[],
"references":{
"group":"https://api-ssl.bitly.com/v4/groups/***********"
}
}
短縮URL => https://bit.ly/*******
知られてはならない部分は*で伏せており、JSON文字列は見やすいように編集しましたが、以上のような出力になります。
JSON連想配列の link という要素に目的の短縮URLが入っています。
私のアカウントで実行した時は以下のような短縮URLが作成されました。
https://bit.ly/3syK5dt
送信するパラメータは long_url だけが必須です。他に domain group_guid というパラメータもありますが、私のような無料アカウント利用者は省略可能のようです。
以下に公式の詳しい説明がありますので、ご覧ください。
Bitly API Reference
2021年4月20日現在ではshorten APIが一番上に書かれていますね。
domain は'bit.ly'がデフォルトのようです。
group_guid は実はよくわかっておりませんが、アカウントでグループを利用する時などに必要なのではないか?と思っております。間違っているようでしたコメントをお寄せください。
下記画像はWebブラウザのアドレスバーですが、無料アカウントの方はBitlyにログインして最初に出てくるURLの赤枠の部分を指定すれば良さそうです。
いずれにせよ、グループに関する操作をしていない場合は、特に指定する必要はなさそうです。