#author("2023-03-02T12:49:54+09:00","default:yakumo_murakami","yakumo_murakami")
#author("2023-05-27T10:24:13+09:00","default:yakumo_murakami","yakumo_murakami")
[[今さらPython]]

こんなの。

機能は以下。

- お昼休みにNHKのニュース一覧を確認したい、ただそれだけのものです。
- 記事の頭にある番号を --get=番号 で指定すると、サマリーも呼び出せます。
- Python3と feedparser(pipモジュール)だけあれば基本動くと思います。

注意点は以下。

- viewオプションは外部ブラウザを呼びますが、Windows10+git on bash環境下でWindows版Pythonを実行した環境でしかテストしていません。
- PROXY等の環境をこれ自体では意識してないので、壁の中の環境ならそれなりの対応と、もしかしたら管理者の許可が必要でしょう。

* ソース [#s3736877]

 #!/usr/bin/env python
 
 # pipで入れたモジュールが動くかテスト。
 # (あと、ネット環境が動くかもテスト)
 
 import datetime
 import feedparser
 #import jaconv
 import os
 import re
 import subprocess
 import sys
 import time
 
 myself = sys.argv[0]
 
 # 主要(0)
 #key=0
 # 社会(1)
 key=1
 # 国際(6)
 
 p = re.compile(r'\-max=([0-9]+)$',flags=re.IGNORECASE)
 p2 = re.compile(r'\-key=([0-9]+)$',flags=re.IGNORECASE)
 p3 = re.compile(r'\-get=([0-9]+)$',flags=re.IGNORECASE)
 p5 = re.compile(r'\-view=([0-9]+)$',flags=re.IGNORECASE)
 p4 = re.compile(r'\-help$',flags=re.IGNORECASE)
         
         # 記事の最大数
 o=18
 g=-1
 g2=-1
 
 for x in sys.argv:
     if(p.search(x) != None):
         o=int(re.sub(p,'\\1',x))
         if(o < 0):
             o = o * -1
     elif(p2.search(x) != None):
         key=int(re.sub(p2,'\\1',x))
     elif(p4.search(x) != None):
         print("1. news title:   "+myself)
         print("2. news key:     "+myself+" --key=(news key)")
         print("3. news summary: "+myself+" --get=(news key)")
         print("4. call www:     "+myself+" -view=(news key)")
         print("5. This message: "+myself+" --help")
         quit()
     elif(p3.search(x) != None):
         g=int(re.sub(p3,'\\1',x))
         if(g < 0):
             g = g * -1
         #print("get: "+str(g))
     elif(p5.search(x) != None):
         g2=int(re.sub(p5,'\\1',x))
         if(g2 < 0):
             g2 = g2 * -1
         print("get: "+str(g2))
 
 url = "https://www.nhk.or.jp/rss/news/cat"+str(key)+".xml"
 d = feedparser.parse(url)
 gg = 0
 for entry in d.entries:
     if(g >= 0 or g2 >= 0):
         if(gg == g):
             print(entry.title)
             print(entry.link)
             print(entry.summary)
         elif(gg == g2):
             subprocess.run(["start",entry.link],shell=True)
     else:
         print(str(gg)+"\t"+entry.title+"\n\t"+entry.link)
     gg = gg + 1
     o = o - 1
     if(o < 1):
         break
 


* 実行 [#eae6b94a]

 $ news.py -get 1
 0       海外投資詐欺事件 会社社長ら8人再逮捕 数億円の現金押収
         http://www3.nhk.or.jp/news/html/20230302/k10013995881000.html
 1       去年 自転車乗車中の事故で死亡 ヘルメット非着用が2倍強
         http://www3.nhk.or.jp/news/html/20230302/k10013995821000.html
 :
 (snip)
 :
 $ news.py --help
 1. news title:   C:/Users/000001A00C008/bin/news.py
 2. news key:     C:/Users/000001A00C008/bin/news.py --key=(news key)
 3. news summary: C:/Users/000001A00C008/bin/news.py --get=(news key)
 4. call www:     C:/Users/000001A00C008/bin/news.py -view=(news key)
 5. This message: C:/Users/000001A00C008/bin/news.py --help
 1. news title:   news.py
 2. news key:     news.py --key=(news key)
 3. news summary: news.py --get=(news key)
 4. call www:     news.py -view=(news key)
 5. This message: news.py --help
 $ news.py -get=1
 去年 自転車乗車中の事故で死亡 ヘルメット非着用が2倍強
 http://www3.nhk.or.jp/news/html/20230302/k10013995821000.html
 来月から着用が努力義務化される自転車のヘルメットについて、警察庁が去年1年間に起きた自転車関連の事故を調査した結果、乗車中に死亡した人のうち、ヘルメットを着用していなかった人の割合は着用していた人の2倍余りだったことが分かりました。
 $

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS