LoginSignup
2
2

More than 5 years have passed since last update.

手元のコードをサクッと Gist にアップロードするための Ruby/Python スクリプト

Last updated at Posted at 2017-09-25

Ruby スクリプト

upload_to_gist.rb
require 'json'
require 'net/http'

# 環境変数 GITHUB_USERNAME に GitHub のユーザ名を設定しておく。
username = ENV['GITHUB_USERNAME']
# 環境変数 GITHUB_PASSWORD に GitHub のパスワードを設定しておく。
password = ENV['GITHUB_PASSWORD']
# コマンドライン引数の第 1 引数にアップロードするファイルのパスを指定する。
filepath = ARGV[0]

content = File.read(filepath)
filename = File.basename(filepath)

uri = URI.parse('https://api.github.com/gists')

request = Net::HTTP::Post.new(uri.path, { 'Content-Type' => 'application/json' })
request.basic_auth(username, password)
request.body = {
  # private でアップロードする。public でアップロードしたい場合は true を指定する。
  public: false,
  files: {
    filename => { content: content }
  }
}.to_json

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

response = http.request(request)
body = JSON.parse(response.body)

puts("#{filename}#{body['html_url']} にアップロードしました。")

Python スクリプト

upload_to_gist.py
from requests.auth import HTTPBasicAuth  # pip install requests
import json
import os
import requests
import sys


# 環境変数 GITHUB_USERNAME に GitHub のユーザ名を設定しておく。
username = os.getenv('GITHUB_USERNAME')
# 環境変数 GITHUB_PASSWORD に GitHub のパスワードを設定しておく。
password = os.getenv('GITHUB_PASSWORD')
# コマンドライン引数の第 1 引数にアップロードするファイルのパスを指定する。
filepath = sys.argv[1]

content = open(filepath, 'r').read()
filename = os.path.basename(filepath)

payload = {'files': {filename: {'content': content}}}
response = requests.post('https://api.github.com/gists',
                         data=json.dumps(payload),
                         auth=HTTPBasicAuth(username, password))
body = response.json()
url = body['html_url']

print(f'{filename}{url} にアップロードしました。')

使用例

上記の Ruby スクリプト自身を Gist にアップロードする。

$ ruby upload_to_gist.rb upload_to_gist.rb
upload_to_gist.rb を https://gist.github.com/f98fdcbf58539da7f2df69be0cb3bb35 にアップロードしました。

表示された URL にアクセスすると

gist.github.com-quanon-f98fdcbf58539da7f2df69be0cb3bb35(Laptop with MDPI screen).png

アップロードできてる :tada:

同様に Python スクリプトも試してみる。

$ python upload_to_gist.py upload_to_gist.py
upload_to_gist.py を https://gist.github.com/bc874dc72d0f9a6f2c92c494fc8e04ed にアップロードしました。

表示された URL にアクセスすると

gist.github.com-quanon-bc874dc72d0f9a6f2c92c494fc8e04ed(Laptop with MDPI screen).png

アップロードできてる :confetti_ball:

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2