【Python】iiblogs ——命令行下的网页收藏夹

昨天和集训队的几位大大聊天,聊着聊着就聊到了博客的问题,发现几个人要么在CSDN 要么在博客园上, 要记住他们的所有的地址还真是不便,于是灵机一动,何不自己写一款小工具来存储打开他们的博客呢?于是将这款工具取名为iiblogs,意为ii系列的博客工具,其实本质上就是个收藏夹,打开某位大牛博客的方法就是直接终端下输入:iiblogs [大牛的名字] 。

各种操作比如添加,删除,修改,改名都可以在使用选项来完成,比如

增加-a --add

删除-d --del

修改-m --modify

改名-c --change

考虑到锻炼自己的原因,存储结构选择了MySQL,虽说大材小用,但对程序总体的性能和稳定性上贡献还是比较大的。

下面给出代码:

MySQL 建库语句(考虑到中文存储问题,默认utf8):

drop database if exists iiblogs;

CREATE DATABASE iiblogs DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
use iiblogs;

create table blogs
(
 id int unsigned auto_increment primary key,
 name varchar(50) not null,
 address varchar(100) not null
);
  1 #!/usr/bin/python
  2 #coding=utf-8
  3
  4 import MySQLdb
  5 import sys
  6 import getopt
  7 import os
  8
  9 HOST = ‘localhost‘
 10 USER = ‘root‘
 11 PASSWORD = ‘××××××ב
 12 DBNAME = ‘iiblogs‘
 13
 14 BROWSER = ‘chromium-browser‘
 15
 16 def Usage():
 17     print "iiblogs [name] |  [option] [name]"
 18     print "\tiiblogs [name]                open his blog"
 19     print ‘\tiiblogs [-a|--add] [name]        add new address‘
 20     print ‘\tiiblogs [-d|--del] [name]        delete address‘
 21     print ‘\tiiblogs [-m|--modify] [name]        modify the address‘
 22     print ‘\tiiblogs [-c|--change_name] [newname]     change the name‘
 23     print ‘\tiiblogs [-l|--list]            list all‘
 24     print ‘\tiiblogs [-h|--help]            help infomation‘
 25     return
 26
 27 def Connect():
 28     conn = MySQLdb.connect(host=HOST, user=USER, passwd=PASSWORD, db=DBNAME, charset = ‘utf8‘)
 29     return conn
 30
 31 def Add(name):
 32     conn = Connect()
 33     mycursor = conn.cursor()
 34     sql = "select name from blogs where name = %s"
 35     param = (name)
 36     n = mycursor.execute(sql, param)
 37     if n > 0:
 38         print ‘This name exists‘
 39         return
 40     addr = raw_input("blog‘s address:")
 41     sql = "insert into blogs values(null, %s, %s);"
 42     param = (name, addr)
 43     mycursor.execute(sql, param)
 44     conn.commit()
 45     conn.close()
 46     return;
 47
 48 def Delete(name):
 49     conn = Connect()
 50     mycursor = conn.cursor()
 51     sql = "delete from blogs where name = %s"
 52     param = (name)
 53     mycursor.execute(sql, param)
 54     conn.commit()
 55     conn.close()
 56     return;
 57
 58 def Opensite(args):
 59     conn = Connect()
 60     mycursor = conn.cursor()
 61     sql = "select address from blogs where name=%s"
 62     weblist = []
 63     fail = []
 64     webs = ‘ ‘
 65     for name in args:
 66         param = (name)
 67         n = mycursor.execute(sql, param)
 68         if n < 1:
 69             print "‘%s‘ does not exist" % (name)
 70             fail.append(name)
 71             continue
 72         else:
 73             print "‘%s‘ OK." % (name)
 74         for one in mycursor.fetchone():
 75             one = one.encode("utf-8")    #utf8 ------------
 76             weblist.append(one)
 77     if (len(weblist) == 0):
 78         return
 79     for index, item in enumerate(weblist):
 80         webs = webs + ‘ ‘ + item
 81     last = BROWSER + webs + ‘ &‘
 82     os.system(last)
 83     conn.close()
 84     return
 85
 86 def List():
 87     conn = Connect()
 88     mycursor = conn.cursor()
 89     sql = "select name, address from blogs"
 90     mycursor.execute(sql)
 91     for res in mycursor.fetchall():
 92         print res[0], ‘:    ‘, res[1]
 93     conn.close()
 94     return
 95
 96 def Modify(name):
 97     conn = Connect()
 98     mycursor = conn.cursor()
 99     sql = ‘select name from blogs where name=%s‘
100     param = (name)
101     n = mycursor.execute(sql, param)
102     if n < 1:
103         print "This name does not exist"
104         return
105     new = raw_input("please input the new address:")
106     sql = "update blogs set address=%s where name=%s"
107     param = (new, name)
108     mycursor.execute(sql, param)
109     conn.commit()
110     conn.close()
111     return
112
113 def Changename(name):
114     conn = Connect()
115     mycursor = conn.cursor()
116     sql = ‘select name from blogs where name=%s‘
117     param = (name)
118     n = mycursor.execute(sql, param)
119     if n < 1:
120         print "This name does not exist"
121         return
122     new = raw_input("please input the new name:")
123     sql = "update blogs set name=%s where name=%s"
124     param = (new, name)
125     mycursor.execute(sql, param)
126     conn.commit()
127     conn.close()
128     return
129
130 try:
131     opts, args = getopt.getopt(sys.argv[1:], ‘lha:d:m:c:‘, [‘list‘, ‘help‘, ‘add‘, ‘del‘, ‘modify‘, ‘change‘])
132 except getopt.GetoptError:
133     Usage()
134     sys.exit()
135 for o, a in opts:
136 #a = a.decode("gbk").encode("utf-8")
137     if o in (‘-h‘, ‘--help‘):
138         Usage()
139         sys.exit()
140     if o in (‘-a‘, ‘--add‘):
141         Add(a)
142         sys.exit()
143     if o in (‘-d‘, ‘--del‘):
144         Delete(a)
145         sys.exit()
146     if o in (‘-l‘, ‘--list‘):
147         List()
148         sys.exit()
149     if o in (‘-m‘, ‘--modify‘):
150         Modify(a)
151         sys.exit()
152     if o in (‘-c‘, ‘--change‘):
153         Changename(a)
154         sys.exit()
155 if len(args) == 0:
156     Usage()
157 else:
158     Opensite(args)
时间: 2024-11-03 01:27:18

