feat(transform): implement custom transformer

This commit is contained in:
taskylizard 2024-08-03 21:58:46 +00:00
parent dfc5ce5881
commit b1dc663035
No known key found for this signature in database
GPG key ID: 1820131ED1A24120
8 changed files with 388 additions and 412 deletions

View file

@ -1,99 +0,0 @@
import os
headers = {
"adblockvpnguide.md": [
"Adblocking / Privacy",
"Adblocking, Privacy, VPN's, Proxies, Antivirus",
],
"ai.md": [
"Artificial Intelligence",
"Chat Bots, Text Generators, Image Generators, ChatGPT Tools",
],
"android-iosguide.md": ["Android / iOS", "Apps, Jailbreaking, Android Emulators"],
"audiopiracyguide.md": [
"Music / Podcasts / Radio",
"Stream Audio, Download Audio, Torrent Audio",
],
"beginners-guide.md": ["Beginners Guide", "A Guide for Beginners to Piracy"],
"downloadpiracyguide.md": [
"Downloading",
"Download Sites, Software Sites, Open Directories",
],
"edupiracyguide.md": ["Educational", "Courses, Documentaries, Learning Resources"],
"gamingpiracyguide.md": [
"Gaming / Emulation",
"Download Games, ROMs, Gaming Tools",
],
"linuxguide.md": ["Linux / MacOS", "Apps, Software Sites, Gaming"],
"miscguide.md": ["Miscellaneous", "Extensions, Indexes, News, Health, Food, Fun"],
"nsfwpiracy.md": ["NSFW", "NSFW Indexes, Streaming, Downloading"],
"non-english.md": ["Non-English", "International Piracy Sites"],
"readingpiracyguide.md": [
"Books / Comics / Manga",
"Books, Comics, Magazines, Newspapers",
],
"gaming-tools.md": [
"Gaming Tools",
"Gaming Optimization, Game Launchers, Multiplayer",
],
"devtools.md": ["Developer Tools", "Git, Hosting, App Dev, Software Dev"],
"img-tools.md": ["Image Tools", "Image Editors, Generators, Compress"],
"audio-tools.md": [
"Audio Tools",
"Audio Players, Audio Editors, Audio Downloaders",
],
"system-tools.md": [
"System Tools",
"System Tools, Hardware Tools, Windows ISOs, Customization",
],
"file-tools.md": ["File Tools", "Download Managers, File Hosting, File Archivers"],
"video-tools.md": [
"Video Tools",
"Video Players, Video Editors, Live Streaming, Animation",
],
"text-tools.md": ["Text Tools", "Text Editors, Pastebins, Fonts, Translators"],
# "internet-tools.md": ["Internet Tools", "Browsers, Extensions, Search Engines"],
"social-media-tools.md": [
"Social Media Tools",
"Discord Tools, Reddit Tools, YouTube Tools",
],
"storage.md": ["Storage", "Sections too big to fit on main pages"],
"torrentpiracyguide.md": ["Torrenting", "Torrent Clients, Torrent Sites, Trackers"],
"videopiracyguide.md": [
"Movies / TV / Anime",
"Stream Videos, Download Videos, Torrent Videos",
],
"base64.md": ["Base64", "Base64 storage"],
"unsafesites.md": ["Unsafe Sites", "Unsafe/harmful sites to avoid."],
}
title = '<div class="space-y-2 not-prose"><h1 class="text-4xl font-extrabold tracking-tight text-primary underline lg:text-5xl lg:leading-[3.5rem]">'
description = '<p class="text-black dark:text-text-2">'
def getHeader(page: str):
data = headers[page]
header = "---\n"
header += f'title: "{data[0]}"\n'
header += f"description: {data[1]}\n"
header += "---\n"
header += f"{title}{data[0]}</h1>\n"
header += f"{description}{data[1]}</p></div>\n\n"
return header
def main():
files = os.listdir("docs/")
for file in files:
if file in headers:
with open(f"docs/{file}", "r", encoding="utf-8") as f:
content = f.read()
if not content.startswith("---"):
with open(f"docs/{file}", "w", encoding="utf-8") as f2:
header = getHeader(file)
f2.write(header + content)
main()

