前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自己打造基于命令行的书签管理工具

自己打造基于命令行的书签管理工具

作者头像
章鱼喵
发布2018-06-27 15:17:35
1.4K0
发布2018-06-27 15:17:35
举报
文章被收录于专栏:coding

大多数人都是用浏览器自带的书签管理工具存储url, 虽然这个也挺方便,不过当url多了,即使是分类存放,也不是很好找。于是,我就在琢磨着,能不能自制一个基于命令行的书签管理工具。我只要在命令行敲几个关键词就能直接进入网站,毕竟,对于程序猿而言,命令行是最高效的方式。

有了想法,就动手做吧...

思路分析

  • 最终要的效果是:命令行输入关键词,如果这个关键词所包含的url只有一个,就直接打开网址;如果有多个,就罗列并显示序号,通过序号选择;如果没有找到url,就提示查看现有的url列表

最终效果图

  • 书签存放在文件中,每一行一个书签,便于管理 如:
代码语言:javascript
复制
编程入门指南 v1.5 https://zhuanlan.zhihu.com/p/19959253?columnSlug=xiao-jing-mo
Laravel 教程 - Web 开发实战入门 https://fsdhub.com/books/laravel-essential-training-5.1/
Linux命令大全 http://man.linuxde.net/
  • 原理:用python将书签文件读取,存为列表。获取命令行参数,判断参数是否存在于列表中,如果存在,调用chrome浏览器打开url

代码实现

  • chrome安装路径设置为环境变量,便于调用浏览器

我用的是win10自带的ubuntu子系统

代码语言:javascript
复制
export chrome="/mnt/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe"
  • 将书签存储在bookmark.md文件中
  • 操作书签的python代码bookmark.py
代码语言:javascript
复制
#_*_coding:utf8_*_
import sys,os,re
chrome = os.getenv('chrome') # 获取环境变量chrome
keyword = sys.argv[1].lower() # 不区分大小写
url_data = []
file_path = sys.path[0] + '/bookmark.md'

# 需要指定文件编码
with open(file_path, 'rb') as file_object:
    for line in file_object:
        url_data.append(line.decode("UTF-8").strip())

url_arr = []

for url_str in url_data:
    url_str = url_str.lower()
    if keyword in url_str:
        url_arr.append(url_str)

url_len = len(url_arr)

# 获取书签
def getBookbarks(data):
    i = 0
    for x in data:
        print(str(i) + '. ' + x)
        i = i + 1

# 正则匹配url
def matchUrl(url_content):
    url_match = re.search(r"http[^\s]*", url_content)
    url = url_match.group(0).rstrip()
    return url

url = ''
if url_len > 1:
    getBookbarks(url_arr)
    choice = input('选择要进入的url序号\n')
    url = matchUrl(url_arr[int(choice)])
elif url_len == 1:
    url = matchUrl(url_arr[0])
else:
    choice = input('无此书签,是否需要显示所有的书签?y:是 n:否\n')
    if choice == 'y':
        getBookbarks(url_data)

if url:
    print(url)
    os.system(chrome + ' ' + '"' + url + '"')
    exit()
  • 设置程序调用的别名
代码语言:javascript
复制
alias b='python3 /home/wwwroot/script/bookmark/bookmark.py'

如此,一个简便的书签管理器就制作完成了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.08.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思路分析
  • 代码实现
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档