TaillookTech

備忘録

mkdir してすぐに cd する

備忘録

bash上で

$ mkdir DirectoryName && cd $_

.bash_profileに関数定義

.bash_profileに関数を定義する.

mkcd() { mkdir $1 && cd $_; }

結果

user:~$ mkcd a
user:~/a$

PythonでGoogleニュースから記事情報を取得する [ウェブスクレイピング]

なにをした?

暇なときにニュース記事をすぐ探せるものが欲しかったのでGoogleニュースから記事情報を取得するものを作った.
単純にウェブスクレイピングがしたかった.

なにをつかった?

  • Python3
  • requests
  • argparse
  • HTMLParser

結果

$ python get_news.py --topic t --amount 10
Title: 「Appleは自動運転システムに注力している」ティム・クックCEO、開発を認める 
Link: http://www.gizmodo.jp/2017/06/tim-cook-accepts-developing-selfdriving-car.html

Title: ランサムウェアに影響されない安全なOSとは? 
Link: http://gigazine.net/news/20170617-microsoft-ransomware-against-windows-10-s/

Title: いつの間にかiPhoneの画面が点いている? という現象を防ぐには 
Link: http://news.livedoor.com/article/detail/13218777/

Title: イーロン・マスクが描く「火星移住」計画 100万人規模を視野に 
Link: https://forbesjapan.com/articles/detail/16633

Title: 「E3」で発表されたゲーミングギアまとめ。最先端技術からレトロなものまで 
Link: http://top.tsite.jp/news/technology/o/35933635/?sc_int=tcore_news_recent

Title: Galaxy Note 8のパネルとされる画像がリークされる!S8と変化なし? 
Link: http://iphone-mania.jp/news-172076/

Title: 【噂】iPhone 8のディスプレイサイズが判明か? 
Link: http://www.appps.jp/266777/

Title: MacBook Proユーザーの私が、任天堂スイッチに救われた話 
Link: http://japanese.engadget.com/2017/06/16/macbook-pro/

Title: 「Pixel」シリーズ、出荷台数はようやく100万台を突破か 
Link: http://ggsoku.com/2017/06/app-install-number-on-play-store-implies-the-actual-shipment-number-of-pixel-series/

Title: 目指すは「一家に一台」 SIEJA盛田厚プレジデントにインタビュー 
Link: https://mainichi.jp/articles/20170617/dyo/00m/200/028000c

Github

Githubにコードを公開しています.
たまに更新します.

Python3&PIL(Pillow)でSlackのEmojiジェネレーター作ってみた

なにをした?

Slackでオリジナルの絵文字が使えるらしい(最近知った)
友人がせっせとGIMPで画像に文字を埋め込んでた.
自動化しようぜって思ったのでスクリプトを組んだ.

なにをつかった?

Python3とPythonの画像処理ライブラリで,Python Imaging Library (PIL)のforkプロジェクトであるPillowを使用した.

結果

python3 emojiGenerator.py むりですといった感じに実行すると
f:id:taillook:20170502223655p:plain
上の画像が生成される.

Github

Githubにコードを公開しています.
たまに更新する予定.

連番のテキストファイルを自動生成するシェルスクリプトを組む

概要

テストデータ作る時に便利そうなので作った

コード

#!/bin/bash

for n in `seq 0 ${1}`
do
    touch ${n}.txt
    echo ${n}.txt
    echo "test">>${n}.txt
done

結果

$ ./test.sh 10
0.txt
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt
10.txt

Python3とRequestsで郵便番号から住所を取得するAPIを叩く

Requestsとは

PyhtonのHTTPライブラリ.
人類にとって読みやすくコーディングできるらしい.

qiita.com

インストール

pip3 install requests

郵便番号から住所を取得するAPI

今回は郵便番号データ配信サービスzipcloudのAPIを使用する.

zipcloudの使い方

ベースURL : http://zipcloud.ibsnet.co.jp/api/search
このURLにパラメータを加えてリクエストを送る.

zipcloudを使ってみる

getでhttp://zipcloud.ibsnet.co.jp/api/search?zipcode=1540013で郵便番号を与えるとjsonが返ってくる.

{
    "message": null,
    "results": [
        {
            "address1": "東京都",
            "address2": "世田谷区",
            "address3": "駒沢公園",
            "kana1": "トウキョウト",
            "kana2": "セタガヤク",
            "kana3": "コマザワコウエン",
            "prefcode": "13",
            "zipcode": "1540013"
        }
    ],
    "status": 200
}

不正な桁の郵便番号を渡すとエラーが出る.
http://zipcloud.ibsnet.co.jp/api/search?zipcode=19216811

{
    "message": "パラメータ「郵便番号」の桁数が不正です。",
    "results": null,
    "status": 400
}

存在しない郵便番号を渡すとnullが返る.
http://zipcloud.ibsnet.co.jp/api/search?zipcode=1234567

{
    "message": null,
    "results": null,
    "status": 200
}

PythonからAPIを叩いてみる

テキトーにコードを書いてみる

import json
import sys
import requests

def main(zipcode):
    url = "http://zipcloud.ibsnet.co.jp/api/search"
    param = {"zipcode": zipcode}

    res = requests.get(url, params=param)
    response = json.loads(res.text)
    address = response["results"][0]

    print(address["address1"] + address["address2"] + address["address3"])

main(sys.argv[1])

動作例

$ python3 main.py 1900003
東京都立川市栄町

Processingとminimで風船を膨らませる!

minimとは

minimはProcessing1.0以降のバージョンで標準のサウンドライブラリ.
短いコードでオーディオのコントロールができる!

Minim | Compartmental

今回作ったもの

画面中の風船をユーザの声で膨らませるもの.
“声を出し続けないと風船がしぼんじゃうよ!”
“膨らませすぎると割れちゃうよ!”
子供向けに何か作れないかなと思って作ったはいいけど唾がキーボードに散るのが嫌なので不採用. f:id:taillook:20170321185217p:plain
f:id:taillook:20170321185127p:plain
f:id:taillook:20170321185122p:plain
画像は"いらすとや"から

動作

  1. マイクから音を拾う
  2. 音量が一定以上で膨らませる
  3. 音量が一定以下でしぼませる
  4. 風船が一定以上の大きさになると破裂する
  5. Shiftキーでリセット

環境

  • MacBookPro 2016
  • macOS Sierra
  • Processing 3.3
  • minim 2.2.2

GitHub

github.com

subprocess.callでPythonからシェルコマンドを叩く

備忘録

import subprocess

subprocess.call('ls -l', shell=True)
subprocess.call(['ls', '-l'])

出力結果は同じ
自動でパースさせる場合にshell=Trueが必要.