Projekt

Obecné

Profil

Úkol #3719

uzavřený

Dlouhodobý úkol #3274: Informační systémy (aplikace)

Dlouhodobý úkol #3277: Jekyll weby

Úkol #3382: Webařský tým - celostátní web

Konverzní skript článků doku => markdown

Přidáno uživatelem Ondřej Profant před více než 8 roky(ů). Aktualizováno před více než 7 roky(ů).

Stav:
Dokončen
Priorita:
Normální
Přiřazeno:
Kategorie:
Wiki
Cílová verze:
-
Začátek:
23.08.2016
Uzavřít do:
% Hotovo:

90%

Odhadovaná doba:
Smlouva:

Popis

Připravit automatické konvertování článků z daného namespace dokuwiki do markdownu včetně metadat v YAML. Čili konverzi obsahu dokuwiki do jekyll webu.

Problém je, že současné konvertory si neporadí s pluginy, které v dokuwiki máme, čili je bude třeba dodatečné customizace. Také je důležité stáhnout všechny zdroje (obrázky) a zkontrolovat platnost linků.

Skript je požadován v Pythonu / BASHy

Pro zkoušku lze konvertovat staré články z Prahy a přidat je na praha.pirati.cz

S Krtkovou pomocí jsem se dostal v bashi ke skriptu (v komentáři je popsáno, co je třeba dodělat):

#!/usr/bin/env bash

article_dir="articles"

function dowload_articles() {
    ns="regiony:praha:tiskove-zpravy"
    # 1. curl downloads rss feed of given namespace
    # 2. grep raw links to articles
    # 3. first sed replace start of tag and replace usual link to the export link
    # 4. second sed replace end of tag
    # 5. wget download every argument (article)
    cd articles
    wget $(curl "https://www.pirati.cz/feed.php?mode=list&linkto=current&ns=${ns}" | grep item\ rdf:about | sed 's@    <item rdf:about="https://www.pirati.cz/@https://www.pirati.cz/_export/raw/@' | sed 's@">$@@')
    cd -
}

function convert_articles() {
    clanky="${article_dir}/*";
    convert_bin="DokuWiki-to-Markdown-Converter/convert.php";
    php "${convert_bin}" "${clanky}";
    sed  -i 's/~~READMORE~~//g' "${article_dir}/*.md";
    sed  -i 's/~~NOTOC~~//g'    "${article_dir}/*.md";
    # Obrázky ve formátu: 
    # {{den_tripodu.jpg?380 }}
    # {{<nazev>.jpg?<number>}}

    # Zbudou věci typu ~~readmore~~    
}

mkdir -p "${article_dir}/";
rm -rf "${article_dir}/*";
download_articles;
convert_articles;

A samotný konvertor: https://github.com/ludoza/DokuWiki-to-Markdown-Converter.git

Aktualizováno uživatelem Ondřej Profant před více než 8 roky(ů)

  • Popis aktualizován (rozdíl)
  • Přiřazeno nastaven na Michal Ketner

Aktualizováno uživatelem Ondřej Profant před více než 8 roky(ů)

Aktualizováno uživatelem Michal Ketner před více než 8 roky(ů)

  • Kategorie nastaven na Wiki
  • Stav změněn z Nový na Čeká se na řešitele
  • Typ práce nastaven na Programování

Už se tomu věnuju Krtka skript na překlad mi nejel tak jsemto zas udělal takhle

#!/usr/bin/env bash

article_dir="articles"

function download_articles() {
ns="regiony:praha:tiskove-zpravy"
# 1. curl downloads rss feed of given namespace
# 2. grep raw links to articles
# 3. first sed replace start of tag and replace usual link to the export link
# 4. second sed replace end of tag
# 5. wget download every argument (article)
cd articles
wget $(curl "https://www.pirati.cz/feed.php?mode=list&linkto=current&ns=${ns}" | grep item\ rdf:about | sed 's@    <item rdf:about="https://www.pirati.cz/@https://www.pirati.cz/_export/raw/@' | sed 's@">$@@')
cd -
}

function rename() {
    cd articles 
    ls | while read soubor; do
        mv $soubor "${soubor}.txt"

    done
    cd ..
        }
function convert_articles() {
    cd articles
    ls | while read soubor; do
        sed  -i 's/~~NOTOC~~//g' "$soubor";
        sed  -i 's/~~READMORE~~//g'    "$soubor";
        sed  -i 's/===== BOX:related =====//g'    "$soubor";

    done
    convert_bin="../DokuWiki-to-Markdown-Converter/convert.php";
    echo $convert_bin 
    php "${convert_bin}" "${clanky}";

# Obrázky ve formátu: 
# {{den_tripodu.jpg?380 }}
# {{<nazev>.jpg?<number>}}

# Zbudou věci typu ~~readmore~~    
}

mkdir -p "${article_dir}/";
rm -rf "${article_dir}/*";
download_articles;
rename;
convert_articles;

Je potřeba ještě vyřešit odkazy na soubory a nezvládá to některé vnořené seznamy a občas další řádek.

Aktualizováno uživatelem Ondřej Profant před asi 8 roky(ů)

Chtěl jsem doimplementovat stahování obrázků, ale v bashy už mě to opravdu štvalo. Nakonec jsem to celé napsal v pythonu 3. Myslím, že nám to dává výrazně větší flexibilitu:

https://github.com/pirati-cz/docuscraper/blob/master/docuscraper/__main__.py

Co je potřeba dodělat:

  • Export, zatím to jen data stáhne. Takže je třeba udělat funkci, která články v md s metadaty hodí do složky a do další složky hodí obrázky.
    • článek má v návzu datum a webalize nazev
    • metadata jsou v úvodní bloku odděle ---
    • úvodní obrázek je v metadatech jen jako název
  • Report, při běhu to vypisuje chyby konverteru. Bylo by dobré je někde přehledně mít. Ať se s nimi dá pracovat. Popř. ať se dají předat administrativní síle, která dané články ručně opraví
    • obrázky uprostřed textu nebudou mít perzistetní url
  • Testování, code review (je to první verze)

Aktualizováno uživatelem Ondřej Profant před více než 7 roky(ů)

  • Stav změněn z Čeká se na řešitele na Dokončen

Také k dispozici: Atom PDF