python写的监视bt.ktxp.com的rss的小脚本 updated

不想总是动手翻看bt.ktxp.com内容,影响干别的事儿,在windows下的监控bt.ktxp.com新番的小程序

需要安装feedparser库 ,winsound ONLY FOR WIN//linuxer自行修改吧

import feedparser
import re
import winsound
import time
import os

top = ''
mystack = []
updated = False

TAGS = {'1':['翠星',
              '奈亚子',
              ],
        '2':['革神语'
              ],
        '3':[],
        '4':['罪恶剪刀'],
        '5':['打工吧!魔王大人',
             '革命机',
             '恶魔幸存者',
             '恋爱物语',
             'Oregairu',
             ],
        '6':['约会大作战',
              '超电磁炮',],
        '7':['绝对防卫',
              '巨人',
              '不笑猫',
              '我的妹妹'],
    } #key是星期X
def get_cont(x):
    global top
    global mystack
    global updated
    r = re.compile('<.*?>')
    timestr = x.published
    flag = False
    
    for i in TAGS[str(time.localtime().tm_wday+1)]:
        if i.encode('utf8').decode('utf8') in x.title:
            flag = True
            break

    if flag == True:
        foo = r.sub('','['+timestr+']\n'+ x.title + '\n')
        foo += x['links'][1]['href']
        mystack.append(foo)

        if updated == True:
          print(foo)
          print("------------------------------------------------")
        return (foo,timestr)
    return None

    
def update():
  global top
  global updated
  
  f = feedparser.parse("http://bt.ktxp.com/rss-sort-1.xml")

  #filter
  filtered = []
  for i in f.entries:
    bar = get_cont(i)
    if bar != None:
      filtered.append(bar)
  updated = False
  timestr = filtered[0][1] #get published time
  
  #alerm
  if top != '' and top != timestr:
    winsound.Beep(6000,1000)
    os.system('cls')
    foobar = [i for i in filtered if i not in mystack] #get difference set
    
    for i in foobar:
      print(i)
    mystack.clear() #clear stack
  
    top = timestr #update latest time
    updated = True
    time.sleep(120)
    
    print('Updated!')
  elif top == '':#first time
    top = timestr
    updated = True
  
  print('Last Updated:' + top)
while True:
  update()
  if not updated:
    time.sleep(10) #1min

 

share.dmhy.net也可以用,把xml换成http://share.dmhy.org/topics/rss/rss.xml即可( 我就是开两个……)

linux用户可以用一下pyaudio库,播放wav代码源自官方

./audio.py

#
-*- coding: utf-8 -*- import pyaudio import wave chunk = 1024 def play(): wf = wave.open(r"./wave.wav", 'rb') p = pyaudio.PyAudio() stream = p.open(format = p.get_format_from_width(wf.getsampwidth()), channels = wf.getnchannels(), rate = wf.getframerate(), output = True) while True: data = wf.readframes(chunk) if data == "": break stream.write(data) stream.close() p.terminate()

调用的时候只需将

winsound.Beep(2000,3000)

替换成

import audio

audio.play()

 

posted @ 2013-05-06 16:21  latyas  阅读(823)  评论(0编辑  收藏  举报