LoginSignup
4
4

More than 3 years have passed since last update.

connpassのAPIをPythonから動かす

Last updated at Posted at 2018-11-16

はじめに

 connpassは便利。APIは便利。Pythonは便利。全部まとめてconnpassのAPIをPythonから動かす。

環境

 PC:Raspberry Pi 3 Model B+
 OS:Raspbian GNU/Linux 9.4 (stretch)
 Python3.5.3
 requests:2.12.4
 beautifulsoup4.6.3

インストール

 ターミナルを開いて、以下のコマンドを入力する。

$ sudo pip3 install requests beautifulsoup4

connpassのAPIについて

 詳しい仕様が公式サイトにあるので、ご覧になることをお勧めする。イベントの概要やID、開催場所の緯度・開度に至るまで取得できる。今回は「ユーザー名を入力するとその人が参加・予約したイベントを表示する」というプログラムを紹介する。

本題

 全体のプログラムはこんな感じ。

connpass.py
import requests
import bs4

def main():
    name = None
    while name != "":
        name = input("検索したいユーザー名を入力してください。")
        userSearch(name)


def userSearch(nickname):
    url = "https://connpass.com/api/v1/event?nickname=" + nickname
    data = requests.get(url).json()
    events = data["events"]
    print(nickname + "は以下のイベントに参加、もしくは予約しました。\n")
    for event in events:
        for k, v in event.items():
            if k == "owner_nickname":
                print("開催者:")
                print(v)
            if k == "place":
                print("場所:")
                print(v)
            if k == "title":
                print("イベント名:")
                print(v)
        print("\n")

main()

仕組み

import

 まず、必要なモジュールを読み込む。requestsはウェブページのソースコードを取ってくるモジュールで、bs4(beautifulsoup4)は、そこから抜き出しを行うためのモジュール。

import requests
import bs4

main()

 メイン処理は以下のようになっている。

def main():
    name = None
    while name != "":
        name = input("検索したいユーザー名を入力してください。")
        userSearch(name)

 検索したいユーザー名を入力すると、何かが入力される限りuserSearch()を実行する。

userSearch()

 取ってくるURLを生成。 

url = "https://connpass.com/api/v1/event?nickname=" + nickname

 ダウンロード。

data = requests.get(url).json()

 参加したイベント一覧を取得。

events = data["events"]

 メッセージ表示して、

print(nickname + "は以下のイベントに参加、もしくは予約しました。\n")

 実行。

for event in events: #参加したイベントを順番に取得
        for k, v in event.items(): #辞書形式のイベント情報を順番に取得
            if k == "owner_nickname": #開催者名を取得
                print("開催者:")
                print(v)
            if k == "place": #場所を取得
                print("場所:")
                print(v)
            if k == "title": #イベント名を取得
                print("イベント名:")
                print(v)
        print("\n")

 最後にまとめて実行。

main()

終わりに

 紹介した機能は一部でしたが、リファレンスを見れば、開催地の座標から「参加したイベントの会場で一番北だったのはどこか」を調べるというような応用も効きます。是非やってみてください。

4
4
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
4
4