python初学者です。
slack apiを利用して、channel一覧と取得したchannel内で行われた発言の一覧を取得する仕組みを作りたいと考えております。
(最終的にはユーザー一覧と合わせて、誰が何件発言したのかを記録できるようになりたい)
最終目標は上記ですが、勉強のためにやっているので、定期実行などは後から考えたいと考えています。
利用環境
- OS:m1 chip macbook air
- python:pyton3系(google colaboratory)
やりたいこと
- conversations.listからチャンネルの一覧を取得する
- 1で取得したチャンネルのidを引数として発言数を取得する関数に渡して発言一覧を取得する
- 2の処理をforとかでchannel_idを次々に渡すことで、全チャンネルの発言一覧を取得する
- 3で処理したものを一つのデータフレームにまとめるor3の処理1回終わるごとにspreadsheetなどに記録する
- usersの一覧を別途で取得しておき、取得した発言数から誰が何回発言しているのかを明らかにする
出来なかったこと
- 1で得たidを引数として2に渡すところ
- 3の連続で処理する際に何故か同じデータフレームが何度も出来てしまう
- 4で一つのデータフレームにまとめること
自分でやってみたこと
- channelsのidの取得
def get_channels_list(): url = 'https://slack.com/api/conversations.list' headers = {'Authorization' : 'Bearer '+ YOUR_TOKEN_OAUTH} request_channels = requests.get(url ,headers = headers) res_c = json.dumps(request_channels.json()) json_data_c = json.loads(res_c) json_list_c = json_data_c['channels'] channel_id = json_normalize(json_list_c) return channel_id['id']
- coversations(特定チャンネルにおける)発言の取得
def get_conversations(k): url = "https://slack.com/api/conversations.history" header={ "Authorization": "Bearer {}".format(YOUR_TOKEN_OAUTH) } payload = { "channel": k } response = requests.get(url, headers=header, params=payload) res_m = json.dumps(response.json()) json_data = json.loads(res_m) json_list = json_data['messages'] messages = json_normalize(json_list) return messages
お願いしたいこと
- 以下のいずれかのような回答をいただけると幸いです。
- 解決方法
- 実現したいことをやるために理解すべきことがまとまっているようなサイト
- 特にidを引数としてfor文を使って渡す方法
- 連続で作ったデータフレームを一つにまとめる方法
学習が足りないことは重々承知なのですが、やってみたいと思って始めてみたのはいいのですが、初学者向けのpythonの学習教材を何度も復習してもうまく応用ができない状況です。
もしよければご教示くださいますと大変幸いです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー