no-image

Pythonで勉強会情報を自動投稿するTwitterBOTを作った【ソースコードのみ】

今回はPythonとtweepyで勉強会情報をツイートするBotをつくりました。
作ったBOTはこれです。
よかったらフォローしてあげてください。

勉強会の情報を検索するのがめんどくさかったところから作ろうと思い立ちました。
機能としては、勉強会情報を公開している3つのサイトから、新着情報をスクレイピングしてきてTwitterに投稿するだけのシンプルなBOTです。

ざっくり作り方やコードを紹介しておこうと思います。
大体は下の記事で前にやったことと同じなので、特別新しいことはやってないです。

なので今回はほんとにコード貼り付けるだけのメモ記事ですね。
ああ、ちなみに貼ってあるコードは基幹部のみなのでこのままでは動きません。
ご容赦をお願いします。

・Twitter
Twitterで自動ふぁぼ、認証機能を実装してWEBアプリ化!
Twitterで自動ふぁぼ!PythonでTwitterBOTをつくる。

・スクレイピング
Python初心者が、BeautifulSoupではてぶ人気記事をWEBスクレイピング
BeautifulSoup×Pythonで、初心者でも10分でできるRSSスクレイピングを解説

ソースコード

#getlink.py

from urllib.request import urlopen
from bs4 import BeautifulSoup
import json

def getDoorkeeper():
    getlists = []

    html = urlopen("https://www.doorkeeper.jp/events/recently_published")
    bsObj = BeautifulSoup(html, "html.parser")
    bsObjs = bsObj.findAll("div", {"class": "global-event-list-day"})

    for bsObj in bsObjs:
        month = bsObj.find("div", {"class": "month"}).text
        day =  bsObj.find("div", {"class": "day"}).text

        link = bsObj.find("div", {"class": "events-list-item-title"}).find("a")
        url = link.get("href")
        title = link.text

        date = {"month": month, "day": day, "url": url, "title": title}
        getlists.append(date)
    
    return getlists


def getTechplay():
    getlists = []

    html = urlopen("https://techplay.jp/event/search?sort=created_desc&api_dots=1")
    bsObj = BeautifulSoup(html, "html.parser")
    bsObjs = bsObj.findAll("div", {"class": "eventlist"})

    for bsObj in bsObjs:
        day = bsObj.find("div", {"class": "day"}).text

        link = bsObj.find("div", {"class": "title"})
        url = link.find("a").get("href")
        title = link.find("span").text

        date = {"day": day, "url": url, "title": title}
        getlists.append(date)

    return getlists


def getConnpass():
    getlists = []

    html = urlopen("https://connpass.com/explore/")
    bsObj = BeautifulSoup(html, "html.parser")
    bsObjs = bsObj.findAll("div", {"class": "recent_event_list_inner"})

    for bsObj in bsObjs:
        link = bsObj.find("a")

        url = link.get("href")
        title = link.get("title")

        date = {"url": url, "title": title}
        getlists.append(date)

    
    return getlists

def return_Connpass_text():
    g = getConnpass()
    texts = []

    for i in range(10):
        title = g[i]['title']
        url = g[i]['url']
        text = title + "\n" + url +"\n\n" + "#エンジニア勉強会"

        texts.append(text)
    
    return texts

def return_Doorkeeper_text():
    g = getDoorkeeper()
    texts = []

    for i in range(10):
        month = g[i]['month']
        day = g[i]['day']
        title = g[i]['title']
        url = g[i]['url']
        text = month + day + "\n" + title + "\n" + url + "\n\n" + "#エンジニア勉強会"

        texts.append(text)

    return texts


def return_Techplay_text():
    g = getTechplay()
    texts = []

    for i in range(10):
        day = g[i]['day']
        title = g[i]['title']
        url = g[i]['url']
        text = day + "\n" + title + "\n" + url + "\n\n" + "#エンジニア勉強会"

        texts.append(text)

    return texts
#twitter.py

import tweepy

def twitter_post(text,AT,AS):
    CK = # Consumer Key
    CS = # Consumer Secret

    auth = tweepy.OAuthHandler(CK, CS)
    auth.set_access_token(AT, AS)
    api = tweepy.API(auth)

    api.update_status(text)

    return "ok"