あるユーザに送信したダイレクトメッセージを過去○日分一気に削除するスクリプト(デフォルトで 14 日間)
$ virtualenv -p python3 v
$ . v/bin/activate
$ pip install requests.txt
$ WEBEX_TEAMS_ACCESS_TOKEN='......' EMAIL='hogehoge@example.com' python run.py
certifi==2018.11.29 | |
chardet==3.0.4 | |
future==0.17.1 | |
idna==2.8 | |
requests==2.21.0 | |
requests-toolbelt==0.8.0 | |
urllib3==1.24.1 | |
webexteamssdk==1.0.3 |
from datetime import datetime, timedelta, timezone | |
import os | |
from webexteamssdk import WebexTeamsAPI | |
# 思い出を消したいお相手のメールアドレス | |
EMAIL = os.environ["EMAIL"] | |
# 思い出を消したい日数 | |
DAYS = 14 | |
api = WebexTeamsAPI() | |
def get_datetime_bydeltaDays(): | |
JST = timezone(timedelta(hours=+9), 'JST') | |
delta = timedelta(days=DAYS) | |
ret = datetime.now(JST) - delta | |
return ret | |
def get_datetime_byISOstr(iso_str): | |
# dt = timezone aware, UTC | |
dt = datetime.strptime("{}{}".format(iso_str, "+0000"), '%Y-%m-%dT%H:%M:%S.%fZ%z') | |
return dt | |
def get_people_displayName(email): | |
items = list(api.people.list(email=EMAIL)) | |
if items: | |
return items[0].displayName | |
return None | |
def get_roomId_bydisplayName(displayName): | |
rooms = api.rooms.list(type='direct', max=1000) | |
for room in rooms: | |
if room.title == displayName: | |
return room.id | |
return None | |
def get_mymessages_byroomId(roomId): | |
ret = [] | |
me = api.people.me() | |
afterdatetime = get_datetime_bydeltaDays() | |
messages = api.messages.list(roomId=roomId, max=1000) | |
for message in messages: | |
if get_datetime_byISOstr(message.created) < afterdatetime: | |
break | |
if message.personId == me.id: | |
ret.append(message) | |
return ret | |
def main(): | |
target_displayname = get_people_displayName(EMAIL) | |
print("{name} さんに送信したメッセージを過去 {days} 日分削除します".format(name=target_displayname, days=DAYS)) | |
target_roomid = get_roomId_bydisplayName(target_displayname) | |
target_messages = get_mymessages_byroomId(target_roomid) | |
print("削除対象は {} 件です".format(len(target_messages))) | |
for i, message in enumerate(target_messages): | |
api.messages.delete(messageId=message.id) | |
# i starts from 0 | |
print("削除しました:{now}/{total} 件".format(now=i+1, total=len(target_messages))) | |
if __name__ == '__main__': | |
main() |