WordPress EnlighterJS Code Extractor je Python program koji omogućava automatsko izdvajanje svih blokova programskog koda sa WordPress stranica koje koriste EnlighterJS Syntax Highlighter. Program preuzima HTML sa stranice, prepoznaje EnlighterJS blokove i snima ih u lokalni folder kao zasebne fajlove, sa odgovarajućim nazivima i ekstenzijama.
Ovo je idealno rešenje za programere, nastavnike ili blogere koji žele da brzo preuzmu kod sa tutorijala, članaka ili dokumentacije, bez ručnog kopiranja.
Mogućnosti
- Automatsko preuzimanje HTML-a sa URL-a
Program koristi Pythonrequestsza preuzimanje stranice i čuvanje lokalno kao privremeni HTML fajl. - Prepoznavanje EnlighterJS kod blokova
Podržava različite varijante EnlighterJS sintakse (pre.EnlighterJS,pre.EnlighterJSRAW,code.EnlighterJS). - Automatsko imenovanje fajlova
- Ako prva linija blok koda sadrži komentar tipa
#ime_fajla.ext, koristi upravo taj naziv i ekstenziju. - Ako prva linija ne postoji, koristi ekstenziju iz atributa
data-enlighter-language(python → .py,html → .html,javascript → .js, itd.). - Ako ni to ne postoji, koristi generičke nazive
program01.py,program02.pyitd.
- Ako prva linija blok koda sadrži komentar tipa
- Folder po imenu članka
Svi izdvojeni fajlovi se smeštaju u folder nazvan po URL-u članka, npr.moj-clanak/. - Čišćenje privremenih fajlova
HTML fajl koji se preuzima privremeno se automatski briše nakon što se kod blokovi izdvoje. - Podrška za različite programske jezike
Python, HTML, CSS, JavaScript, Bash, C/C++, PHP, JSON, XML, SQL i drugi.
Kako koristiti program
- Instaliraj Python 3
Program zahteva Python 3.6 ili noviji. - Preuzmi program
Snimi fajlwordpress2code.pyna svoj računar. - Pokreni iz terminala
python3 wordpress2code.py <URL>gde je<URL>adresa WordPress stranice koju želiš da preuzmeš. - Rezultat
- Folder sa imenom članka se kreira u trenutnom direktorijumu.
- Svi EnlighterJS kod blokovi se snimaju kao zasebni fajlovi u tom folderu.
- Privremeni HTML fajl se automatski briše.
- Primer upotrebe
#Primer upotrebe.txt
python3 wordpress2code.py https://example.com/tutoral-o-pythonu
Rezultat: moj-tutorial/
├── htmleditor.py
├── program02.js
└── style.css
Instalacija zavisnosti
Program koristi sledeće Python biblioteke:
requests— za HTTP preuzimanje stranicabeautifulsoup4— za parsiranje HTML-a
Možeš ih instalirati pomoću sledeće skripte:
Skripta: install.sh
#install.sh
#!/bin/bash
echo "🔧 Instalacija zavisnosti za WordPress EnlighterJS Code Extractor"
# Proveri da li je pip instaliran
if ! command -v pip3 &> /dev/null
then
echo "❌ pip3 nije pronađen. Instaliraj pip3 prvo."
exit
fi
# Instalacija zavisnosti
pip3 install --user requests beautifulsoup4
echo "✅ Zavisnosti su instalirane."
echo "Sada možete pokrenuti: python3 wordpress2code.py <URL>"
Programski kod za wordpress2code.py
#wordpress2code.py
#!/usr/bin/env python3
import sys
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse
# ---------------------- Funkcije ----------------------
def download_html(url, output_file):
"""Preuzmi HTML sa URL-a i sačuvaj lokalno"""
try:
print(f"📥 Preuzimam: {url}")
response = requests.get(url)
response.raise_for_status()
with open(output_file, "w", encoding="utf-8") as f:
f.write(response.text)
print(f"✅ Stranica sačuvana kao {output_file}")
except requests.exceptions.RequestException as e:
print(f"❌ Greška pri preuzimanju: {e}")
sys.exit(1)
def get_language(block):
"""Vrati ekstenziju na osnovu jezika u EnlighterJS atributima"""
lang = block.get("data-enlighter-language", "").strip().lower()
if not lang:
# ako nema data-enlighter-language, pokušaj iz class atributa
classes = block.get("class", [])
for c in classes:
c = c.lower()
if c in ["python", "html", "css", "javascript", "bash", "cpp"]:
lang = c
break
# mapiranje jezika → ekstenzije
ext_map = {
"python": "py",
"html": "html",
"css": "css",
"javascript": "js",
"bash": "sh",
"cpp": "cpp",
"c++": "cpp",
"json": "json",
"xml": "xml",
"php": "php",
}
return ext_map.get(lang, "txt")
def extract_enlighter_code(html_file, base_name):
"""Izdvoji sve EnlighterJS blokove i sačuvaj ih"""
with open(html_file, "r", encoding="utf-8") as f:
soup = BeautifulSoup(f, "html.parser")
# Pronađi sve varijante EnlighterJS blokova
code_blocks = soup.find_all("pre", class_=["EnlighterJS", "enlighterjs", "EnlighterJSRAW"])
if not code_blocks:
print("⚠️ Nema pronađenih EnlighterJS kod blokova.")
return
# Folder za kodove
code_folder = os.path.splitext(base_name)[0]
os.makedirs(code_folder, exist_ok=True)
count = 0
for i, block in enumerate(code_blocks, start=1):
code_text = block.get_text().strip()
if not code_text:
continue
# Proveri prvu liniju — ako počinje sa # i ima tačku (ime fajla)
first_line = code_text.splitlines()[0].strip()
if first_line.startswith("#") and "." in first_line:
file_name = first_line.lstrip("#").strip()
else:
# Ako nema, koristi ekstenziju iz EnlighterJS jezika
ext = get_language(block)
file_name = f"program{str(i).zfill(2)}.{ext}"
file_path = os.path.join(code_folder, file_name)
# Zapiši kod
with open(file_path, "w", encoding="utf-8") as f:
f.write(code_text)
count += 1
print(f"💾 Snimljen kod: {file_path}")
print(f"✅ Ukupno izdvojeno {count} EnlighterJS blokova u folder: {code_folder}")
# ---------------------- Glavni program ----------------------
def main():
if len(sys.argv) < 2:
print("Upotreba: python3 wordpress2code.py <URL>")
sys.exit(1)
url = sys.argv[1]
parsed = urlparse(url)
base_name = parsed.path.strip("/").split("/")[-1] or "wordpress_stranica"
html_file = f"{base_name}.html"
# 1️⃣ Preuzmi HTML
download_html(url, html_file)
# 2️⃣ Izdvoji EnlighterJS kodove
extract_enlighter_code(html_file, base_name)
# 3️⃣ Obriši privremeni HTML fajl
try:
os.remove(html_file)
print(f"🧹 Obrisan privremeni fajl: {html_file}")
except OSError:
pass
if __name__ == "__main__":
main()