latyas

不想总是动手翻看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()

 

分类:

技术点:

相关文章:

  • 2021-11-27
  • 2022-12-23
  • 2021-08-14
  • 2021-12-31
  • 2022-12-23
  • 2021-10-12
  • 2021-12-05
猜你喜欢
  • 2022-02-10
  • 2022-12-23
  • 2021-05-18
  • 2021-10-03
  • 2022-12-23
  • 2022-12-23
  • 2021-08-25
相关资源
相似解决方案