This site uses cookies. In order to read how we handle cookies please click here. Click on this message to accept and hide.
Go to top

Ip Camera Qr Telegram Full [better] Guide

# requirements: flask requests python-dotenv from flask import Flask, request, jsonify import sqlite3, requests, os

def init_db(): conn = sqlite3.connect(DB); c=conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS cameras(id TEXT PRIMARY KEY, token TEXT, snapshot_url TEXT)''') conn.commit(); conn.close() ip camera qr telegram full

app = Flask(__name__) DB = 'cameras.db'

BOT_TOKEN = os.getenv('BOT_TOKEN') CHAT_ID = os.getenv('CHAT_ID') TELEGRAM_SEND = f'https://api.telegram.org/bot{BOT_TOKEN}/sendPhoto' jsonify import sqlite3

@app.route('/register', methods=['POST']) def register(): data = request.json cam_id = data.get('camera_id'); token = data.get('token'); snap = data.get('snapshot_url') # validate short-lived token (example omitted) conn = sqlite3.connect(DB); c=conn.cursor() c.execute('REPLACE INTO cameras(id,token,snapshot_url) VALUES (?,?,?)',(cam_id,token,snap)) conn.commit(); conn.close() return jsonify(status='ok'), 200 os def init_db(): conn = sqlite3.connect(DB)

@app.route('/event', methods=['POST']) def event(): data = request.form or request.json cam_id = data.get('camera_id') # If camera posts image file: if 'image' in request.files: img = request.files['image'].read() files = {'photo': ('snapshot.jpg', img)} r = requests.post(TELEGRAM_SEND, data={'chat_id': CHAT_ID, 'caption': f'Alert: {cam_id}'}, files=files) return jsonify(status='sent', resp=r.json()), 200 # Or camera sends snapshot_url: snap = data.get('snapshot_url') if snap: r = requests.get(snap) files = {'photo': ('snap.jpg', r.content)} r2 = requests.post(TELEGRAM_SEND, data={'chat_id': CHAT_ID, 'caption': f'Alert: {cam_id}'}, files=files) return jsonify(status='sent', resp=r2.json()), 200 return jsonify(status='no-image'), 400