やりたいこと
- このサイトでは,URLの埋め込みにiframelyを使っています.
- 複数のURLを埋め込みたいとき,一つ一つブラウザにコピーしてクリックするのは面倒です.
- そこで,iframelyのAPIを使用して,複数のURLをまとめて埋め込みます.
やったこと
- iframelyに無料登録し,API key を取得します.
- URLのリストファイルを読み込み,APIにリクエストを投げるスクリプトを作ります(今回はpython) .
1. iframelyへの登録
https://iframely.com/signup から登録します. Business email addressになってますが,gmailで大丈夫です.
2. iframelyのAPI keyを取得
https://iframely.com/profile から確認します.「ここのAPI keyをコピー」の部分に表示されます.
3. pythonのスクリプトを作成
- こんなスクリプトを書きます.
#embed_url.py
import requests
import json
import sys
def loadurls(fn):
with open(fn) as fp:
urls = fp.read().rstrip('\n').split('\n')
return urls
if __name__ == '__main__':
apikey='ここにAPI keyを貼り付け'
if len(sys.argv) <= 1:
print('Usage: python {} urlfilename'.format(sys.argv[0]))
quit()
urlfn = sys.argv[1]
urls = loadurls(urlfn)
for url in urls:
com = "https://iframe.ly/api/oembed?url={}&api_key={}&iframe=card-small".format(url,apikey)
r = requests.get(com)
d = json.loads(r.text)
print('\n' + url+':\n')
if 'html' in d.keys():
print(d['html'])
else:
print('ERROR: could not fetch')
埋め込み用の画像が無いページはエラーをはきます.
また,com = "https://iframe.ly"
の行の&iframe=card-small
を削除すれば,表示サイズの大きい埋め込みコードが取得できます.
4. 実行
同じディレクトリにURLのリストファイルを作成します.
url.list:
# url.list
https://nyakapoko.github.io/post/00_school-september/
https://nyakapoko.github.io/post/01_poweroint-shortcut/
https://nyakapoko.github.io/post/02_school-september2/
URLリストファイルを上のスクリプトと同じディレクトリにおいて,pythonを実行します.
$ python embed_url.py url.list
エラーが出たら,パッケージをインストールします.
$ pip install requests
$ pip install json
結果
こんな出力が得られます.あとはHTMLの部分をmarkdownのファイルに貼り付ければOKです.
https://nyakapoko.github.io/post/00_school-september/:
<div class="iframely-embed"><div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"><a href="https://nyakapoko.github.io/post/00_school-september/" data-iframely-url="//cdn.iframe.ly/api/iframe?url=https%3A%2F%2Fnyakapoko.github.io%2Fpost%2F00_school-september%2F&key=20018cd17c211e24973982bc83ba422e&iframe=card-small"></a></div></div><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script>
https://nyakapoko.github.io/post/01_poweroint-shortcut/:
<div class="iframely-embed"><div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"><a href="https://nyakapoko.github.io/post/01_poweroint-shortcut/" data-iframely-url="//cdn.iframe.ly/api/iframe?url=https%3A%2F%2Fnyakapoko.github.io%2Fpost%2F01_poweroint-shortcut%2F&key=20018cd17c211e24973982bc83ba422e&iframe=card-small"></a></div></div><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script>
https://nyakapoko.github.io/post/02_school-september2/:
<div class="iframely-embed"><div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"><a href="https://nyakapoko.github.io/post/02_school-september2/" data-iframely-url="//cdn.iframe.ly/api/iframe?url=https%3A%2F%2Fnyakapoko.github.io%2Fpost%2F02_school-september2%2F&key=20018cd17c211e24973982bc83ba422e&iframe=card-small"></a></div></div><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script>
こんな感じ
https://nyakapoko.github.io/post/00_school-september/:
https://nyakapoko.github.io/post/01_poweroint-shortcut/:
https://nyakapoko.github.io/post/02_school-september2/:
めでたしめでたし.
追記
下の記事で書いた通り,iframelyの無料プランではひと月あたりのアクセス数に上限があるのですが,その上限に達してしまいました. 現在では,このブログではiframelyを使用せずにURLの埋め込みを行っています.