Brownian motion

around the essentials…

 

Archive for 7 Квітень 2017

LilyPond → WordPress: поновлювати опубліковані партитури просто!

Задача: маємо багато партитур, опублікованих на сайті під WordPress, інтенсивно з ними працюємо, — тож варто мати механізм поновлення партитур після редагування. Ноти набираємо у LilyPond.

Дуже коротко:

  1. На сайті публікуємо партитури із додаванням суфікса відповідно до дати та часу збереження (генерування) партитури, напр. назва файлу ОйЧийТоКіньСтоїть_20170406_175520.pdf означає, що партитуру було згенеровано з файлу ОйЧийТоКіньСтоїть.ly 6 квітня 2017 року о 17:55:20. Звісно, такі суфікси додаються автоматично при генеруванні. Таким чином, до речі, уникаємо можливих нюансів із кешуванням опублікованого.
  2. LilyPond використовує простий текстовий формат, тому використовуємо систему зберігання та відстеження версій Mercurial.
  3. На власному комп’ютері редагуємо партитуру, після чого: hg commit && hg push.
  4. На сервері маємо те саме сховище mercurial; після редагування виконуємо hg pull && hg update.
  5. На подію update на сервері сконфігуровано hook, який запускає скрипт.
  6. Скрипт видає перелік файлів .ly, які, імовірно, треба поновити на сайті WordPress. При цьому ми могли редагувати, наприклад, ОйЧийТоКіньСтоїть_alto.lyi (а не сам ОйЧийТоКіньСтоїть.ly) — скрипт показує саме «головний» файл.
  7. Наступні кроки може виконувати цей саме скрипт, проте це не задача сховища ,) Віддамо це іншому скрипту.
  8. Інший скрипт бере файл по файлу усі партитури, які, імовірно, треба поновити. Для кожної партитури:
    1. Знаходимо у каталозі wp-uploads нашого сайту раніше завантажені файли: ОйЧийТоКіньСтоїть_([0-9]{8}_[0-9]{6}).pdf.
    2. Якщо щось знайшли — виконуємо lilypond -o ОйЧийТоКіньСтоїть_`date +"%Y%m%d_%H%M%S"` ОйЧийТоКіньСтоїть.ly.
    3. Якщо успішно — кличемо wp cli! Він замінить (операція search-replace) у табличках WordPress усі згадки ОйЧийТоКіньСтоїть_<стара_дата> на ОйЧийТоКіньСтоїть_<нова_дата>.
    4. Видаляємо у wp-uploads старі файли, переносимо туди нові.

І все)

Насправді це все трохи складніше, бо ми використовуємо мітки для генерування різних варіантів із одного джерела (при цьому файли з мітками можуть називатися ОйЧийТоКіньСтоїть--Torig_20170407_101222.pdf). Крім того, до якихось файлів WordPress уже міг додати «порядковий номер», тоді назва буде, наприклад, така: ОйЧийТоКіньСтоїть--Torig_20170407_101222-1.pdf.

Але це все легко вирішується.

Звісно ж, це можна застосувати не тільки до партитур, а й до будь-яких файлів, які треба періодично поновлювати.

(1 votes, average: 5 out of 5)

Останні публікації

Most Rated

Highest Rated

Теґи

Архіви