| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import os
- from datetime import datetime
- # Настройки
- DOMAIN = "https://radionica3d.me"
- LANGUAGES = ["en", "me", "ru", "ua"]
- # Список публичных страниц (без учета языка)
- PAGES = [
- "",
- "portfolio",
- "about",
- "blog",
- "contact",
- "help",
- "guidelines",
- "privacy",
- "terms",
- "careers"
- ]
- def generate_sitemap():
- xml = ['<?xml version="1.0" encoding="UTF-8"?>']
- xml.append('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">')
-
- # Добавляем каждую страницу для каждого языка
- for page in PAGES:
- for lang in LANGUAGES:
- # Формируем путь: /lang/page или /lang
- path = f"/{lang}/{page}" if page else f"/{lang}"
-
- # Приоритеты
- if page == "":
- priority = "1.0"
- freq = "weekly"
- elif page in ["portfolio", "blog"]:
- priority = "0.8"
- freq = "daily"
- else:
- priority = "0.5"
- freq = "monthly"
-
- url = f"{DOMAIN}{path}"
- xml.append(' <url>')
- xml.append(f' <loc>{url}</loc>')
- xml.append(f' <lastmod>{datetime.now().strftime("%Y-%m-%d")}</lastmod>')
- xml.append(f' <changefreq>{freq}</changefreq>')
- xml.append(f' <priority>{priority}</priority>')
-
- # Добавляем ссылки на альтернативные языковые версии
- for alt_lang in LANGUAGES:
- alt_path = f"/{alt_lang}/{page}" if page else f"/{alt_lang}"
- xml.append(f' <xhtml:link rel="alternate" hreflang="{alt_lang}" href="{DOMAIN}{alt_path}"/>')
-
- # x-default (пусть будет ME как основной или просто без префикса, но у нас роутер всегда редиректит)
- # В нашем случае x-default укажем на ME
- xml.append(f' <xhtml:link rel="alternate" hreflang="x-default" href="{DOMAIN}/me/{page if page else ""}"/>')
-
- xml.append(' </url>')
-
- xml.append('</urlset>')
-
- content = "\n".join(xml)
-
- # Путь к public/sitemap.xml
- # Скрипт лежит в scripts/, так что идем на уровень выше
- root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- sitemap_path = os.path.join(root_dir, "public", "sitemap.xml")
-
- with open(sitemap_path, "w", encoding="utf-8") as f:
- f.write(content)
-
- print(f"Sitemap generated with {len(PAGES) * len(LANGUAGES)} URLs at {sitemap_path}")
- if __name__ == "__main__":
- generate_sitemap()
|