added last modified date into web page

This commit is contained in:
bvn13 2024-10-16 01:49:49 +03:00
parent 4cc4e7922e
commit 0be2fcbbe5
4 changed files with 19 additions and 3 deletions

View File

@ -1,3 +1,4 @@
from datetime import datetime
from argparse import Namespace from argparse import Namespace
import requests.exceptions import requests.exceptions
@ -5,6 +6,7 @@ from requests import Session
from requests.adapters import HTTPAdapter from requests.adapters import HTTPAdapter
from urllib3.util import Retry from urllib3.util import Retry
from src.logger import logger as l from src.logger import logger as l
import stats
def fetch(settings: list, args: Namespace) -> None: def fetch(settings: list, args: Namespace) -> None:
@ -31,3 +33,4 @@ def fetch(settings: list, args: Namespace) -> None:
rss.write(chunk) rss.write(chunk)
except requests.exceptions.ConnectionError as e: except requests.exceptions.ConnectionError as e:
logger.warning(f"Unable to fetch {sets['src']}", e) logger.warning(f"Unable to fetch {sets['src']}", e)
stats.set_last_modified_at(datetime.now())

View File

@ -1,8 +1,9 @@
import asyncio import asyncio
import os, fnmatch import os
from argparse import Namespace from argparse import Namespace
import tornado import tornado
from src.logger import logger as l from src.logger import logger as l
import stats
def start_server(settings: list, args: Namespace) -> None: def start_server(settings: list, args: Namespace) -> None:
@ -10,7 +11,7 @@ def start_server(settings: list, args: Namespace) -> None:
def _get_all_feeds(): def _get_all_feeds():
return [{ 'rss': sets['name'], 'file': f"/feeds/{sets['rss']}" } for sets in settings if os.path.isfile(f"{args.directory}/{sets['rss']}")] return [{ 'rss': sets['name'], 'file': f"/feeds/{sets['rss']}" } for sets in settings if os.path.isfile(f"{args.directory}/{sets['rss']}")]
# return [{ 'rss': f, 'file': f"/feeds/{f}" } for f in fnmatch.filter(os.listdir(args.directory), '*.xml')]
class MainHandler(tornado.web.RequestHandler): class MainHandler(tornado.web.RequestHandler):
def set_default_headers(self): def set_default_headers(self):
@ -19,7 +20,7 @@ def start_server(settings: list, args: Namespace) -> None:
self.set_header('Access-Control-Allow-Methods', 'GET, OPTIONS') self.set_header('Access-Control-Allow-Methods', 'GET, OPTIONS')
def get(self): def get(self):
self.render("index.html", feeds=_get_all_feeds()) self.render("index.html", feeds=_get_all_feeds(), last_modified_at=stats.get_last_modified_at())
async def start_web_server(): async def start_web_server():

11
src/stats.py Normal file
View File

@ -0,0 +1,11 @@
from datetime import datetime
from typing import Optional
_last_modified_at: Optional[datetime] = None
def set_last_modified_at(dt: datetime) -> None:
global _last_modified_at
_last_modified_at = dt
def get_last_modified_at() -> Optional[datetime]:
return _last_modified_at

View File

@ -7,6 +7,7 @@
<body> <body>
<div id="body"> <div id="body">
<h1>Feeds available:</h1> <h1>Feeds available:</h1>
<h3>Last modified at: {{ last_modified_at }}</h3>
<ol> <ol>
{% for feed in feeds %} {% for feed in feeds %}
{% module Template("feed.html", feed=feed) %} {% module Template("feed.html", feed=feed) %}