0- Creo repositorio en github
u@d ~/wks/apuntes $ git clone https://github.com/YOUR_USERNAME/YOUR_USERNAME.github.io.git
...
u@d ~/wks/apuntes $ cd YOUR_USERNAME.github.io
u@d ~/wks/apuntes $ git checkout -b source
u@d ~/wks/apuntes $ echo "output/" >> .gitignore
(*) La última linea es porque el directorio output no es necesario en la rama source si no en la master,
así me evito que cuando trabajo con la source me moleste con los cambios en los html,
cosa muy frecuente porque, por tema de urls relativas o absolutas, cambian cada vez que haces
la versión para desarrollo o para producción.
1- Instalar pelican y crear blog
u@d ~/wks/apuntes $ sudo pip3 install pelican markdown ghp-import
...
u@d ~/wks/apuntes $ pelican-quickstart
> Where do you want to create your new web site? [.]
> What will be the title of this web site? Apuntes
> Who will be the author of this web site? (mejor aquí que en un txt perdido)
> What will be the default language of this web site? [es]
> Do you want to specify a URL prefix? e.g., http://example.com (Y/n) n
> Do you want to enable article pagination? (Y/n) y
> How many articles per page do you want? [10] 10
> What is your time zone? [Europe/Madrid]
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) Y
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) n
> Do you want to upload your website using FTP? (y/N) n
> Do you want to upload your website using SSH? (y/N) n
> Do you want to upload your website using Dropbox? (y/N) n
> Do you want to upload your website using S3? (y/N) n
> Do you want to upload your website using Rackspace Cloud Files? (y/N) n
> Do you want to upload your website using GitHub Pages? (y/N) y
> Is this your personal page (username.github.io)? (y/N) y
Done. Your new project is available at /home/username/YOUR_USERNAME.github.io
2- Creo la estructura
u@d ~/wks/apuntes $ mkdir -p content/extra content/images content/pages content/posts myplugins j2 themes
3- Importar wordpress
u@d ~/wks/apuntes $ pelican-import --markup markdown --wpfile -o content ~/Descargas/apuntes.wordpress.2018-09-18.xml
Con sed y grep saco las referencias de las urls a imágenes, las descargo y edito los .md para que las usen. (*)
(*) Esto se podría haber hecho directamente con pelican-import, ver su ayuda.
4- Creo y configuro plugins y tema
- Creo un
reader(ver github - reader.py) para que:- se auto generen los tags en base al contenido del
post - ... próximamente más
- se auto generen los tags en base al contenido del
- Creo una extensión
markdown(ver github - replacements.py) para remplazar palabras claves por variables antes de generar el html - Creo una extensión
pelican(ver github - mod_html.py) para hacer modificaciones en loshtmlfinales, por ejemplo poner automaticamentetarget="_blank"a todos los enlaces que no sean locales (y no tengan ya definido un target). Seria mucho más eficiente hacerlo con unpluginque solo tratara los markdown tras su conversión enhtml, pero no quiero dejarme fuera el contenido de los templates (menú, pie, etc) - Creo una extensión
pelican(ver github - set_count.py) para añadir a los objetostagycategoryel número de artículos que contienen - Creo una extensión
pelican(ver github - mod_content.py) para modificar el resultado html de los contenidos. Por ahora sirve para:- Cambiar los atributos deprecados
alignpor clases que hagan la misma función - ... próximamente más
- Cambiar los atributos deprecados
- Creo un filtro
jinja2(ver github - jinja_filters.py) para mostrar las estadísticas de un texto (lineas, palabras, letras) - Copio el tema
notmyidea(ver github - notmyidea-custom) para modificarlo y simplificarlo. También le creo algunostemplatesnuevos como el de los mapas (la versiónxmlpara robots y la versiónhtmlpara humanos). - Modifico
Makefilepara añadir validación html5 y alguna cosa más (ver github - Makefile) - Creo el script
renombrar.pyque cambia los nombres de los.mdpara que se adecuen la formato deseado - Modifico
pelicanconf.pypara reflejar todo lo anterior (ver github - pelicanconf.py)
5- Actualizo y publico
u@d ~/wks/apuntes $ git add -A && git commit -a -m 'first commit' && git push --all
u@d ~/wks/apuntes $ make github
Fuentes: nafiulis.me, fullstackpython.com, rsip22.github.io, python-markdown.github.io