タイトルの通りです。
きっかけ
これまで「短縮 URL 展開してくれる君」を参考にしたコードを使っていた。
短縮 URL 展開してくれる君
https://gist.github.com/ktr0731/255c4d2c1a2b7b153e8758f0a19959c7
このコードはrequestsを使って、リダイレクトされなくなるまでheader関数のLocationを取得し続けるというルーチンなのだが、どういうわけか一部のbit.lyのURLを解決することができない。
参考:【PHP】header関数のLocationを使ってリダイレクトする方法
pyshortenersを使う
pyshortenerを使うことで様々な短縮アドレスを解決できる。bit.lyに関しては下記の通り。
https://pyshorteners.readthedocs.io/en/latest/apis.html#bit-ly
bit.lyのAPIのアクセストークンを発行する
pyshortenerでbit.lyの短縮アドレスを解決するためにはAPIのアクセストークンが必要なようだ。
bit.lyでサインアップし、settings→API→Access token→Generate tokenで発行する。
なお、無料アカウントの場合、月あたり1000回の呼び出しまでのようだ。
サンプルコード
発行したAccess tokenをYOUR_KEYに代入する。
短縮する場合は
import pyshorteners
s = pyshorteners.Shortener(api_key='YOUR_KEY')
url = 'http://www.google.com'
print(s.bitly.short(url))
実行結果は、
http://bit.ly/TEST
展開する場合は、
import pyshorteners
s = pyshorteners.Shortener(api_key='YOUR_KEY')
url = 'https://bit.ly/TEST'
print(s.bitly.expand(url))
実行結果は、
http://www.google.com
となる。