# 用API批次修改文章權限(PyHackMD) |Suggested by|Description|HackMD Profile |--|--|--| |Willis Chen|採用貢獻者的 PyHackMD 來用 Python 接 API,修改編輯權限與刪除文件文件|[@wiimax](https://hackmd.io/@wiimax) ## HackMD API ,來用 Python 串接吧 [Colab示範](https://colab.research.google.com/gist/willismax/eefb5ebe70b4e2c24ba6a6780e49fd62/pyhackmd.ipynb#scrollTo=ArwACMvUoa88) :::spoiler Gist {%gist eefb5ebe70b4e2c24ba6a6780e49fd62 %} ::: - 安裝套件 ```python !pip install PyHackMD ``` - 設定自己的 Token,參閱 [HackMD User notes API](https://hackmd.io/@docs/HackMD_API_Book/https%3A%2F%2Fhackmd.io%2F%40hackmd-api%2Fdeveloper-portal) ```python HACKMD_API_TOKEN = <HACKMD_API_TOKEN> ``` - 取得筆記列表 ```python from PyHackMD import API from pprint import pprint api = API(HACKMD_API_TOKEN) data = api.get_note_list() pprint(len(data)) #顯示筆記數量 pprint(data[0]) #顯示第一筆 ``` ![](https://hackmd.io/_uploads/H1Df53Nki.png) ## 取得編輯權限非owner的筆記,並且全改成owner 因為自己筆記預設權限為登入者可編輯,可用API一次修正。 - 取得編輯權限非owner的筆記 ```python from PyHackMD import API api = API(HACKMD_API_TOKEN) data = api.get_note_list() for note in data: if note['writePermission'] != 'owner': print(note['id'], note['title'], note['writePermission']) ``` ![](https://hackmd.io/_uploads/ry8552Nyj.png) - 取得編輯權限非owner的筆記,並且全改成owner ```python from PyHackMD import API import time api = API(HACKMD_API_TOKEN) data = api.get_note_list() for note in data: # 取得編輯權限非owner的筆記 if note['writePermission'] != 'owner': print(note['id'], note['title'], note['writePermission']) time.sleep(1) # 依note_id將編輯權限全改成owner api.update_note( note_id=note['id'], write_permission = "owner") time.sleep(1) _ = api.get_note(note_id=note['id']) print(_['id'], _['title'], _['writePermission']) ``` ![](https://hackmd.io/_uploads/rJGlshNJs.png) ## 刪除名稱未定義,內容為空的筆記 用API一次刪除沒有使用到的筆記。 - 空筆記特徵: - `'title': 'Untitled'` - `'content': ''` ```python from PyHackMD import API from pprint import pprint import time api = API(HACKMD_API_TOKEN) data = api.get_note_list() for note in data: if (note['title'] == 'Untitled') : # print(note) _ = api.get_note(note_id = note['id']) if _["content"] == "": print(_['id'], _['title'], _["content"]) api.delete_note(_['id']) ``` ![](https://hackmd.io/_uploads/SyXGo3NJs.png) ![](https://hackmd.io/_uploads/S1e7o34ks.png)