Handle titles and links
This commit is contained in:
@@ -59,8 +59,9 @@ def _jinja2_filter_datetime(watch_obj, format="%Y-%m-%d %H:%M:%S"):
|
|||||||
|
|
||||||
return datetime.datetime.utcfromtimestamp(int(watch_obj['last_checked'])).strftime(format)
|
return datetime.datetime.utcfromtimestamp(int(watch_obj['last_checked'])).strftime(format)
|
||||||
|
|
||||||
#@app.context_processor
|
|
||||||
#def timeago():
|
# @app.context_processor
|
||||||
|
# def timeago():
|
||||||
# def _timeago(lower_time, now):
|
# def _timeago(lower_time, now):
|
||||||
# return timeago.format(lower_time, now)
|
# return timeago.format(lower_time, now)
|
||||||
# return dict(timeago=_timeago)
|
# return dict(timeago=_timeago)
|
||||||
@@ -70,8 +71,8 @@ def _jinja2_filter_datetimestamp(timestamp, format="%Y-%m-%d %H:%M:%S"):
|
|||||||
if timestamp == 0:
|
if timestamp == 0:
|
||||||
return 'Not yet'
|
return 'Not yet'
|
||||||
return timeago.format(timestamp, time.time())
|
return timeago.format(timestamp, time.time())
|
||||||
#return timeago.format(timestamp, time.time())
|
# return timeago.format(timestamp, time.time())
|
||||||
#return datetime.datetime.utcfromtimestamp(timestamp).strftime(format)
|
# return datetime.datetime.utcfromtimestamp(timestamp).strftime(format)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/", methods=['GET'])
|
@app.route("/", methods=['GET'])
|
||||||
@@ -83,7 +84,6 @@ def main_page():
|
|||||||
|
|
||||||
# Sort by last_changed
|
# Sort by last_changed
|
||||||
datastore.data['watching'].sort(key=lambda x: x['last_changed'], reverse=True)
|
datastore.data['watching'].sort(key=lambda x: x['last_changed'], reverse=True)
|
||||||
|
|
||||||
output = render_template("watch-overview.html", watches=datastore.data['watching'], messages=messages)
|
output = render_template("watch-overview.html", watches=datastore.data['watching'], messages=messages)
|
||||||
messages = []
|
messages = []
|
||||||
return output
|
return output
|
||||||
@@ -135,7 +135,7 @@ def launch_checks():
|
|||||||
global running_update_threads
|
global running_update_threads
|
||||||
|
|
||||||
for watch in datastore.data['watching']:
|
for watch in datastore.data['watching']:
|
||||||
if watch['last_checked'] <= time.time() - 3*60*60:
|
if watch['last_checked'] <= time.time() - 3 * 60 * 60:
|
||||||
running_update_threads[watch['uuid']] = fetch_site_status.perform_site_check(uuid=watch['uuid'],
|
running_update_threads[watch['uuid']] = fetch_site_status.perform_site_check(uuid=watch['uuid'],
|
||||||
datastore=datastore)
|
datastore=datastore)
|
||||||
running_update_threads[watch['uuid']].start()
|
running_update_threads[watch['uuid']].start()
|
||||||
|
|||||||
@@ -28,16 +28,12 @@ class perform_site_check(Thread):
|
|||||||
|
|
||||||
def save_response_html_output(self, output):
|
def save_response_html_output(self, output):
|
||||||
# @todo maybe record a history.json, [timestamp, md5, filename]
|
# @todo maybe record a history.json, [timestamp, md5, filename]
|
||||||
|
|
||||||
|
|
||||||
with open("{}/{}.txt".format(self.output_path, self.timestamp), 'w') as f:
|
with open("{}/{}.txt".format(self.output_path, self.timestamp), 'w') as f:
|
||||||
f.write(output)
|
f.write(output)
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
def save_response_stripped_output(self, output):
|
def save_response_stripped_output(self, output):
|
||||||
# @todo maybe record a history.json, [timestamp, md5, filename]
|
|
||||||
|
|
||||||
with open("{}/{}.stripped.txt".format(self.output_path, self.timestamp), 'w') as f:
|
with open("{}/{}.stripped.txt".format(self.output_path, self.timestamp), 'w') as f:
|
||||||
f.write(output)
|
f.write(output)
|
||||||
f.close()
|
f.close()
|
||||||
@@ -54,6 +50,7 @@ class perform_site_check(Thread):
|
|||||||
|
|
||||||
print("Checking", self.url)
|
print("Checking", self.url)
|
||||||
import html2text
|
import html2text
|
||||||
|
self.ensure_output_path()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
r = requests.get(self.url, headers=headers, timeout=15, verify=False)
|
r = requests.get(self.url, headers=headers, timeout=15, verify=False)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ validators
|
|||||||
|
|
||||||
bleach==3.2.1
|
bleach==3.2.1
|
||||||
html5lib==0.9999999 # via bleach
|
html5lib==0.9999999 # via bleach
|
||||||
|
timeago
|
||||||
html2text
|
html2text
|
||||||
|
|
||||||
# @notes
|
# @notes
|
||||||
|
|||||||
@@ -77,3 +77,15 @@ body:after,body:before {
|
|||||||
-webkit-clip-path: polygon(100% 0,0 0,0 77.5%,1% 77.4%,2% 77.1%,3% 76.6%,4% 75.9%,5% 75.05%,6% 74.05%,7% 72.95%,8% 71.75%,9% 70.55%,10% 69.3%,11% 68.05%,12% 66.9%,13% 65.8%,14% 64.8%,15% 64%,16% 63.35%,17% 62.85%,18% 62.6%,19% 62.5%,20% 62.65%,21% 63%,22% 63.5%,23% 64.2%,24% 65.1%,25% 66.1%,26% 67.2%,27% 68.4%,28% 69.65%,29% 70.9%,30% 72.15%,31% 73.3%,32% 74.35%,33% 75.3%,34% 76.1%,35% 76.75%,36% 77.2%,37% 77.45%,38% 77.5%,39% 77.3%,40% 76.95%,41% 76.4%,42% 75.65%,43% 74.75%,44% 73.75%,45% 72.6%,46% 71.4%,47% 70.15%,48% 68.9%,49% 67.7%,50% 66.55%,51% 65.5%,52% 64.55%,53% 63.75%,54% 63.15%,55% 62.75%,56% 62.55%,57% 62.5%,58% 62.7%,59% 63.1%,60% 63.7%,61% 64.45%,62% 65.4%,63% 66.45%,64% 67.6%,65% 68.8%,66% 70.05%,67% 71.3%,68% 72.5%,69% 73.6%,70% 74.65%,71% 75.55%,72% 76.35%,73% 76.9%,74% 77.3%,75% 77.5%,76% 77.45%,77% 77.25%,78% 76.8%,79% 76.2%,80% 75.4%,81% 74.45%,82% 73.4%,83% 72.25%,84% 71.05%,85% 69.8%,86% 68.55%,87% 67.35%,88% 66.2%,89% 65.2%,90% 64.3%,91% 63.55%,92% 63%,93% 62.65%,94% 62.5%,95% 62.55%,96% 62.8%,97% 63.3%,98% 63.9%,99% 64.75%,100% 65.7%);
|
-webkit-clip-path: polygon(100% 0,0 0,0 77.5%,1% 77.4%,2% 77.1%,3% 76.6%,4% 75.9%,5% 75.05%,6% 74.05%,7% 72.95%,8% 71.75%,9% 70.55%,10% 69.3%,11% 68.05%,12% 66.9%,13% 65.8%,14% 64.8%,15% 64%,16% 63.35%,17% 62.85%,18% 62.6%,19% 62.5%,20% 62.65%,21% 63%,22% 63.5%,23% 64.2%,24% 65.1%,25% 66.1%,26% 67.2%,27% 68.4%,28% 69.65%,29% 70.9%,30% 72.15%,31% 73.3%,32% 74.35%,33% 75.3%,34% 76.1%,35% 76.75%,36% 77.2%,37% 77.45%,38% 77.5%,39% 77.3%,40% 76.95%,41% 76.4%,42% 75.65%,43% 74.75%,44% 73.75%,45% 72.6%,46% 71.4%,47% 70.15%,48% 68.9%,49% 67.7%,50% 66.55%,51% 65.5%,52% 64.55%,53% 63.75%,54% 63.15%,55% 62.75%,56% 62.55%,57% 62.5%,58% 62.7%,59% 63.1%,60% 63.7%,61% 64.45%,62% 65.4%,63% 66.45%,64% 67.6%,65% 68.8%,66% 70.05%,67% 71.3%,68% 72.5%,69% 73.6%,70% 74.65%,71% 75.55%,72% 76.35%,73% 76.9%,74% 77.3%,75% 77.5%,76% 77.45%,77% 77.25%,78% 76.8%,79% 76.2%,80% 75.4%,81% 74.45%,82% 73.4%,83% 72.25%,84% 71.05%,85% 69.8%,86% 68.55%,87% 67.35%,88% 66.2%,89% 65.2%,90% 64.3%,91% 63.55%,92% 63%,93% 62.65%,94% 62.5%,95% 62.55%,96% 62.8%,97% 63.3%,98% 63.9%,99% 64.75%,100% 65.7%);
|
||||||
clip-path: polygon(100% 0,0 0,0 77.5%,1% 77.4%,2% 77.1%,3% 76.6%,4% 75.9%,5% 75.05%,6% 74.05%,7% 72.95%,8% 71.75%,9% 70.55%,10% 69.3%,11% 68.05%,12% 66.9%,13% 65.8%,14% 64.8%,15% 64%,16% 63.35%,17% 62.85%,18% 62.6%,19% 62.5%,20% 62.65%,21% 63%,22% 63.5%,23% 64.2%,24% 65.1%,25% 66.1%,26% 67.2%,27% 68.4%,28% 69.65%,29% 70.9%,30% 72.15%,31% 73.3%,32% 74.35%,33% 75.3%,34% 76.1%,35% 76.75%,36% 77.2%,37% 77.45%,38% 77.5%,39% 77.3%,40% 76.95%,41% 76.4%,42% 75.65%,43% 74.75%,44% 73.75%,45% 72.6%,46% 71.4%,47% 70.15%,48% 68.9%,49% 67.7%,50% 66.55%,51% 65.5%,52% 64.55%,53% 63.75%,54% 63.15%,55% 62.75%,56% 62.55%,57% 62.5%,58% 62.7%,59% 63.1%,60% 63.7%,61% 64.45%,62% 65.4%,63% 66.45%,64% 67.6%,65% 68.8%,66% 70.05%,67% 71.3%,68% 72.5%,69% 73.6%,70% 74.65%,71% 75.55%,72% 76.35%,73% 76.9%,74% 77.3%,75% 77.5%,76% 77.45%,77% 77.25%,78% 76.8%,79% 76.2%,80% 75.4%,81% 74.45%,82% 73.4%,83% 72.25%,84% 71.05%,85% 69.8%,86% 68.55%,87% 67.35%,88% 66.2%,89% 65.2%,90% 64.3%,91% 63.55%,92% 63%,93% 62.65%,94% 62.5%,95% 62.55%,96% 62.8%,97% 63.3%,98% 63.9%,99% 64.75%,100% 65.7%)
|
clip-path: polygon(100% 0,0 0,0 77.5%,1% 77.4%,2% 77.1%,3% 76.6%,4% 75.9%,5% 75.05%,6% 74.05%,7% 72.95%,8% 71.75%,9% 70.55%,10% 69.3%,11% 68.05%,12% 66.9%,13% 65.8%,14% 64.8%,15% 64%,16% 63.35%,17% 62.85%,18% 62.6%,19% 62.5%,20% 62.65%,21% 63%,22% 63.5%,23% 64.2%,24% 65.1%,25% 66.1%,26% 67.2%,27% 68.4%,28% 69.65%,29% 70.9%,30% 72.15%,31% 73.3%,32% 74.35%,33% 75.3%,34% 76.1%,35% 76.75%,36% 77.2%,37% 77.45%,38% 77.5%,39% 77.3%,40% 76.95%,41% 76.4%,42% 75.65%,43% 74.75%,44% 73.75%,45% 72.6%,46% 71.4%,47% 70.15%,48% 68.9%,49% 67.7%,50% 66.55%,51% 65.5%,52% 64.55%,53% 63.75%,54% 63.15%,55% 62.75%,56% 62.55%,57% 62.5%,58% 62.7%,59% 63.1%,60% 63.7%,61% 64.45%,62% 65.4%,63% 66.45%,64% 67.6%,65% 68.8%,66% 70.05%,67% 71.3%,68% 72.5%,69% 73.6%,70% 74.65%,71% 75.55%,72% 76.35%,73% 76.9%,74% 77.3%,75% 77.5%,76% 77.45%,77% 77.25%,78% 76.8%,79% 76.2%,80% 75.4%,81% 74.45%,82% 73.4%,83% 72.25%,84% 71.05%,85% 69.8%,86% 68.55%,87% 67.35%,88% 66.2%,89% 65.2%,90% 64.3%,91% 63.55%,92% 63%,93% 62.65%,94% 62.5%,95% 62.55%,96% 62.8%,97% 63.3%,98% 63.9%,99% 64.75%,100% 65.7%)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.button-small {
|
||||||
|
font-size: 85%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a[target="_blank"]::after {
|
||||||
|
content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);
|
||||||
|
margin: 0 3px 0 5px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class ChangeDetectionStore:
|
|||||||
'tag': None,
|
'tag': None,
|
||||||
'last_checked': 0,
|
'last_checked': 0,
|
||||||
'last_changed': 0,
|
'last_changed': 0,
|
||||||
'title': None,
|
'title': 'xxx',
|
||||||
'uuid': str(uuid.uuid4())
|
'uuid': str(uuid.uuid4())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>#</th>
|
<th>#</th>
|
||||||
<th>URL</th>
|
<th></th>
|
||||||
<th>Last Checked</th>
|
<th>Last Checked</th>
|
||||||
<th>Last Changed</th>
|
<th>Last Changed</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
@@ -32,7 +32,8 @@
|
|||||||
{% for watch in watches %}
|
{% for watch in watches %}
|
||||||
<tr id="{{ watch.uuid }}" class="{{ loop.cycle('pure-table-odd', 'pure-table-even') }} {% if watch.last_error is defined and watch.last_error != False %}error{% endif %}">
|
<tr id="{{ watch.uuid }}" class="{{ loop.cycle('pure-table-odd', 'pure-table-even') }} {% if watch.last_error is defined and watch.last_error != False %}error{% endif %}">
|
||||||
<td>{{ loop.index }}</td>
|
<td>{{ loop.index }}</td>
|
||||||
<td>{{ watch.url }}</td>
|
<td>{% if watch.title is not none %}{{ watch.title }}{% else %}{{ watch.url }}{% endif %}<a class="external" target=_blank href="{{ watch.url }}"></a>
|
||||||
|
</td>
|
||||||
<td>{{watch|format_last_checked_time}}
|
<td>{{watch|format_last_checked_time}}
|
||||||
{% if watch.last_error is defined and watch.last_error != False %} !! {% endif %}
|
{% if watch.last_error is defined and watch.last_error != False %} !! {% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
Reference in New Issue
Block a user