summaryrefslogtreecommitdiffstats
path: root/scripts/download_redis_commands.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/download_redis_commands.py')
-rwxr-xr-xscripts/download_redis_commands.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/download_redis_commands.py b/scripts/download_redis_commands.py
new file mode 100755
index 0000000..4dda6b8
--- /dev/null
+++ b/scripts/download_redis_commands.py
@@ -0,0 +1,50 @@
+#!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.")