linusの技術ブログのような何か

学生です プログラム(一応は)勉強中です  

前回の続き 時間指定をして、最新ものが来たらわかるようにした

どうもlinusです。

今回は前回やったやつの続きということで

 

例のプログラムを指定の時間で起動できるようにしました。

 

 

使った技術は時間取得のやつと他のプログラムを起動するものとメモ帳に書き込むというものです。

 

まず最初に時間指定ですが10分おきに起動してもらうためにこうしました。

# -*- coding: utf-8 -*-
import os
import datetime
import locale
#時間取得
now = datetime.datetime.now()
dd=11
while True:
    now = datetime.datetime.now()
    pri = now.minute
    if not pri == dd:
        if pri == 0 or pri==10 or pri == 20 or pri == 30 or pri == 40 or pri == 50   :
            os.system('python rss.py')
            dd = pri

こういうプログラムを作った

このnow = datetime.datetime.now() で今の時間の情報がわかり  now.minuteとやれば今の分の情報を抜き取れるのでそっからはifで起動するもので そっからは10分おきにやりたいのであのようなif文にあと気をつけなければいけないのは1分間に何回もこのループを回っているので同じminuteでは起動できないように
if not pri == dd:で10分のあとは10以外の奴でしか起動できないようにしました。os.systemのカッコの中には自分がターミナルでやりたいコマンドをできればできます。

そして肝心の最新のものはどうやるかというと

# coding: UTF-8

import urllib
import urllib2
import requests
from bs4 import BeautifulSoup
f = open('url.txt','r')
str = f.read()

def postSlack( channelCode, message):
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        respons = requests.post('https://slack.com/api/chat.postMessage', data = urllib.urlencode({
                'token': "トーンくんの番号",
                'channel':  channelCode.encode('utf_8') ,
                'text': message.encode('utf_8') ,
                'username': u"ブログ用".encode('utf_8') ,
                'icon_emoji': u":rage:",
                'unfurl_links': 'true',
                'unfurl_media': 'true',
        }),headers = headers)

        #print respons.text

# RSSを取得する
url = "https://www.pixivision.net/ja/rss"
response = urllib2.urlopen(url)
rss = response.read().decode("utf-8")

# RSSからデータを抽出する
soup = BeautifulSoup(rss,  "lxml-xml" )
items =  soup.find_all("item")
item = items.pop(0)

if not str==item.find("link").string:
    f = open('title.txt', 'w')
    f.write(item.find("link").string)
    f.close()
    print(item.find("title").string)
    print(item.find("link").string)
    postSlack("チャンネルid", u"違うものが来た"+item.find("title").string+item.find("link").string)
else:
    print(item.find("title").string)
    print(item.find("link").string)
    postSlack("チャンネル", u"一緒だった"+item.find("title").string+item.find("link").string)

まず

f = open('title.txt','r')
str = f.read()

で因数strの中にtitle.txtの文字情報が読み込まれます。ここでは適当に情報を入れておくといいと思います。 それでその下のif文の

if not str==item.find("link").string:

これで今取得して来たurlの先の情報とテキストのやつが一致していたら何も更新していないということで 違ったら更新されたということがわかります。

今日はこのくらいで終わりたいと思います。

参考にしたところ

qiita.com

http://www.ops.dti.ne.jp/ironpython.beginner/otherprocess.htmlwww.ops.dti.ne.jp

www.yukun.info