1
0
Fork 0
iredis/scripts/download_redis_commands.py
Daniel Baumann 031879240c
Adding upstream version 1.9.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-09 16:57:44 +01:00

50 lines
1.3 KiB
Python
Executable file

#!python3
"""
Download all Reids commands from https://redis.io/commands.
Output to csv format.
"""
import sys
import csv
from lxml import etree
import requests
stdout_writer = csv.writer(sys.stdout)
def eprint(*args, **kwargs):
print(*args, file=sys.stderr, **kwargs)
eprint("Download https://redis.io/commands page...")
page = requests.get("https://redis.io/commands").text
eprint("Download finished!")
eprint("Start prase page...")
html = etree.HTML(page)
commands = html.xpath("//div[@class='container']/ul/li")
stdout_writer.writerow(["Group", "Command", "Args", "Summary", "Redis.io link"])
command_rows = []
# parse page
for command in commands:
group = command.attrib["data-group"]
command_name = command.xpath("./a/span[@class='command']/text()")[0].strip()
command_args = command.xpath(
"./a/span[@class='command']/span[@class='args']/text()"
)[0].strip()
command_summary = command.xpath("./a/span[@class='summary']/text()")[0].strip()
command_link = "https://redis.io" + command.xpath("./a/@href")[0].strip()
command_rows.append(
[
group,
command_name,
" ".join(command_args.split()),
command_summary,
command_link,
]
)
# write to stdout
for row in sorted(command_rows):
stdout_writer.writerow(row)
eprint("Down.")