Created
March 6, 2017 17:02
-
-
Save shershen08/d033c05739fcc1d24792de1c91b2a549 to your computer and use it in GitHub Desktop.
Class-based RSS reader in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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