.
from flask import Flask, request, jsonify, render_template
import requests
import json
from jinja2 import Template
# ======== Load config ========
with open("config.json") as f:
config = json.load(f)
ACCESS_TOKEN = config["access_token"]
SITE_URL = config["site_url"]
BRAND_NAME = config["brand_name"]
INDEXING_API_URL = "https://indexing.googleapis.com/v3/urlNotifications:publish"
app = Flask(__name__, template_folder="templates")
def notify_google(product_url):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {ACCESS_TOKEN}"
}
data = {
"url": product_url,
"type": "URL_UPDATED"
}
response = requests.post(INDEXING_API_URL, headers=headers, json=data)
return response.status_code, response.text
# ======== Webhook endpoint ========
@app.route("/google-indexing", methods=["POST"])
def google_indexing():
data = request.json
product_slug = data.get("slug")
if not product_slug:
return jsonify({"error": "No product slug provided"}), 400
product_data = {
"name": data.get("name"),
"short_description": data.get("short_description"),
"description": data.get("description"),
"sku": data.get("sku"),
"price": data.get("price"),
"image_url": data.get("image_url"),
"tags": data.get("tags", []),
"url": f"{SITE_URL}/product/{product_slug}"
}
# Render template HTML (Optional: برای ایندکس بهتر گوگل)
template = render_template("product_template.html", product=product_data, brand_name=BRAND_NAME)
with open(f"rendered_products/{product_slug}.html", "w", encoding="utf-8") as f:
f.write(template)
# Notify Google Indexing API
status, result = notify_google(product_data["url"])
return jsonify({"status": status, "result": result})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
🎁 کد تخفیف ویژه اولین خرید: naniwa | ارسال سریع به سراسر کشور 🚀.