zoukankan      html  css  js  c++  java
  • 【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 #python 2.7.6
      4 
      5 import MySQLdb
      6 import sys
      7 import getopt
      8 import os
      9 
     10 HOST = 'localhost'
     11 USER = 'root'
     12 PASSWORD = '×××××××'
     13 DBNAME = 'iiblogs'
     14 
     15 BROWSER = 'chromium-browser'
     16 
     17 def Usage():
     18     print "iiblogs [name] |  [option] [name]"
     19     print "	iiblogs [name]                open his blog"
     20     print '	iiblogs [-a|--add] [name]        add new address'
     21     print '	iiblogs [-d|--del] [name]        delete address'
     22     print '	iiblogs [-m|--modify] [name]        modify the address'
     23     print '	iiblogs [-c|--change_name] [newname]     change the name'
     24     print '	iiblogs [-l|--list]            list all'
     25     print '	iiblogs [-h|--help]            help infomation'
     26     return
     27 
     28 def Connect():
     29     conn = MySQLdb.connect(host=HOST, user=USER, passwd=PASSWORD, db=DBNAME, charset = 'utf8')
     30     return conn
     31 
     32 def Add(name):
     33     conn = Connect()
     34     mycursor = conn.cursor()
     35     sql = "select name from blogs where name = %s"
     36     param = (name)
     37     n = mycursor.execute(sql, param)
     38     if n > 0:
     39         print 'This name exists'
     40         return
     41     addr = raw_input("blog's address:")
     42     sql = "insert into blogs values(null, %s, %s);"
     43     param = (name, addr)
     44     mycursor.execute(sql, param)
     45     conn.commit()
     46     conn.close()
     47     return;    
     48     
     49 def Delete(name):
     50     conn = Connect()
     51     mycursor = conn.cursor()
     52     sql = "delete from blogs where name = %s"
     53     param = (name)
     54     mycursor.execute(sql, param)
     55     conn.commit()
     56     conn.close()
     57     return;
     58 
     59 def Opensite(args):
     60     conn = Connect()
     61     mycursor = conn.cursor()
     62     sql = "select address from blogs where name=%s"
     63     weblist = []
     64     fail = []
     65     webs = ' '
     66     for name in args:
     67         param = (name)
     68         n = mycursor.execute(sql, param)
     69         if n < 1:
     70             print "'%s' does not exist" % (name)
     71             fail.append(name)
     72             continue
     73         else:
     74             print "'%s' OK." % (name)
     75         for one in mycursor.fetchone():
     76             one = one.encode("utf-8")    #utf8 ------------
     77             weblist.append(one)            
     78     if (len(weblist) == 0):
     79         return
     80     for index, item in enumerate(weblist):
     81         webs = webs + ' ' + item
     82     last = BROWSER + webs + ' &'
     83     os.system(last)
     84     conn.close()
     85     return
     86 
     87 def List():
     88     conn = Connect()
     89     mycursor = conn.cursor()
     90     sql = "select name, address from blogs"
     91     mycursor.execute(sql)
     92     for res in mycursor.fetchall():
     93         print res[0], ':    ', res[1]
     94     conn.close()
     95     return
     96 
     97 def Modify(name):
     98     conn = Connect()
     99     mycursor = conn.cursor()
    100     sql = 'select name from blogs where name=%s'
    101     param = (name)
    102     n = mycursor.execute(sql, param)
    103     if n < 1:
    104         print "This name does not exist"
    105         return
    106     new = raw_input("please input the new address:")
    107     sql = "update blogs set address=%s where name=%s"
    108     param = (new, name)
    109     mycursor.execute(sql, param)
    110     conn.commit()
    111     conn.close()
    112     return
    113 
    114 def Changename(name):
    115     conn = Connect()
    116     mycursor = conn.cursor()
    117     sql = 'select name from blogs where name=%s'
    118     param = (name)
    119     n = mycursor.execute(sql, param)
    120     if n < 1:
    121         print "This name does not exist"
    122         return
    123     new = raw_input("please input the new name:")
    124     sql = "update blogs set name=%s where name=%s"
    125     param = (new, name)
    126     mycursor.execute(sql, param)
    127     conn.commit()
    128     conn.close()
    129     return
    130         
    131 try:
    132     opts, args = getopt.getopt(sys.argv[1:], 'lha:d:m:c:', ['list', 'help', 'add', 'del', 'modify', 'change'])
    133 except getopt.GetoptError:
    134     Usage()
    135     sys.exit()
    136 for o, a in opts:
    137 #a = a.decode("gbk").encode("utf-8")
    138     if o in ('-h', '--help'):
    139         Usage()
    140         sys.exit()
    141     if o in ('-a', '--add'):
    142         Add(a)
    143         sys.exit()
    144     if o in ('-d', '--del'):
    145         Delete(a)    
    146         sys.exit()
    147     if o in ('-l', '--list'):
    148         List()
    149         sys.exit()
    150     if o in ('-m', '--modify'):
    151         Modify(a)
    152         sys.exit()
    153     if o in ('-c', '--change'):
    154         Changename(a)
    155         sys.exit()
    156 if len(args) == 0:
    157     Usage()
    158 else:
    159     Opensite(args)
  • 相关阅读:
    中国象棋评估函数建模
    C语言中指针变量传参
    STM32外部中断
    C语言中的注释
    STM32学习网址
    C语言中的布尔值
    更改KEIL背景配色
    Modbus通讯协议
    DUP
    算法的时间复杂度
  • 原文地址:https://www.cnblogs.com/kevince/p/3936306.html
Copyright © 2011-2022 走看看