-
Notifications
You must be signed in to change notification settings - Fork 0
/
downdetector.py
104 lines (86 loc) · 3.24 KB
/
downdetector.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import urllib.request
import urllib.error
from datetime import datetime, timedelta
from scraper import GetHomePage, GetCampusmate, GetMoodle
from ccl_scraping import ccl_scraping
import tweepy
import time
import os
CK = os.environ['CK']
CS = os.environ['CS']
AT = os.environ['AT']
AS = os.environ['AS']
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)
def checkurl(url):
# URLにアクセスする htmlが帰ってくる → <html><head><title>経済、株価、ビジネス、政治のニュース:日経電子版</title></head><body....
try:
urllib.request.urlopen(url)
status = 200
words = "正常"
except urllib.error.HTTPError as e:
status = e.code
words = "ダウン"
except Exception as e:
status = None
words = "ダウン"
print(status, words)
return status, words
checker = "正常"
before_moodle = ""
before_campusmate = ""
before_homepege = ""
while True:
try:
char = "【九大Webサービス情報】\n\n"
url = "https://moodle.s.kyushu-u.ac.jp"
status1, words = checkurl(url)
char += "moodle {} {}\n".format(words, status1)
if status1 == 200:
txt = GetMoodle()
if before_moodle != txt and before_moodle != "":
tmp = "九大Moodleのニュースが更新されました\n\n{}\n\nhttps://moodle.s.kyushu-u.ac.jp/".format(txt)
api.update_status(status=tmp)
before_moodle = txt
url = "https://ku-portal.kyushu-u.ac.jp"
status2, words = checkurl(url)
char += "Campusmate {} {}\n".format(words, status2)
if status1 == 200:
# txt = GetCampusmate()
if before_campusmate != txt and before_campusmate != "":
tmp = "Campusmateのニュースが更新されました\n\n{}\n\nhttps://ku-portal.kyushu-u.ac.jp/campusweb/login.do".format(txt)
api.update_status(status=tmp)
before_campusmate = txt
url = "https://www.lib.kyushu-u.ac.jp"
status3, words = checkurl(url)
char += "図書館ポータル {} {}\n".format(words, status3)
url = "https://www.kyushu-u.ac.jp"
status4, words = checkurl(url)
char += "ホームページ {} {}\n\n".format(words, status4)
if status1 == 200:
txt, murl = GetHomePage()
if before_homepege != txt and before_homepege != "":
tmp = "九大HPのニュースが更新されました\n\n{}\n\n{}".format(txt, murl)
api.update_status(status=tmp)
before_homepege = txt
nowdate = datetime.now()
nowdate = nowdate + timedelta(hours=9)
char += nowdate.strftime("%Y/%m/%d %H:%M:%S")
char += "\n#九大サーバ情報"
before_checker = checker
if status1 == status2 == status3 == status4 == 200:
checker = "正常"
else:
checker = "異常"
if before_checker != checker:
api.update_status(status=char)
print("tweeted!")
else:
print("Stay")
# ccl notify
# ccl_scraping()
except Exception as e:
print(e)
time.sleep(30)