285
.github/replace.py vendored
View file

@ -1,285 +0,0 @@
import re
import os
def beginners_guide(text: str):
text = re.sub("\[TOC\]\n", "", text, flags=re.MULTILINE)
text = re.sub("\*\*Table of Contents\*\*\n\[TOC2\]\n", "", text, flags=re.MULTILINE)
text = re.sub(
"# -> \*\*\*Beginners Guide to Piracy\*\*\* <-\n", "", text, flags=re.MULTILINE
)
text = re.sub(r"!!!note\s(.+?)\n", r":::info\n\1\n:::\n", text, flags=re.MULTILINE)
text = re.sub(r"!!!info\s(.+?)\n", r":::info\n\1\n:::\n", text, flags=re.MULTILINE)
text = re.sub(
r"!!!warning\s(.+?)\n", r":::warning\n\1\n:::\n", text, flags=re.MULTILINE
)
text = re.sub(r">\s(.+?)\n", r"> \1\n\n", text, flags=re.MULTILINE)
text = re.sub(
"\*\*\[\^ Back to Top\]\(#beginners-guide-to-piracy\)\*\*",
"",
text,
flags=re.MULTILINE,
)
text = re.sub(r"!!!\s(.+?)\n", r":::info\n\1\n:::\n", text, flags=re.MULTILINE)
text = re.sub("\n\*\*\[", "\n* **[", text, flags=re.MULTILINE)
text = re.sub(r">(.*)\n\n(.*)", r":::details \1\n\2\n:::", text, flags=re.MULTILINE)
return text
def individual(text: str):
# special cases of link not replaced correctly
text = re.sub(
"/storage/#encode--decode_urls", "/storage/#encode--decode-urls", text
)
text = re.sub("/base64/#do-k-ument", "/base64/#do_k_ument", text)
text = re.sub("/devtools/#machine-learning2", "/devtools/#machine-learning-1", text)
text = re.sub("/linuxguide#software-sites2", "/linuxguide#software-sites-1", text)
text = re.sub("/linuxguide#software_sites", "/linuxguide#software-sites", text)
text = re.sub("/non-english#reading10", "/non-english#reading-9", text)
text = re.sub(
"/storage#satellite-.26amp.3B_street_view_maps",
"/storage#satellite-street-view-maps",
text,
)
# Base64-decoder script link
text = re.sub(
"(.+?) site or extension\.\n",
"Click on the texts to copy them decoded.\n",
text,
flags=re.MULTILINE,
)
return text
def general(text: str):
text = re.sub("\*\*\*\n\n", "", text, flags=re.MULTILINE)
text = re.sub("\*\*\*\n", "", text, flags=re.MULTILINE)
text = re.sub("# ►", "##", text)
text = re.sub("## ▷", "###", text)
text = re.sub("####", "###", text)
text = re.sub("", ":star:", text)
text = re.sub("🌐", ":globe-with-meridians: ", text)
text = re.sub("↪️ ", ":repeat-button: ", text)
text = re.sub(
r"^\*\*Note\*\* - (.+)$", r":::tip\n\1\n:::", text, flags=re.MULTILINE
)
text = re.sub(
r"^\* \*\*Note\*\* - (.+)$", r":::tip\n\1\n:::", text, flags=re.MULTILINE
)
text = re.sub(r"^Note - (.+)$", r":::tip\n\1\n:::", text, flags=re.MULTILINE)
text = re.sub(
r"^\*\*Warning\*\* - (.+)$", r":::warning\n\1\n:::", text, flags=re.MULTILINE
)
text = re.sub(r"^\*\s([^*])", "- \\1", text, 0, re.MULTILINE)
return text
def remove_backtowiki_toc(text):
text = re.sub(
"\*\*\[◄◄ Back to Wiki Index\]\(https://www\.reddit\.com/r/FREEMEDIAHECKYEAH/wiki/index\)\*\*\n",
"",
text,
flags=re.MULTILINE,
)
text = re.sub(
"\*\*\[◄◄ Back to Wiki Index\]\(https://www\.reddit\.com/r/FREEMEDIAHECKYEAH/wiki/tools-index\)\*\*\n",
"",
text,
flags=re.MULTILINE,
)
text = re.sub(
r"\*\*\[Table of Contents\]\(https?:\/\/.*?ibb\.co.*\)\*\* - For mobile users\n",
"",
text,
flags=re.MULTILINE,
)
text = re.sub(
"\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\*\n\n",
"",
text,
flags=re.MULTILINE,
)
text = re.sub(
"\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\* \n\n",
"",
text,
flags=re.MULTILINE,
)
text = re.sub(
"\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\*\*\*\n\n", "", text, flags=re.MULTILINE
)
text = re.sub(
"\*\*\*\n\*\*\*\n\*\*\*\n\*\*\*\n\n\n\*\*\*\n\n", "", text, flags=re.MULTILINE
)
text = re.sub("\*\*\*\n\*\*\*\n\n\n\*\*\*\n\n", "", text, flags=re.MULTILINE)
return text
def replace_pages(text):
text = re.sub("https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/ai", "/ai", text)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/adblock-vpn-privacy",
"/adblockvpnguide",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/android",
"/android-iosguide",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/games",
"/gamingpiracyguide",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/reading",
"/readingpiracyguide",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/download",
"/downloadpiracyguide",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/torrent",
"/torrentpiracyguide",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/edu", "/edupiracyguide", text
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/system-tools",
"/system-tools",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/file-tools",
"/file-tools",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/internet-tools",
"/internet-tools",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/social-media",
"/social-media-tools",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/text-tools",
"/text-tools",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/video-tools",
"/video-tools",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/audio-tools",
"/audio-tools",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/game-tools",
"/gaming-tools",
text,
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/video",
"/videopiracyguide",
text,
) # This replace has to go after the /video-tools replace
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/audio",
"/audiopiracyguide",
text,
) # This replace has to go after the /audio-tools replace
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/linux", "/linuxguide", text
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/non-eng", "/non-english", text
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/misc", "/miscguide", text
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/storage", "/storage", text
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/dev-tools", "/devtools", text
)
text = re.sub(
"https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/img-tools", "/img-tools", text
)
text = re.sub(
"https://github.com/nbats/FMHYedit/blob/main/base64.md#", "/base64/#", text
)
return text
def replace_underscore(text):
pattern = r"(/#[\w\-]+(?:_[\w]+)*)"
matches = re.findall(pattern, text)
for match in matches:
replacement = match.replace("_", "-")
text = text.replace(match, replacement)
return text
def reformat_subsections(text):
text = re.sub("/#wiki_", "/#", text)
text = re.sub("#wiki_", "/#", text)
text = re.sub(".25BA_", "", text)
text = re.sub(".25B7_", "", text)
text = re.sub("_.2F_", "-", text)
text = replace_underscore(text)
return text
def replace_urls(text):
text = remove_backtowiki_toc(text)
text = replace_pages(text)
text = reformat_subsections(text)
text = re.sub("/#", "#", text)
text = general(text)
text = individual(text)
return text
def main():
files = os.listdir("docs")
for file in files:
if file.endswith(".md"):
with open(f"docs/{file}", "r", encoding="utf-8") as f:
content = f.read()
content = replace_urls(content)
if file == "beginners-guide.md":
content = beginners_guide(content)
with open(f"docs/{file}", "w", encoding="utf-8") as f2:
f2.write(content)
main()
what = """
![meow](https://files.catbox.moe/901c40.gif)
"""
with open("docs/meow.md", "w", encoding="utf-8") as file:
file.write(what)

6
.github/script.sh vendored
View file

@ -1,6 +0,0 @@
set -e
python .github/replace.py
python .github/add-headers.py
exit 0

View file

@ -30,14 +30,8 @@ jobs:
cache: pnpm
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: pnpm install
- name: Preprocess files
run: bash .github/script.sh
- name: Build with VitePress
run: |
pnpm docs:build