Added tool to generate old-new-URLs list
This commit is contained in:
37
dump_s9y_urls_to_csv.py
Executable file
37
dump_s9y_urls_to_csv.py
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import csv
|
||||
import sqlite3
|
||||
from os.path import basename
|
||||
|
||||
JEKYLL_BASE_URL = "https://old.domain.com/"
|
||||
JEKYLL_PATH_CUT = 7 # number of characters to strip from beginning of file path, e.g. "jekyll/" = 7
|
||||
S9Y_SQLITE_FILE = "serendipity.db"
|
||||
S9Y_BASE_URL = "https://new.domain.com/"
|
||||
|
||||
print("Reading permalinks from {}".format(S9Y_SQLITE_FILE))
|
||||
db = sqlite3.connect(S9Y_SQLITE_FILE)
|
||||
req = db.execute("SELECT permalink, entry_id FROM permalinks WHERE type='entry'")
|
||||
response = req.fetchall()
|
||||
s9y_entries = {}
|
||||
for r in response:
|
||||
(url, entry_id) = r
|
||||
s9y_entries[int(entry_id)] = str(url)
|
||||
|
||||
print("Reading Jekyll paths, matching and writing jekyll2s9y_urls.csv.")
|
||||
with open("jekyll2s9y_urls.csv", "wt") as output:
|
||||
output.write("jekyll_path,jekyll_url,entry_id,s9y_url\n")
|
||||
with open("jekyll_paths.csv", "rt") as f:
|
||||
for row in csv.DictReader(f):
|
||||
jekyll_path = row["jekyll_path"]
|
||||
jekyll_url = JEKYLL_BASE_URL + jekyll_path[JEKYLL_PATH_CUT:].replace("/_posts/", "/").replace(".md", ".html")
|
||||
# Strip date from file path
|
||||
jekyll_basename = basename(jekyll_url)
|
||||
jekyll_date = jekyll_basename[:11] # "2020-02-20-" = 11 characters (incl. last minus)
|
||||
jekyll_url = jekyll_url.replace(jekyll_date, "")
|
||||
entry_id = int(row["s9y_entry_id"])
|
||||
s9y_url = S9Y_BASE_URL + s9y_entries[entry_id]
|
||||
output.write("\"{}\",\"{}\",{},\"{}\"\n".format(jekyll_path, jekyll_url, entry_id, s9y_url))
|
||||
|
||||
print("jekyll2s9y_urls.csv written. All done.")
|
||||
Reference in New Issue
Block a user