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 Pythonrequests
za 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.py
itd.
- 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.py
na 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()