【Python】iiblogs ——命令行下的网页收藏夹的相关文章

[兴趣使然]用python在命令行下画jandan像素超载鸡

下午刷煎蛋的时候看到 Dthalo 蛋友发的系列像素超载鸡,就想自己试试用python脚本画一个,老男孩视频里的作业真没兴趣,弄不好吧没意思,往好了写,自己控制不好,能力不够. 所以还是找自己有兴趣的先练练手,先实现,然后慢慢解耦. *1.因为颜色有限,给超载鸡染了绿毛. 2.用字符串的join方法尽量减少字符显示宽度的影响. 3.目前用命令行下运行有效,以后应该改为os.system方法运行. 4.试过了字符串的center方法,但是该方法使用的填充字符必须是一个字符,字符串不行. 5.用的 

ubuntu 命令行下查看网页 w3m

w3m localhost/index.php 退出按shift+q

Linux命令行下统计当前文件夹下的文件个数

统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件的个数,包括子文件夹里的. ls -lR|grep "^-"|wc -l 统计文件夹下目录的个数,包括子文件夹里的. ls -lR|grep "^d"|wc -l 说明: ls -l 长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录.链接.设备文

window的cmd命令行下新增/删除文件夹及文件

新增文件夹 (md / mkdir) md <folderName>: folderName 就是文件路径,只输入文件夹名称时表示在当前目录下创建文件夹. 比如:md F:\test\project 删除文件夹 (rd / rmdir) rd  <folderName>  : rd只能删除空文件夹,如果其中有子文件或子文件夹就会停下来 rd /s  <folderName>:  rd 加上 /s就可以直接删除,但是删除时会弹出是否确认删除的提示 rd /s /q <

Windows命令行下pip安装python whl包

因为做网页爬虫,需要用到一个爬新闻的BeautifulSoup 的包,然后再关网上下的是whl包,第一次装,虽然花了点时间,最后还是装上去了,记录一下,方便下次. 先发一下官方文档地址.http://www.crummy.com/software/BeautifulSoup/bs4/doc/ 建议有时间可以看一下Python包的文档. Beautiful Soup 相比其他的html解析有个非常重要的优势.html会被拆解为对象处理.全篇转化为字典和数组. 相比正则解析的爬虫,省略了学习正则的高

windows安装使用python、环境设置、多python版本的切换、pyserial与多版本python安装、windows命令行下切换目录

1.windows下安装python 官网下载安装即可 2.安装后的环境设置 我的电脑--属性--高级--设置path的地方添加python安装目录,如C:\Python27;C:\Python33 3.多版本的切换三种方法: 1)修改C:\Python27;C:\Python33内python.exe为python2.7.exe.python3.3.exe,即可区别开来 2)path路径中去除不用的,保留要用的 3)切换到想使用版本的python.exe目录下使用python解释器 4.下载好

Python安装后在CMD命令行下出现“应用程序无法启动.............”问题

问题存在之一:系统是刚刚重做的精简版服务器系统(阉割版) AN就是在阿里云上刚开的Windows Server 2008 系统上碰到的  吓尿了都 症状:            正常安装python环境后 进入cmd命令行中,执行python就报错,报错的大概内容就是 “应用程序无法启动....因为并行配置不正确...请执行....exe文件”  PS:卧槽,记不清了, 错误截图 也找不到了 下药:          1.面对CMD命令行报错,代开事件查看器 可以通过控制面板打开,也可以在cmd

【Python】iichats —— 命令行下的局域网聊天程序

转载请声明出处:http://www.cnblogs.com/kevince/p/3941728.html   ——By Kevince ii系列工具第三弹,命令行下的局域网聊天程序 原理: 程序启动时向全网(255.255.255.255)BACKPORT端口广播自己的主机名以及状态(上线). 如果接受收到的上线状态,则将其加入通信列表,同时返还一个数据包,使自己也将对面加入其通信列表. 程序退出时向全网广播自己的下线状态,如果收到该下线状态则将其从自己的通信列表中删除 为了防止在输入过程中被

如何在命令行下设置默认的Python版本?(已解决)

2018年7月3日 北京实时天气:热,比前几天好点,扇着风扇很舒服. 研究Python多版本共存问题:Windows7 64位系统,同时安装了Python2.7及Python3.5,如何在命令行下设置默认的版本? This is a big problem. 今天找到了办法: 可以通过设置环境变量的办法解决,哪一个设置在前面,哪一个版本就是命令行下的默认版本. 很神奇,是不是?[中国赞] 原文地址:http://blog.51cto.com/shbiao05/2135798