Tuesday, March 14, 2017

voice reading RSS feeds with Python

Here is a small Python script that can read arbitrary RSS feed and later read it to you by voice. As an example I have RSS feeds from two websites: yandex.ru and news.ycombinator.com loaded in Russian and English language respectively.
#!/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)
It has following dependencies: gTTS (google text to speach module, core function) also pyglet and feedparser.

Friday, March 3, 2017

Правила разработки компонетов Vue

Недавно решил перевести хорошую подборку советов по тому как лучше писать компоненты Vue.js чтобы потом ими было удобно пользоваться. если выкинуть framework-specific то подходит к любому компонентно-ориентированному фреймворку (Angular2, Angular + 1.6, ReactJS, Polymer) да и к любому модульному коду вообще.

  • Модульная разработка
  • Наименование копонентов vue
  • Выражения в компонентах должны быть простыми
  • Оставляйте свойства простыми
  • Правильно используйте свойства компонента
  • Определяйте this как component
  • Структура компонента
  • Именование событий
  • Избегайте this.$parent
  • Используйте this.$refs осторожно
  • Используйте ограниченные стили
  • Документируйте API компонента
  • Добавляйте демо
  • Форматируйте код файлов

Исходный репозиторий (en)

Репозиторий с переводом

Перевод еще в процессе, осталось 4 жирных пункта.
05.03.2017 UPD Все закончил, автор исходного репо смерджил мой текст.