38 lines
1.5 KiB
Python
Executable File
38 lines
1.5 KiB
Python
Executable File
#!/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.")
|