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"