Skip to content

Instantly share code, notes, and snippets.

@shershen08
Created March 6, 2017 17:02
Show Gist options
  • Save shershen08/d033c05739fcc1d24792de1c91b2a549 to your computer and use it in GitHub Desktop.
Save shershen08/d033c05739fcc1d24792de1c91b2a549 to your computer and use it in GitHub Desktop.
Class-based RSS reader in Python
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from time import gmtime, strftime
import locale
import feedparser
from gtts import gTTS
from time import sleep
import os
import pyglet
pyglet.lib.load_library('avbin')
pyglet.have_avbin=True
def read_text(text):
tts = gTTS(text=text, lang='ru')
filename = 'tmp_32654269357_temp.mp3'
tts.save(filename)
music = pyglet.media.load(filename, streaming=False)
music.play()
sleep(music.duration)
os.remove(filename)
def run_intro():
intro_time = strftime("%A, %d %b %H:%M", gmtime())
intro_text = 'Привет, я ридер RSS. Сейчас'
read_text(intro_text)
read_text(intro_time)
class Reader(object):
'class for reading RSS-feeds'
def __init__(self, rss_path, title, lang='ru'):
self.lang = lang
self.rss_path = rss_path
self.title = title
#print self.__dict__
def get_feed(self):
d = feedparser.parse(self.rss_path)
return d['entries']
def read(self, itemsLength=5):
self.read_text(self.title)
sleep(2)
f = self.get_feed()
for i, item in enumerate(f):
if (i <= itemsLength):
real_number = (i+1)
str = '%s - %s' % (real_number, item['title'])
print str
self.read_text('%s -' % real_number)
sleep(0.3)
self.read_text(item['title'])
sleep(1)
def read_text(self, text):
tts = gTTS(text=text, lang=self.lang)
filename = 'tmp_32654269357_temp.mp3'
tts.save(filename)
music = pyglet.media.load(filename, streaming=False)
music.play()
sleep(music.duration)
os.remove(filename)
# ///////////////////////////////
locale.setlocale(locale.LC_TIME, 'ru_RU')
#run_intro()
#sleep(2)
yn = Reader('https://news.yandex.ru/index.rss', 'Новости топа Яндекс')
yn.read(10)
sleep(2)
hn = Reader('https://news.ycombinator.com/rss', 'Hackernews top', 'en')
hn.read(20)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment