odt2md
ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ LibreOffice Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² ΡΠ΅ΡΠΊΠΎΠ²Π½ΠΎΡΠ»ΡΠ²ΡΠ½ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Markdown.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ:
- Python 3.7
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ pip
:
pip install odt2md
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ - Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°:
git clone https://github.com/slavonic/odt2md.git
cd odt2md
python3.7 -m venv .venv
. .venv/bin/activate
pip install wheel
pip install -r requirements.txt
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π² Π²Π°ΡΠΈΠ°Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, Π·Π°ΡΠ΅ΠΌ
. .venv/bin/activate
pip install pytest
export PYTHONPATH=.
pytest .
ΠΠ°ΠΏΡΡΠΊ ΠΈ ΡΠ°Π±ΠΎΡΠ°
ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π§ΡΠΎΠ±Ρ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² Markdown Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ sample.odt
, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ odt2md
:
python -m odt2md.odt2md sample.odt sample.zip
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ΄Π΅Ρ Π°ΡΡ
ΠΈΠ² sample.zip
, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Markdown ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ
content.md
, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΠΏΠΎΠ΄-Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Pictures
.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΡΠΈΠ»Ρ
ΠΡΠΎΡΠΈΠ»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠΈΠ»Ρ LibreOffice Π½Π° ΡΡΠΈΠ»Ρ Markdown.
Π Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ Markdown ΠΌΠΎΠ³ΡΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈΠ»Π΅Π²ΡΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ:
-
bold
- Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΡΠ½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ (True
/False
) -
italic
- Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΊΠ»ΠΎΠ½ΠΎΠΌ (True
/False
) -
kinovar
- Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΈΠ½ΠΎΠ²Π°ΡΡΡ (ΠΊΡΠ°ΡΠ½ΡΠΌ) (True
/False
) -
wide
- Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΡΠ΄ΠΊΠΎΠΉ (True
/False
)
ΠΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ LibreOffice ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
-
font
- ΠΈΠΌΡ ΡΡΠΈΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:Times Roman Cyrillic
-
color
- ΡΠ²Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:#ff0000
-
size
- ΡΠ°Π·ΠΌΠ΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:17pt
-
bold
- ΠΆΠΈΡΠ½ΠΎΡΡΡ ΡΡΠΈΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:normal
,bold
-
italic
- Π½Π°ΠΊΠ»ΠΎΠ½Π½ΡΠΉ ΡΡΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:normal
,italic
ΠΡΠ±ΠΎΠ΅ ΠΈΠ· ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡNone
, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΠΎΡΠΈΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π΅Π»Π°Π΅Ρ ΡΠ°ΠΊ:
- ΠΡΠ»ΠΈ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΈΡΡ
bold
, ΡΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Markdown ΡΡΠΈΠ»Ρbold=True
- ΠΡΠ»ΠΈ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΈΡΡ
italic
, ΡΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Markdown ΡΡΠΈΠ»Ρitalic=True
- ΠΠΎΠ³Π΄Π° ΡΠ²Π΅Ρ ΡΡΠΈΡΡΠ°
color=="#ff0000
, ΡΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Markdown ΡΡΠΈΠ»Ρkinovar=True
- ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ Markdown ΡΡΠΈΠ»Ρ Ρ ΡΠ°Π·ΡΡΠ΄ΠΊΠΎΠΉ
ΠΡΠΎΡΠΈΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ²:
from odt2md.emphasis import MarkdownStyle
def profile(font, color, size, bold, italic):
'''
Default transformation from LibreOffice to Markdown style
'''
bold = (bold == 'bold')
italic = (italic == 'italic')
kinovar = (color == '#ff0000')
return MarkdownStyle(
bold=bold,
italic=italic,
kinovar=kinovar,
wide=False
)
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ, Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ Π² odt2md
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ° --profile
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
python -m odt2md.odt2md --profile sample_profile.py sample.odt sample.zip
ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² sample.md
ΠΈ Π·Π°ΡΠ΅ΠΌ
ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°.
ΠΡΠΎΡΠΌΠΎΡΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
ΠΠ»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΡΠΈΠ»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ LibreOffice, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
python -m odt2md.show_styles sample.odt
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. Π‘ΡΠΈΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π½Π΅ Π±ΡΠ΄ΡΡ.