mirror of
https://github.com/fmhy/edit.git
synced 2026-01-17 17:31:18 +11:00
feat(transform): implement custom transformer
This commit is contained in:
parent
dfc5ce5881
commit
b1dc663035
8 changed files with 388 additions and 412 deletions
99
.github/add-headers.py
vendored
99
.github/add-headers.py
vendored
|
|
@ -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
285
.github/replace.py
vendored
|
|
@ -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 = """
|
||||

|
||||
"""
|
||||
|
||||
with open("docs/meow.md", "w", encoding="utf-8") as file:
|
||||
file.write(what)
|
||||
6
.github/script.sh
vendored
6
.github/script.sh
vendored
|
|
@ -1,6 +0,0 @@
|
|||
set -e
|
||||
|
||||
python .github/replace.py
|
||||
python .github/add-headers.py
|
||||
|
||||
exit 0
|
||||
6
.github/workflows/deploy-gh-pages.yml
vendored
6
.github/workflows/deploy-gh-pages.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue