Сайт на GitHub-Pages платформе

Хочу рассказать о своём новом (хотя существует уже почти 3 года) сайте egaxegax.github.io, после закрытия предыдущего сайта egaxegax.appspot.com на хостинге Google App Engine в начале 2021 года. О нём я писал в статье Cайт на Django-nonrel на платформе Google App Engine для Python. Эта статья рассчитана на тех, кто хочет узнать или получить простой сайт с возможностью добавления и правки контента на основе создания markdown-постов.

e9a4ffa431ba806f0acea5e5f19f3c99.png

Сайт egaxegax.appspot.com просуществовал 10 лет на хостинге GAE. Но был закрыт вместе с бесплатным доступом к GAE после изменений политики Google. В начале 2020 года Google прислал уведомление на почту, что к концу года мне нужно выбрать один из платных планов хостинга (от 300$ в месяц), а бесплатный доступ будет закрыт. И я стал готовиться к переезду с GAE, забэкапив содержимое сайта.

У меня уже был проект dbcartajs на github и сайт к нему на платформе Github Pages. И я решил перенести всё содержимое старого сайта в репозиторий GitHub, открыв к нему доступ через хостинг GitHub Pages. Для этого текстовый бекап базы данных с содержимым старого сайта я разбил на маленькие .txt файлы c html-содержимым для каждой строчки из таблицы, то есть для каждого поста. Python-код моделей и вью старого сайта, написанного для фрейм-ворка Django-nonrel я переписал на языках JavaScript и HTML, упростив код и отказавшись от онлайн-редактирования содержимого сайта через веб-формы. Позже я перевёл .txt-файлы в markdown-формат .md для отображения страниц в репозитории также как на сайте, но отказался от использования шаблонов Jekyll, создав в корне проекта файл .nojekyll, посколь-ку компиляция им .md файлов для сборки сайта на Github Pages (после git push в master) идет очень долго с моим количеством файлов. GitHub автоматически конвертит .md файлы и отображает как html на страницах репозитория. В большинстве репозиториев есть хотя бы один README.md файл, у меня в проекте .md файлов оказалось больше 30,000.

В новой схеме для управления содержимым я использую индексные файлы index.js в формате массивов *JavaScript*, содержащие список всех .md файлов постов по каждому разделу сайта. Для переиндексации раздела после добавления-удаления новых .md файлов контента используется python-скрипт update.py, лежащий в корневой папке. Кроме того, внутри папок разделов есть дополнительные скрипты для парсинга файлов контента:

  • в разделе *books* лежит скрипт *books2.py* для парсинга скачанных epub-файлов электронных книг в список *.md* и *.jpg* файлов по жанрам и авторам;

  • в разделе *posts* есть скрипт *readcsv.py* для парсинга *.csv* файлов плейлистов *youtube* в список *.md* постов.

Новый сайт разделен на разделы: books (Книги), foto (Фото), posts (Заметки), songs (Аккорды), vesti (Записки) и dbcartajs (Карты, как символьная ссылка на папку проекта). Разделы являются подкаталогами после клонирования проекта из репозитория github на диск.

Подробная инструкция о том, как пользоваться сайтом, есть в README-файле описания проекта.

© Habrahabr.ru