79 lines
2.0 KiB
YAML
79 lines
2.0 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: restou-config
|
|
namespace: crons
|
|
data:
|
|
requirements.txt: |
|
|
requests==2.27.1
|
|
beautifulsoup4==4.10.0
|
|
restou.py: |
|
|
import requests
|
|
from bs4 import BeautifulSoup as bs
|
|
from datetime import datetime
|
|
import os
|
|
|
|
soup = bs(requests.get('https://uclouvain.be/fr/decouvrir/resto-u/le-galilee-self.html').text, features='html.parser')
|
|
|
|
contents = soup.find('div', {'class': 'bigcontenu'}).findAll('div', {'class': 'menus'})
|
|
|
|
result = ['Menu du jour:']
|
|
|
|
for item in contents[datetime.now().weekday()].findAll('div'):
|
|
try:
|
|
title = item.find('p', {'class': 'titre2'}).text.strip()
|
|
content = item.find('p', {'class': 'texte1'}).text.strip()
|
|
except:
|
|
continue
|
|
if title and content and content != '0':
|
|
result.append(f' - {title}: {content}')
|
|
|
|
token = os.getenv('TELEGRAM_TOKEN')
|
|
chat_id = os.getenv('TELEGRAM_ID')
|
|
|
|
assert token is not None, "Telegram token must be set"
|
|
assert chat_id is not None, "Telegram chat ID must be set"
|
|
|
|
text = '\n'.join(result)
|
|
url = f'https://api.telegram.org/bot{token}/sendMessage?chat_id={chat_id}&text={text}'
|
|
|
|
print(url)
|
|
|
|
requests.get(url)
|
|
|
|
---
|
|
|
|
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: restou
|
|
namespace: crons
|
|
spec:
|
|
schedule: "30 11 * * 2,4"
|
|
successfulJobsHistoryLimit: 1
|
|
failedJobsHistoryLimit: 1
|
|
jobTemplate:
|
|
spec:
|
|
template:
|
|
spec:
|
|
volumes:
|
|
- name: data
|
|
configMap:
|
|
name: restou-config
|
|
containers:
|
|
- name: restou
|
|
image: python:3-slim-buster
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- pip install --no-cache-dir -r /data/requirements.txt;python /data/restou.py
|
|
envFrom:
|
|
- secretRef:
|
|
name: telegram-creds
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /data
|
|
readOnly: true
|
|
restartPolicy: OnFailure
|