TwitterをSoftalkのゆっくりボイスでしゃべらせる 2

red blue and yellow textile 作ってみた
スポンサーリンク

TwitterをSoftalkのゆっくりボイスでしゃべらせる | クレコ

では、python-twitterというライブラリを使っていたわけですが、そもそもタイムライン、メンションを読むだけなら、そこまで高機能なのはいらない!それに、導入するのが面倒!ってわけで、簡単お気軽に導入できるようにしてみた。

ソース

# -*- coding: utf-8 -*-

import feedparser, os, nkf, re, time

# config
userName = "USERNAME"
passWord = "PASSWORD"
softalkPath = "C:\softalk\softalk.exe"
softalkSpeed = "120"
lastSinceId = 1
lastGetTime = 0

# convert string
def convertString(string):
    # remove HTML entity
    string = re.sub('&.+;', ' ', string)
    # remove URL
    string = re.sub('(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)', u'ウェブ', string)
    
    # remove quote
    string = re.sub('"', ' ', string)
    string = re.sub("'", ' ', string)
    string = re.sub('\/', ' ', string)
    
    # remove my username
    string = re.sub('@' + userName , u'あなた', string)
    
    # convert unicode to sjis using nkf module
    string = nkf.nkf("-sX", string.encode("utf8"))

    return string

# get twitter timeline
def getTimeline():
    global lastSinceId

    rss = feedparser.parse('https://' + userName + ':' + passWord + '@twitter.com/statuses/mentions.rss?since_id=' + str(lastSinceId) )
#    rss = feedparser.parse('https://' + userName + ':' + passWord + '@twitter.com/statuses/friends_timeline.rss?since_id=' + str(lastSinceId) )

    if len(rss.entries) > 0:
        lastSinceId = re.search('\d+$', rss.entries[0].guid).group()

    reversed(rss.entries)

    for i in rss.entries[::-1]:
        print "%s" % (convertString(i.title))
        os.system('"' + softalkPath + '" /V:60 /S:'+softalkSpeed+' /T:3 /W:' + convertString(i.title))

while True:
    # time span of get timeline
    if time.time() > lastGetTime + 60:
        lastGetTime = time.time()
        getTimeline()
    else:
        time.sleep(5)

解説

導入するもの

  • Python実行環境
  • feedparser
  • nkf
  • SofTalk ver0151(複数起動ができるバージョン)

やっていること

今回は、feedparser使ってRSSで取得をしています。since_idで最新のものだけを取得しますが、20件以上あった場合のページ処理はしていませんので注意!20件以上あると読み上げが追いつかなくなりそうですけど。

あとは取得した本文をフィルタかけて読み上げるだけ。前はURLとかも全部読ませていたけど、URLなんて読み上げられたところでどうしようもないので、省略して「ウェブ」とだけ読み上げるようにしました。

これも、適当にカスタマイズして使ってもらえればうれしいです。ではでは!

タイトルとURLをコピーしました