Add n8n/configmaps.yaml
This commit is contained in:
parent
60173e2c6a
commit
1495a69f86
58
n8n/configmaps.yaml
Normal file
58
n8n/configmaps.yaml
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
summary.py: "#!/usr/bin/env python3\nimport requests\nimport sys\nfrom datetime\
|
||||||
|
\ import datetime, timedelta\n\nAPI_KEY = \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIzMTMwZDE0MS00MDU0LTQwZmEtODhkNi1lZjQ0NWM0YzlkMjIiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwianRpIjoiNTg2N2RjODktNTNkNy00MmEzLTk2NjktZGI4YzViYWY3YTkxIiwiaWF0IjoxNzczMTY1ODgyfQ.cLZTEex_W5idjYxSu8u7UxYK_xHDND_-Ldxd-2yM9VM\"\
|
||||||
|
\nN8N_URL = \"http://n8n-service.n8n.svc.cluster.local:5678/api/v1\"\nTELEGRAM_BOT_TOKEN\
|
||||||
|
\ = \"8611913802:AAFlrFtc0vYISOliO_W8B4c-W1ue0hG9Fio\"\nCHAT_ID = \"5138407666\"\
|
||||||
|
\n\nWORKFLOW_NAMES = {\n 'FlPdQPfb3rHlsI0-7MKu7': 'Real Madrid RSS -> Twitter',\n\
|
||||||
|
\ 'JZTwKS4Klj96elzO': 'Tweets Reply V2',\n 'df95uRUbi40dAes9': 'Quote Tweet\
|
||||||
|
\ Bot',\n 'X0kzp6DUkJONjKUy': 'Real Madrid Efem\xE9rides',\n '9e5aD80l3ADmZrmWRyqBI':\
|
||||||
|
\ 'Auto Follow & Engagement'\n}\n\ndef get_last_monday_00():\n today = datetime.utcnow()\n\
|
||||||
|
\ days_since_monday = (today.weekday() - 0) % 7\n if days_since_monday ==\
|
||||||
|
\ 0:\n days_since_monday = 7\n last_monday = today - timedelta(days=days_since_monday)\n\
|
||||||
|
\ return last_monday.replace(hour=0, minute=0, second=0, microsecond=0)\n\n\
|
||||||
|
def get_last_sunday_2359():\n last_monday = get_last_monday_00()\n return\
|
||||||
|
\ last_monday + timedelta(days=6, hours=23, minutes=59, seconds=59)\n\ndef count_followers_gained(week_start,\
|
||||||
|
\ week_end):\n try:\n resp = requests.get(f\"{N8N_URL}/executions?status=success&limit=100\"\
|
||||||
|
, headers={\"X-N8N-API-KEY\": API_KEY}, timeout=10)\n resp.raise_for_status()\n\
|
||||||
|
\ data = resp.json()\n ws, we = week_start.isoformat()+'Z', week_end.isoformat()+'Z'\n\
|
||||||
|
\ return sum(1 for e in data.get('data',[]) if e.get('workflowId')=='9e5aD80l3ADmZrmWRyqBI'\
|
||||||
|
\ and ws<=e.get('startedAt','')<=we)\n except:\n return 0\n\ndef count_tweets_published(week_start,\
|
||||||
|
\ week_end):\n try:\n resp = requests.get(f\"{N8N_URL}/executions?status=success&limit=100\"\
|
||||||
|
, headers={\"X-N8N-API-KEY\": API_KEY}, timeout=10)\n resp.raise_for_status()\n\
|
||||||
|
\ data = resp.json()\n ws, we = week_start.isoformat()+'Z', week_end.isoformat()+'Z'\n\
|
||||||
|
\ return sum(1 for e in data.get('data',[]) if e.get('workflowId')=='FlPdQPfb3rHlsI0-7MKu7'\
|
||||||
|
\ and ws<=e.get('startedAt','')<=we)\n except:\n return 0\n\ndef count_total_errors(week_start,\
|
||||||
|
\ week_end):\n try:\n resp = requests.get(f\"{N8N_URL}/executions?status=error&limit=100\"\
|
||||||
|
, headers={\"X-N8N-API-KEY\": API_KEY}, timeout=10)\n resp.raise_for_status()\n\
|
||||||
|
\ data = resp.json()\n ws, we = week_start.isoformat()+'Z', week_end.isoformat()+'Z'\n\
|
||||||
|
\ return sum(1 for e in data.get('data',[]) if ws<=e.get('startedAt','')<=we)\n\
|
||||||
|
\ except:\n return 0\n\ndef find_problematic_workflow(week_start, week_end):\n\
|
||||||
|
\ try:\n resp = requests.get(f\"{N8N_URL}/executions?status=error&limit=100\"\
|
||||||
|
, headers={\"X-N8N-API-KEY\": API_KEY}, timeout=10)\n resp.raise_for_status()\n\
|
||||||
|
\ data = resp.json()\n ws, we = week_start.isoformat()+'Z', week_end.isoformat()+'Z'\n\
|
||||||
|
\ wf_errors = {}\n for e in data.get('data',[]):\n if\
|
||||||
|
\ ws<=e.get('startedAt','')<=we:\n wid = e.get('workflowId','unknown')\n\
|
||||||
|
\ wf_errors[wid] = wf_errors.get(wid,0)+1\n if not wf_errors:\n\
|
||||||
|
\ return \"Ninguno\", 0\n best = max(wf_errors.items(), key=lambda\
|
||||||
|
\ x: x[1])\n return WORKFLOW_NAMES.get(best[0], best[0][:20]), best[1]\n\
|
||||||
|
\ except:\n return \"Unknown\", 0\n\ndef send_telegram(message):\n \
|
||||||
|
\ try:\n resp = requests.post(f\"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage\"\
|
||||||
|
, json={\"chat_id\": CHAT_ID, \"text\": message, \"parse_mode\": \"HTML\"}, timeout=10)\n\
|
||||||
|
\ resp.raise_for_status()\n return True\n except:\n return\
|
||||||
|
\ False\n\ndef main():\n week_start = get_last_monday_00()\n week_end =\
|
||||||
|
\ get_last_sunday_2359()\n display_week = f\"{week_start.strftime('%d/%m')}\
|
||||||
|
\ - {week_end.strftime('%d/%m')}\"\n followers = count_followers_gained(week_start,\
|
||||||
|
\ week_end)\n tweets = count_tweets_published(week_start, week_end)\n errors\
|
||||||
|
\ = count_total_errors(week_start, week_end)\n wf_name, wf_errors = find_problematic_workflow(week_start,\
|
||||||
|
\ week_end)\n message = f\"\"\"\U0001F4CA <b>Resumen semanal ({display_week})</b>\n\
|
||||||
|
\n\u2705 Seguidores ganados: <code>{followers}</code>\n\U0001F4DD Tweets publicados:\
|
||||||
|
\ <code>{tweets}</code>\n\u26A0\uFE0F Errores: <code>{errors}</code>\n\U0001F534\
|
||||||
|
\ Workflow m\xE1s problem\xE1tico: <b>{wf_name}</b> (<code>{wf_errors}</code>\
|
||||||
|
\ fallos)\"\"\"\n sys.exit(0 if send_telegram(message) else 1)\n\nif __name__\
|
||||||
|
\ == \"__main__\":\n main()\n"
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: weekly-summary-script
|
||||||
|
namespace: n8n
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user