pyrogram/docs/scripts/sitemap.py

82 lines
2.3 KiB
Python
Raw Normal View History

2020-03-21 14:43:32 +00:00
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-2020 Dan <https://github.com/delivrance>
2018-04-16 18:32:34 +00:00
#
2020-03-21 14:43:32 +00:00
# This file is part of Pyrogram.
2018-04-16 18:32:34 +00:00
#
2020-03-21 14:43:32 +00:00
# Pyrogram is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
2018-04-16 18:32:34 +00:00
#
2020-03-21 14:43:32 +00:00
# Pyrogram is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
2018-04-16 18:32:34 +00:00
#
2020-03-21 14:43:32 +00:00
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
2018-04-16 18:32:34 +00:00
2018-03-22 12:01:29 +00:00
import datetime
import os
canonical = "https://docs.pyrogram.org/"
2018-03-22 12:01:29 +00:00
dirs = {
2019-05-22 01:33:54 +00:00
".": ("weekly", 1.0),
2019-05-28 14:41:55 +00:00
"intro": ("weekly", 0.9),
"start": ("weekly", 0.9),
"api": ("weekly", 0.8),
"topics": ("weekly", 0.8),
2019-06-07 14:24:18 +00:00
"releases": ("weekly", 0.8),
2019-05-28 14:41:55 +00:00
"telegram": ("weekly", 0.6)
2018-03-22 12:01:29 +00:00
}
def now():
return datetime.datetime.today().strftime("%Y-%m-%d")
with open("sitemap.xml", "w") as f:
2019-05-22 01:33:54 +00:00
f.write('<?xml version="1.0" encoding="utf-8"?>\n')
f.write('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
2018-03-22 12:01:29 +00:00
2019-05-22 01:33:54 +00:00
urls = []
2018-03-22 12:01:29 +00:00
def search(path):
try:
for j in os.listdir(path):
search(f"{path}/{j}")
2018-03-22 12:01:29 +00:00
except NotADirectoryError:
2019-05-22 01:33:54 +00:00
if not path.endswith(".rst"):
return
2018-03-22 12:01:29 +00:00
path = path.split("/")[2:]
2018-03-22 12:01:29 +00:00
2019-05-22 01:33:54 +00:00
if path[0].endswith(".rst"):
folder = "."
else:
folder = path[0]
path = f"{canonical}{'/'.join(path)}"[:-len(".rst")]
2019-05-22 01:33:54 +00:00
if path.endswith("index"):
path = path[:-len("index")]
urls.append((path, now(), *dirs[folder]))
search("../source")
2019-05-22 01:33:54 +00:00
urls.sort(key=lambda x: x[3], reverse=True)
2018-03-22 12:01:29 +00:00
for i in urls:
f.write(f" <url>\n")
f.write(f" <loc>{i[0]}</loc>\n")
f.write(f" <lastmod>{i[1]}</lastmod>\n")
f.write(f" <changefreq>{i[2]}</changefreq>\n")
f.write(f" <priority>{i[3]}</priority>\n")
f.write(f" </url>\n")
2018-03-22 12:01:29 +00:00
f.write("</urlset>")