Python
Pythonista

Pythonista3でちょっと休憩してニュースを聞く

はじめに

iOS上で動作する革命的ものづくり環境「Pythonista 3」の魅力をとくと語る
でPythonista3が紹介されていて、おもしろそうなので私もインストールしました。
今回は学習のために簡単なスクリプトを作りました。
Pythonistaでfeedparserが使えるので、
【データサイエンスの基礎】pythonでRSSからデータ収集
のコードに無駄にiOSっぽい処理を追加しました。

コード

news_time.py
import feedparser
import speech
import notification
import re
import ui

#ボタンをタップした時の動作
def button_tapped(sender):
    sender.title = 'Stopped'
    speech.stop()

#UIの設定
view = ui.View()                                      
view.name = 'NewsTime'                                    
view.background_color = 'white'                       
button = ui.Button(title='STOP NEWS')
#ボタンを真ん中に配置
button.center = (view.width * 0.5, view.height * 0.5)
button.flex = 'LRTB'                                  
button.action = button_tapped                         
view.add_subview(button)                              
view.present('sheet')

#RSSをParse
RSS_URL = "https://headlines.yahoo.co.jp/rss/tokyomx-dom.xml"
news_dic = feedparser.parse(RSS_URL)

#speechで読み上げる
speech.say('ニュースでも聞いてって')
for entry in news_dic.entries:
    title = re.sub('(.+)','', entry.title)
    speech.say(title)

#通知の設定:7200秒後に通知をスケジュールし、このスクリプトを呼ぶ
ret = notification.schedule("ちょっと休憩してニュースでも聞いたら", 7200, 'default','pythonista3://speech/news_time?action=run')

流れは次のようになっています。
(1)UIの作成。かなり適当で音声再生を止めるボタンのみ配置しています。
(2)ニュースの取得。RSSから見出しを取得しています。
(3)読み上げ。speech.sayで読み上げてくれます。
(4)通知の設定。notificationで7200秒(2時間)後に通知が来るようにしています。
また、pythonista3://speech/news_time?action=runで通知を開いた際に、
再度このスクリプトを実行するようにアクションを設定しています。

テスト

スクリプトを実行します。初回はとりあえず、聞いておきましょう。
そして2時間後、、、
DE40436C-AEE3-48CF-8551-8FF58CD50845.png

通知が来た!そろそろ休憩です。タップ!

E2E999FD-59AA-4F12-B611-E71BA4A3DF67.jpeg

ちなみにこの画面で音声が流れています。
真ん中の「STOP NEWS」をタップすると音声が止まります。

最後に

無限ループになるので、もういいやってなったら通知を開かずに消してください。
このスクリプトはあまり役に立ちませんが、面白いことができそうだと思いました。

参考サイト

ひとりぶろぐ
【データサイエンスの基礎】pythonでRSSからデータ収集
Pythonista Modules