python-gistを使ってコマンドライン経由でGistにアクセスしてみる。

By | 2017年9月20日 , Last update: 2019年2月16日

はじめに

本サイトではちょっとしたコードまたは設定ファイル等(もしくはそのsnippet。以下単に「コード等」と書きます。)をGitHub Gistにアップロードして、さらにそれらのコード等へのリンクを本サイトの記事に貼り付けることで公開しています。

公開しているコード等の数が少ないうちはブラウザ経由でもGitHub Gistをあまりストレスを感じることなく使用できると思います。しかし、GitHub Gistを使っているうちに、例えば公開しているコード等のうち複数のコード等に対して機械的な変換処理が行うことで更新をするといったことをしようと思うようになってくると、ブラウザ経由で1個ずつコード等を更新していくよりは、コマンドライン経由で一気に更新した方が作業効率が良くなることが容易に予想できるので、ブラウザ経由で編集などを行うのが面倒になってくるわけです。

そこで、Linuxで使えるコマンドラインインターフェースを探してみたところ、python-gistというのが使えそうだったので、Fedora 26にpython-gistをインストールしてみました。本記事では、その方法及び動作確認の結果について記述していきます。

スポンサーリンク

python-gistのインストール

とりあえずインストール

python-gistはpipコマンドを使用して、以下のようにインストールできます。

[panda@pandanote pandanote-info-gist]$ pip install –user python-gist
Collecting python-gist
Downloading python_gist-0.5.1-py2-none-any.whl
Collecting python-gnupg (from python-gist)
Downloading python_gnupg-0.4.1-py2.py3-none-any.whl
Requirement already satisfied: requests in /usr/lib/python2.7/site-packages (from python-gist)
Collecting docopt (from python-gist)
Downloading docopt-0.6.2.tar.gz
Requirement already satisfied: simplejson in /usr/lib64/python2.7/site-packages (from python-gist)
Requirement already satisfied: urllib3==1.20 in /usr/lib/python2.7/site-packages (from requests->python-gist)
Installing collected packages: python-gnupg, docopt, python-gist
Installing from a newer Wheel-Version (1.1)
Running setup.py install for docopt … done
Successfully installed docopt-0.6.2 python-gist-0.5.1 python-gnupg-0.4.1

 

トークンの取得及び設定

GitHub Gistへのアクセスにはトークン(personal access token)が必要なので、以下の手順で取得します。

  1. https://github.com/settings/applicationsにアクセスします。
  2. 下図のような画面が表示されますので、”Personal Access Token”(赤枠)をクリックします。
  3. 下図のような画面が表示されますので、”Generate new token”(赤枠)をクリックします。
  4. 下図のような画面が表示されますので、Gistのパスワードを入力して、”Confirm password”ボタンを押します。
  5. 下図のような画面が表示されますので、”Token description”に適当な文字列を入力します。また、”Select scopes”については必要と思われるものにチェックを入れます。チェックを入れ終わったら、画面下部の”Generate token”ボタンを押します。
  6. personal access tokenとして生成された16進の文字列が表示されますので、それをコピーします。

上記のトークンを取得したら、$HOME/.config/gistという名前のファイルを作成し、そのファイルに以下のように記述します。

[gist]
token: [personal access tokenをここにセット]
editor: /usr/bin/emacs

 

動作確認

まず、何も考えずに以下のようにコマンドを実行してみると、エラーが出力されます。

[panda@pandanote pandanote-info-gist]$ gist content f6de71bfe8b15678f4e43eb9e82ad26e
1505834605.942 ERROR[gist] ‘ascii’ codec can’t encode characters in position 2887-2894: ordinal not in range(128)

 

なんでだろうと思い調べてみると、環境変数LANGを日本語(UTF-8)に設定すると回避できるらしいことがわかったので、その前に環境変数LANGの値を確認してみると…

[panda@pandanote pandanote-info-gist]$ echo $LANG
C

 
ものの見事にダメ設定でした。orz

そこで、$HOME/.bashrcの適当なところに、以下の1行を追加し、新たにシェルを起動しました。

export LANG=ja_JP.UTF-8

再度動作を確認してみる。


スポンサーリンク

ここで、もう一度動作確認をしてみます。

[panda@pandanote pandanote-info-gist]$ gist list
f6de71bfe8b15678f4e43eb9e82ad26e + Amazon product advertising APIを使ってWordpressのサイドバーにリンクを表示するためのサンプルコード。
71cf14ee30a7de16f5cfc8ef24269a91 + YARPPをカスタマイズしてみた。
554ade8e0917915a62806d157336b330 + HTTP/1.1以外のプロトコルでの接続を拒否する設定と、TTPによるリクエストをHTTPSにリダイレクトする設定
3be1b5822f901a9775d27528363545e6 – WordPressのデータベースへのアクセスエラーの表示用ページのカスタマイズ用ファイルのサンプル。
196df40df0f8d8aba25c8227b1a4035e –
6e12988c72047b0e3b93622bc8e3df05 + TigerVNC 1.8.0以降のクリップボードサポートを無効にするためのpatch.
6cfb588bffa0e2a62aaff3246449ff3f + MediaWikiのPHP 7.0以降対応用のtemporary patch
d9493b8a39abc02a66129881db63e255 + MediaWikiのPHP 7.0以降対応用のtemporary patch
7e0eb5fc5c14160999a19c708e33fb03 + AviUtlのエクスポートファイル版ルパン三世風タイトルパーツメーカー
a97113568dad1308bc387696ee333bc8 + Iconic Oneテーマで各記事の最終更新日を表示するための修正用の差分コード。
dde4dc1d1d2d5507dbd45aa022371d9b + Let’s encryptから取得した異なるドメインに対するSSL/TLS証明書を同一のWebサーバで共存させて使用するための設定例
130c7e9f0bf863b8907ab586fabd3338 + AviUtlのエキスポートファイルから字幕ファイル(srt)ファイルを作成するためのコード

 
上記の各行の先頭にあるハッシュ値のような16進の値がGitHub Gist上でのIDになるので、以下のようにgist contentコマンドの引数に与えると、ファイルの中身を取得できます(実行結果については本サイト中に同じものがありますので、ここでは省略します)。

$ gist content 71cf14ee30a7de16f5cfc8ef24269a91

 
実行可能なコマンドの一覧はgist helpコマンドで表示できます。

[panda@pandanote pandanote-info-gist]$ gist help
Usage:
gist list
gist edit <id>
gist description <id> <desc>
gist info <id>
gist fork <id>
gist files <id>
gist delete <ids> …
gist archive <id>
gist content <id> [<filename>] [–decrypt]
gist create <desc> [–public] [–encrypt] [FILES …]
gist create <desc> [–public] [–encrypt] [–filename <filename>]
gist clone <id> [<name>]
gist version

 

まとめ

本記事では、python-gistパッケージのインストールの方法と動作確認の結果について記述しました。GitHub Gistをコマンドライン経由で使用できるようにするためのツールは他にもdnfコマンドでインストール可能なものでgistsというのもあり、その他にもいくつかあるようです。gistsについては自宅サーバのFedora 26では動かすことができなかったので、いったんインストールはしたものの、削除しました。

実は、GitHub Gistにアップロードしたコード等に対してリファクタリングを行う予定があるので、python-gistのコマンドを実際に使ってみた際の使用感とかtips&tricks的なものについては、別の記事で書きたいと考えています。

この記事は以上です。