脚本怎样分类管理收藏链接

wen 实用脚本 34

本文目录导读:

脚本怎样分类管理收藏链接

  1. 基于浏览器书签的脚本分类(最常用)
  2. 基于JSON的灵活分类(适合存储和扩展)
  3. 基于标签的自动分类(适合海量链接)
  4. 命令行交互式管理脚本
  5. 选择建议

为有效管理收藏的链接,通常有以下几种分类管理方案,你可以根据使用场景(个人浏览器、笔记软件或自动化脚本)选择合适的方式:

基于浏览器书签的脚本分类(最常用)

如果你需要生成一个可以直接导入浏览器的书签文件(HTML),脚本可以按文件夹结构来分类:

代码示例(Python生成书签HTML):

import os
class BookmarkManager:
    def __init__(self):
        self.bookmarks = {}  # 用字典存储分类与链接
    def add_bookmark(self, category, title, url):
        if category not in self.bookmarks:
            self.bookmarks[category] = []
        self.bookmarks[category].append({"title": title, "url": url})
    def export_to_html(self, file_path="bookmarks.html"):
        with open(file_path, "w", encoding="utf-8") as f:
            f.write("<!DOCTYPE NETSCAPE-Bookmark-file-1>\n")
            f.write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">\n")
            f.write("<TITLE>Bookmarks</TITLE>\n<H1>Bookmarks</H1>\n<DL><p>\n")
            for category, links in self.bookmarks.items():
                f.write(f"    <DT><H3>{category}</H3>\n")
                f.write("    <DL><p>\n")
                for link in links:
                    f.write(f'        <DT><A HREF="{link["url"]}">{link["title"]}</A>\n')
                f.write("    </DL><p>\n")
            f.write("</DL><p>\n")
        print(f"书签已导出至 {file_path}")
# 使用示例
bm = BookmarkManager()
bm.add_bookmark("编程语言", "Python官网", "https://python.org")
bm.add_bookmark("编程语言", "GitHub", "https://github.com")
bm.add_bookmark("设计资源", "Figma", "https://figma.com")
bm.add_bookmark("新闻", "Hacker News", "https://news.ycombinator.com")
bm.export_to_html()

基于JSON的灵活分类(适合存储和扩展)

将数据存储为结构化JSON,支持无限嵌套分类、标签和备注:

代码示例(JSON分类管理):

import json
class LinkManager:
    def __init__(self, file_path="links.json"):
        self.file_path = file_path
        self.data = self.load() or {"categories": []}
    def load(self):
        try:
            with open(self.file_path, "r", encoding="utf-8") as f:
                return json.load(f)
        except FileNotFoundError:
            return None
    def save(self):
        with open(self.file_path, "w", encoding="utf-8") as f:
            json.dump(self.data, f, ensure_ascii=False, indent=2)
    def add_category(self, name, parent=None):
        """添加分类,支持子分类"""
        category = {"name": name, "links": [], "subcategories": []}
        if parent:
            # 示例:按名称查找父分类(实际可用ID替代)
            for cat in self.data["categories"]:
                if cat["name"] == parent:
                    cat["subcategories"].append(category)
                    break
        else:
            self.data["categories"].append(category)
        self.save()
    def add_link(self, category_name, title, url, tags=None, note=""):
        """在指定分类下添加链接"""
        for cat in self.data["categories"]:
            if cat["name"] == category_name:
                cat["links"].append({
                    "title": title,
                    "url": url,
                    "tags": tags or [],
                    "note": note
                })
                self.save()
                return
        print(f"分类 '{category_name}' 不存在")
# 使用示例
manager = LinkManager()
manager.add_category("技术", "编程")   # 在技术下增加子分类
manager.add_link("技术", "MDN文档", "https://developer.mozilla.org", tags=["web", "文档"])
manager.add_link("技术", "LeetCode", "https://leetcode.com", tags=["算法", "面试"])
manager.add_link("编程", "Python官方", "https://python.org")  # 子分类
print(json.dumps(manager.data, ensure_ascii=False, indent=2))

基于标签的自动分类(适合海量链接)

不依赖固定分类,而是通过标签(tags)自动分组,脚本可以实时生成分类视图:

代码示例(根据标签自动分类):

from collections import defaultdict
class TagBasedManager:
    def __init__(self):
        self.links = []
    def add(self, title, url, tags):
        self.links.append({"title": title, "url": url, "tags": tags})
    def classify_by_tag(self):
        """按标签自动生成分类树"""
        categories = defaultdict(list)
        for link in self.links:
            for tag in link["tags"]:
                categories[tag].append(link)
        return dict(categories)
    def show(self):
        result = self.classify_by_tag()
        for tag, links in result.items():
            print(f"\n【{tag}】({len(links)}个链接)")
            for i, link in enumerate(links[:3], 1):  # 只显示前3个
                print(f"  {i}. {link['title']} - {link['url']}")
            if len(links) > 3:
                print(f"  ... 还有{len(links)-3}个")
# 使用示例
manager = TagBasedManager()
manager.add("Python教程", "https://python.org", ["编程", "入门", "Python"])
manager.add("Git命令大全", "https://git-scm.com", ["编程", "工具", "版本控制"])
manager.add("CSS动画库", "https://animate.style", ["前端", "CSS", "动画"])
manager.show()
# 自动输出:编程(2个)、入门(1个)、Python(1个)、工具(1个)...

命令行交互式管理脚本

适合需要随时增删查改的场景:

代码示例(CLI界面,支持子命令):

# 伪代码逻辑(可用Python + click库实现)
python link_manager.py add "编程" "Python官网" "https://python.org"
python link_manager.py add "技术/前端" "React文档" "https://react.dev"
python link_manager.py list        # 显示所有分类
python link_manager.py list 编程   # 显示该分类下链接
python link_manager.py search 算法 # 搜索所有包含“算法”标签的链接

选择建议

场景 推荐方案
简单导入浏览器书签 方案1(生成HTML书签)
需要灵活编辑和备份 方案2(JSON结构)
链接数量大、跨领域 方案3(标签自动分类)
日常手动管理 方案4(命令行交互)

你可以根据需要组合使用——例如用方案2存储数据,用方案1导出为浏览器书签,用方案3提供搜索功能。

抱歉,评论功能暂时关闭!