Markdown效果图
谷歌浏览器可安装 MD-READER插件后直接打开markdown文件
也可以结合awesome-bookmarks项目编译生成导航网站
项目地址: https://panjiachen.github.io/awesome-bookmarks/
上代码,很简单、就是一个递归
bookmarks.py
# -*- encoding: utf-8 -*-
"""
@File: bookmarks.py
@Author: Little duo
@Time: 2022/10/2 13:18
"""
import json
import win32api
class ChromeBookMarks:
def __init__(self,
bookmark_path=rf"C:\Users\{win32api.GetUserName()}\AppData\Local\Google\Chrome\User Data\Default\Bookmarks"):
"""
:param bookmark_path: 谷歌浏览器书签文件路径, 可以在浏览器中输入 chrome://version 查看个人资料路径, 文件名是 Bookmarks
"""
self.bookmarks_dict = {}
self.bookmarks_list = []
self.markdown_content_list = []
self.bookmarks_path = bookmark_path
self.bookmark_file_read()
self.generate_markdown()
self.write_db()
def bookmark_file_read(self):
"""
读取书签文件
:return:
"""
with open(self.bookmarks_path, mode='r', encoding='utf8') as f:
self.bookmarks_dict = json.load(f)['roots']['bookmark_bar']
def parse_to_markdown(self, bookmark_obj, level=0):
"""
解析书签对象
:param bookmark_obj:
:param level:
:return:
"""
if bookmark_obj['type'] == 'folder' and 'children' in bookmark_obj.keys():
level += 1
children = bookmark_obj['children']
children.reverse()
bookmark_obj['children'] = children
for mark in bookmark_obj['children']:
self.parse_to_markdown(mark, level)
title_style = ['#', '##', '###', '####', '#####', '######']
row = f"\n{title_style[level]} {bookmark_obj['name'].strip()}\n"
if bookmark_obj['type'] == 'url':
row = f"- [**{bookmark_obj['name'].strip()}**]({bookmark_obj['url']})"
self.markdown_content_list.append(row)
def generate_markdown(self):
"""
生成markdown文件
:return:
"""
markdown_head = "# 网站\n**常用网站收藏**\n"
markdown_content = str()
markdown_foot = str()
self.parse_to_markdown(self.bookmarks_dict)
self.markdown_content_list.reverse()
markdown_content = '\n'.join(self.markdown_content_list)
markdown_str = markdown_head + markdown_content + markdown_foot
import os
os.makedirs(f'resource/markdown', exist_ok=True)
with open(f'resource/markdown/README.md', mode='w', encoding='utf-8') as f:
f.write(markdown_str)
ChromeBookMarks()