前提
pythonでchromeのブックマークが記載されているjsonフォルダーを読み取るところまではできましたが、ショートカットにすることができません。
実現したいこと
chromeのブックマークからショートカットを作りたい
発生している問題・エラーメッセージ
PS C:\Users\akira_nzdqq9k\Desktop\Python> & C:/Users/akira_nzdqq9k/AppData/Local/Microsoft/WindowsApps/python3.10.exe c:/Users/akira_nzdqq9k/Desktop/Python/bookmark.py Traceback (most recent call last): File "c:\Users\akira_nzdqq9k\Desktop\Python\bookmark.py", line 32, in <module> short.Save() File "C:\Users\akira_nzdqq9k\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\comtypes\client\lazybind.py", line 182, in caller return self._comobj._invoke(descr.memid, descr.invkind, 0, *args) File "C:\Users\akira_nzdqq9k\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\comtypes\automation.py", line 745, in _invoke self.__com_Invoke(memid, riid_null, lcid, invkind, _ctypes.COMError: (-2147352567, '例外が発生しました。', (None, None, None, 0, None))
該当のソースコード
python
1import json 2import getpass 3import comtypes.client 4 5CHROME_BOOKMARK_PATH = ("C:/Users/akira_nzdqq9k/AppData/Local/Google/Chrome/User Data/Default/Bookmarks").format(username=getpass.getuser()) 6 7def get_chrome_bookmark_data() -> dict: 8 '''Get the json of user's Chrome bookmark.''' 9 with open(CHROME_BOOKMARK_PATH, encoding="utf-8") as f: 10 return json.load(f) 11 12# JSON 内のデータを取得する 13bookmark_data = get_chrome_bookmark_data() 14 15bookmark_name = [] 16bookmark_url = [] 17bookmark_name_no = {"AI Programmer", "乗り換え案内・時刻表 - 駅探", "寿司打","iCloud","無料テトリスのPCブラウザゲーム Tetris HTML5 | 無料ゲームnet","2048","teratail【テラテイル】|ITエンジニア特化型Q&Aサイト" 18,"Personal apps | Heroku","KRUNKER.IO - Krunker.io を無料で楽しむ で Poki","Play ev.io - the blockchain FPS of the future","お気に入り登録中のマンガ (マイページ) - ニコニコ漫画","CSS Diner - Where we feast on CSS Selectors!", 19"CSSBattle - the CSS code-golfing game!","Hello, animation! — Animations — HTML Academy"} 20 21bookmark_bar = bookmark_data['roots']['bookmark_bar'] 22for j in bookmark_bar["children"]: 23 if j["type"] == "url": 24 if not ("{name}".format(**j)) in bookmark_name_no: 25 bookmark_name.append(("{name}".format(**j))) 26 bookmark_url.append("{url}".format(**j)) 27 28for (name, url) in zip(bookmark_name, bookmark_url): 29 wsh=comtypes.client.CreateObject("wScript.Shell",dynamic=True) 30 short=wsh.CreateShortcut("C:/Users/akira_nzdqq9k/Desktop/新しいフォルダー/{}.url".format(name)) 31 short.TargetPath=url 32 short.Save()
試したこと
この状態では動きます
python
1import comtypes.client 2 3bookmark_name = ["Akira", "qwerty"] 4bookmark_url = ["https://www.javadrive.jp/python/file/index3.html", "https://stackoverflow.com/questions/36064723/pywintypes-com-error-2147352567-exception-occurred-0-none-none-none"] 5 6print(bookmark_name) 7print(bookmark_url) 8 9for (name, url) in zip(bookmark_name, bookmark_url): 10 wsh=comtypes.client.CreateObject("wScript.Shell",dynamic=True) 11 short=wsh.CreateShortcut("C:/Users/akira_nzdqq9k/Desktop/新しいフォルダー/{}.url".format(name)) 12 short.TargetPath=url 13 short.Save()
補足情報(FW/ツールのバージョンなど)
実行環境はvscode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。