Полезность свекла: всё самое интересное о простом корнеплоде

Сладкая, яркая. Но полезная ли свёкла при диабете?

Правильное сбалансированное питание — основа лечения сахарного диабета второго  типа. Баланс в еде невозможен без достаточного употребления клетчатки. Американская диабетическая ассоциация рекомендует употреблять как минимум 14 г пищевых волокон на каждые 1000 калорий пищи. Для взрослого человека это примерно 35‒40 г в день.

Основной источник клетчатки — овощи. И один из популярных вариантов — свёкла. Сладкий корнеплод вызывает много дискуссий. Можно ли есть свёклу при диабете? Если можно, то сколько и в каком виде? Выясним.

Свёкла — овощ из средне высоким гликемическим индексом, поэтому может резко поднимать уровень сахара в крови. Из-за этого диабетикам следует ограничивать её потребление. Но на гликемический индекс (ГИ) влияет не только количество углеводов в продукте, но и способ приготовления. Сырая свёкла при диабете может быть очень полезной. Ведь ГИ сырого овоща меньше 20. А вот жареная или вареная свёкла при диабете — вариант не такой хороший, потому что их ГИ — около 70.

Но это не означает, что о борще нужно забыть, как о пирожных и конфетах. Ведь в свёкле много полезного! Как вот:

  • бетаин;
  • бета-каротин;
  • витамины А и Е.

Они необходимы для нормального метаболизма, обеспечивают здоровье глаз и помогают организму бороться с неблагоприятными факторами среды.

  • калий;
  • магний;
  • селен;
  • цинк;
  • витамины группы В.

Эти вещества нужны для работы сердца, щитовидной железы и нервной системы. Польза свёклы при сахарном диабете однозначно есть.

А еще свёкла — рекордсмен по содержанию клетчатки. Она полезна не только для желудка и кишечника, а и для печени и поджелудочной железы. Волокна замедляют всасывание углеводов в кровь. Поэтому свёклу при сахарном диабете можно кушать!

Нужно лишь придерживаться некоторых правил:

1. Не употреблять больше 100–150 г свёклы в сутки.

2. Стараться есть овощ в первой половине дня.

3. Отдавать предпочтение сырому корнеплоду. Отварная свёкла при диабете может вызвать скачки сахара.

4. Не добавлять в блюда со свёклой крахмалистые продукты: рис, кукурузу, картошку. Поэтому борщ и винегрет — без картошки. 

Свёкла при диабете у детей так же может быть полезной при правильном употреблении.

Противопоказания к употреблению свёклы

Свёкла при сахарном диабете нежелательна для людей с нестабильным уровнем глюкозы. Ведь блюда с корнеплодом могут неожиданно резко увеличить уровень сахара в крови.

Свёкла при диабете первого типа тоже не должна быть в списке полностью безопасных продуктов. Также максимально ограничить свёклу нужно больным со слабыми почками. Высокое содержание калия может перегрузить и без того нездоровые органы выделения. Это касается и больных диабетом с почечной недостаточностью. 

Свёкла при диабете второго типа не должна быть под запретом. Да, она сладкая. Но это не означает, что от неё нужно полностью отказаться. Важно придерживаться правил употребления овоща, тогда это не только не навредит, а и принесет массу пользы.

Перед тем, как готовить себе свёклу, проконсультируйтесь со своим эндокринологом, который знает особенности вашего организма, и оценит состояние компенсации диабета.

Польза свекольного сока для организма человека

Содержание:

  • Какие витамины есть в свекольном соке? 
  • Свекольный сок для снижения веса
  • Какие ещё преимущества у свекольного сока

Сок свёклы набирает популярность среди сторонников полноценного питания. Он имеет красивый оттенок от ярко-пурпурного до тёмно-малинового. Свекольный сок любят за множество преимуществ. 

Чтобы сделать ваш рацион питания ещё более сбалансированным попробуйте добавить в него продукты Herbalife Nutrition. Персональный Консультант ответит на все интересующие вас вопросы о полноценном питании и поможет составить меню.  

Какие витамины есть в свекольном соке? 

Свёкла является источником железа, магния, кальция, калия, фосфора, цинка, марганца, витамина В. Помимо укрепления иммунной системы, эти элементы также обеспечивают антиоксидантную защиту. Она предотвращает хронические заболевания, такие как рак и болезни сердца. В свекольном соке много витамина С и антиоксидантов, которые могут уменьшить воспаления в теле.

1

Кроме того, важные элементы, которые есть в соке, улучшают работу кишечника, способствуют детоксикации. 2

Свекольный сок для снижения веса

Одним из основных преимуществ употребления свекольного сока является то, что он способствует лучшему ускорению обменных процессов. Поэтому его так активно используют в меню для снижения веса. 

Свекольный сок также обладает высокой концентрацией нитратов, которые в теле превращаются в оксид азота. Он в свою очередь увеличивает кровоток и может помочь снизить кровяное давление.

Всё это приводит к повышению выносливости и ускоренному сжиганию жира. 

Если вы следите за тем, чтобы питание было сбалансированным, то кроме свекольного сока, состоящего в основном из углеводов, необходимо добавить в рацион продукты, богатые белками и жирами. 

Протеиновая смесь Формула 3 может помочь восполнить запасы белка и способствовать поддержанию мышечной массы. 3 Из смеси можно приготовить коктейль или добавить её в любимые блюда. 

Какие ещё преимущества у свекольного сока

  • Сырая свёкла — ценный источник фолиевой кислоты, которая необходима для правильной работы мозга. Она поддерживает образование новых нервных клеток и способствует нормальной работе мозга. Свекольный сок защищает клетки мозга от повреждений и уменьшает воспаление.

  • Антиоксиданты в свекольном соке препятствуют повреждениям кожи, возрастным изменениям и гиперпигментации. Напиток может предотвратить преждевременное появление морщин и защитить кожу УФ-повреждений.

  • Сок этого корнеплода снижает уровень холестерина и риски образования тромбов. Также напиток может улучшить работу сердечно-сосудистой системы за счёт нормализации кровотока.

  • Употребление сока помогает телу поддерживать нормальный уровень сахара в крови. 

  • Свекольный напиток расслабляет кровеносные сосуды и улучшает кровообращение, что приводит к повышению физической работоспособности и устранению усталости. 

  • Регулярное употребление свежевыжатого свекольного сока способствует избавлению от лишней жидкости и токсинов, что положительно сказывается на функционировании печени.4

Источники:

  1. Christine Mikstas. Health Benefits of Beet Juice and Beet Powder. September 01, 2019. URL: https://www.webmd.com/diet/health-benefits-beet-juice-powder (дата обращения: 11.10.2022).

  2. Кароматов И. Свекла – перспективы применения в спортивной медицине.  URL: https://cyberleninka.ru/article/n/svekla-perspektivy-primeneniya-v-sportivnoy-meditsine  (дата обращения: 11.10.2022).

  3. Herbalife.ru: Протеиновая смесь Формула 3. URL: https://herbalife.ru/catalog/formula-3-proteinovaya-smes/   (дата обращения: 11.10.2022).

  4. Кароматов И. Абдувохидов А. Свекла — профилактическое и лечебное значение. URL: https://cyberleninka.ru/article/n/svekla-profilakticheskoe-i-lechebnoe-znachenie-obzor-literatury  (дата обращения: 11.10.2022).

Ракова Ирина Сергеевна

Автор

Оцените статью:

(0 голос)

Приручите свою музыкальную коллекцию с помощью Beets (исходный пост в блоге) · GitHub

.
Я наконец-то приручил свою большую коллекцию MP3 с помощью потрясающей утилиты с открытым исходным кодом под названием Beets.
Это, наряду с несколькими другими утилитами и сценариями, позволило мне легко очистить мою существующую библиотеку, импортировать новую музыку, синхронизировать ее с моим телефоном Android, а затем воспроизводить на моем компьютере с помощью чрезвычайно простого, но мощного языка запросов.
Для начала поговорим о параметрах, для которых я искал решение:
Интерфейс командной строки. В идеале я должен иметь возможность использовать решение на любой платформе ОС, не нуждаясь в чем-то большем, чем среда Bash и некоторые утилиты Unix. Кроме того, поскольку каждый винтик в машине представляет собой утилиту/скрипт Bash, это облегчит прокладку/конвейер/перенаправление на другие утилиты, чтобы облегчить любую другую интеграцию, которую я могу придумать.
Минимум данных за пределами файлов MP3. Я бы хотел, чтобы как можно больше данных MP3 хранилось в самих файлах MP3. Небольшой файл базы данных метаданных подойдет, если он содержит только повторяющуюся информацию (энергонезависимую) и хранится вместе с коллекцией для упрощения резервного копирования.
Исправление тегов MP3 — необходимо исправить любые отсутствующие/неправильные теги MP3 в моей существующей коллекции, а также новую музыку, которая импортируется. В соответствии с этим мне нужно иметь возможность настроить пользовательские правила, чтобы переопределить некоторые из того, что может показаться евангелием от MusicBrainz и др.
Воспроизведение через CLI MPlayer с использованием запросов. Как видно из пункта №1, я работаю с командной строкой, поэтому неудивительно, что я использовал MPlayer в качестве аудиоплеера почти всегда и привык команды. В прошлом я либо передавал случайную находку, либо указывал на предварительно сгенерированный плейлист M3U, чтобы послушать любой жанр или исполнителя, к которому я был настроен.
Теперь я искал более естественный язык запросов для упрощения.
Синхронизация Android. Необходимо иметь возможность копировать подмножество моей коллекции, которое мне нужно, на моем телефоне, а затем синхронизировать дельту изменений позже.
Резервное копирование на мой домашний NAS. Хотя мой NAS уже настроен для резервного копирования моего Mac через Time Machine, мне нравится синхронизировать мою коллекцию с отдельной общей папкой на случай, если мне понадобится получить к ней доступ через ящик Linux, или если моя жена или дочь охотятся за одним из моих треков.
Шаг №1 — Свекла
Итак, учитывая вышеперечисленные параметры, наткнуться на Свеклу не заставило себя долго ждать.
Это фантастическое программное обеспечение решает большинство моих потребностей и просто безгранично в своих возможностях использования. После установки моей первой задачей было создать файл конфигурации, чтобы подготовиться к первоначальному импорту моей существующей музыкальной коллекции. Я создал файл конфигурации Beets в ~/.config/beets/config.yaml со следующим минимальным содержимым:
библиотека:/музыка/library.db
каталог:/музыка
импорт:
копия: да
путей:
по умолчанию:$genre/$albumartist/$album%aunique{}/$track-$title
singleton:$жанр/$исполнитель/разное/$название
comp:$genre/$albumartist/$album%aunique{}/$track-$title
Моя коллекция будет создана в папке /music (с сохраненной там базой данных Beets). Кроме того, копия будет выполняться только при импорте (вместо перемещения), поэтому у меня будет возможность убедиться, что все в порядке, без сброса исходных файлов. Затем я изменил пути таким образом, чтобы папка верхнего уровня была жанром, как мне нравится.
Время импорта. Я скопировал свою существующую коллекцию в /music_old и запустил импорт:
$ импорт свеклы /music_old
Для каждой найденной песни/альбома вы получите предложенное совпадение от MusicBrainz, которое вы можете принять или попытаться изменить теги на лету. Сначала я решил взять все, что было предложено, однако я часто нажимал «T» для «треков», когда у меня были просто разные файлы для определенного исполнителя. Это упростило сопоставление отдельных треков и привело к тому, что они оказались в папке «misc» под именем исполнителя, как указано в файле конфигурации в разделе «singleton».
После завершения этого процесса вручную (что заняло около часа для 2500 или около того песен) я заметил несколько исполнителей, которые оказались в жанрах, с которыми я не совсем согласен. Переходим к шагу №2.
Шаг №2 — EyeD3
После того, как я заполнил все теги MP3 моей существующей коллекции от MusicBrainz, у меня было несколько исполнителей/альбомов/треков, которые нуждались в исправлении жанра. EyeD3 спешит на помощь.
Первым делом после установки нужно было проверить список кодов жанров:
eyeD3 —plugin=жанры
Имея правильный идентификатор жанра, я могу обновить данный трек:
eyeD3 -G 9 /music/Metal/Pantera/Cowboys\ From\ Hell/06-Domination.mp3
(конечно, вы можете легко обрабатывать несколько файлов, добавляя немного find и xargs, например)
Любые обновления тегов MP3 требуют, чтобы вы сообщали об этом Beets (подробнее о запросах чуть позже), чтобы он мог обновить свою базу данных:
$ обновление свеклы Pantera
В основном я переводил артистов в другие жанры, поэтому быстро создал более сложную единую команду:
$ ARTISTNAME=Jeremy\ Soule && find «$ARTISTNAME» -type f -print0 | xargs -0 eyeD3 -G 24 && обновление свеклы $ARTISTNAME
Шаг №3 — Импорт новой музыки
Итак, моя существующая коллекция выглядела довольно неплохо. Пришло время добавить немного новой музыки, которую я купил и скачал с Amazon.
$ beet import ~/Music/Amazon\MP3/Vanden\Plas/Chronicles\of\Immortals_\Netherworld
Очевидно, что нет реальной разницы между этим шагом и шагами №1 и №2.
Шаг №4. Включите музыку
Хорошо, после всей этой тяжелой работы мы можем насладиться плодами наших трудов — языком запросов Битса.
Прежде всего следует отметить, что синтаксис запроса для Beets используется во многих его командах, таких как ls и update. Команда ls — это то, что нам сейчас нужно, т. е. список треков, соответствующих моим критериям поиска. Например:
$ свекла ls circus maximus #находка художника
$ beet ls милосердие фолз #найти по альбому
$ beet ls through osiris eyes #найти по треку
$ beet ls path:/music/Metal/Disturbed #найди мой путь
В этих примерах каждое слово будет использоваться как отдельное ключевое слово, поэтому при необходимости укажите комбинацию условий поиска. Кроме того, существуют дополнительные квалификаторы префикса, такие как «исполнитель:» и «альбом:», для таких случаев, когда имя исполнителя совпадает с именем другой песни в вашей коллекции. Язык запросов — это гораздо больше, так что взгляните сюда: Beets Query Reference
Отлично! Это дает возможность создавать целевой плейлист на лету. Теперь давайте передадим эти результаты в MPlayer для воспроизведения:
$ beet ls -p Жанр: Металл | mplayer -shuffle -playlist /dev/fd/3 3<&0 <
Бам! Теперь случайным образом проигрываются все песни в жанре Metal. Довольно хорошо, но эта команда довольно длинная. И последняя задача, чтобы заставить все решение сиять — создать сценарий оболочки music.sh для запуска команды mplayer:
#! /бин/баш
ОИФС=»$ИФС»
ЕСЛИ=$’\n’
свекла ls -p $@ | mplayer -shuffle -playlist /dev/fd/3 3<&0
ИФС = «$ ОИФС»
, а затем добавить псевдоним к моему ~/. profile:
псевдоним play=’/Users/jasongardner/scripts/music.sh $@’
Ааааааа. Сейчас мы говорим! Теперь играть во что-нибудь из моей коллекции очень просто:
$ играть Iron Maiden #исполнитель
$ играть Guns Roses Appetite Destruction #альбом
$ играть в Tool Sober #трек
# играть Savatage, но не песни у меня под рождественским жанром
$ путь воспроизведения:/музыка/прогрессив\рок/дикарь
Шаг № 5
Все на месте, пришло время сделать резервную копию в общую папку на моем NAS.
$ rsync -avz —delete /music/ [email protected]:/volume1/shared/jason/music/
Довольно простая односторонняя синхронизация с удаленным общим ресурсом.
Шаг № 6
И, наконец, я хотел получить определенную часть моей коллекции на свой телефон. Я использую SSHelper (серверное приложение SSH) на своем телефоне (в настоящее время у меня HTC One M8), поэтому rsync был логичным выбором для выполнения синхронизации. После некоторых проб и ошибок я остановился на этом подходе. Во-первых, я написал небольшой скрипт для создания текстового файла, содержащего пути, которые я хотел синхронизировать:
#!/бин/баш
echo «Создание плейлиста для синхронизации телефона…»
эхо -n > «/музыка/телефон-список.m3u»
FILELIST=$(найти «/music» -имя «*.mp3»)
TOTALNUMBER=$(echo «$FILELIST» | wc -l | tr -d ‘ ‘)
OLDIFS=$IFS
ЕСЛИ=$’\n’
СЧЕТ=0
INCLUDED_FILES[0]=»/музыка/А капелла»
INCLUDED_FILES[1]=»/музыка/Акустика»
INCLUDED_FILES[2]=»/музыка/Альтернатива»
. ..
EXCLUDED_FILES[0]=»/music/Progressive Rock/Spiral Architect»
для FILENAME в $FILELIST ; сделать
для ВКЛЮЧИТЬ в «${INCLUDED_FILES[@]}» ; сделать
, если [[ «$FILENAME» == $INCLUDE* ]]; затем
для ИСКЛЮЧИТЬ в «${EXCLUDED_FILES[@]}» ; сделать
если [[ «$FILENAME» == $EXCLUDE* ]]; затем
перерыв 2
фи
сделано
echo -n $FILENAME >> «/music/phone-list. m3u»
echo -ne «\x00» >> «/music/phone-list.m3u»
СЧЕТ=$(($СЧЕТ + 1))
продолжить 2
фи
сделано
СЧЕТ=$(($СЧЕТ + 1))
echo -ne «$COUNT/$TOTALNUMBER завершено\r»
сделано
эхо «$COUNT/$TOTALNUMBER выполнено»
ЕСЛИ=$СТАРЫЕЕСЛИ
echo «Готово. Плейлист создан в /music/phone-list.m3u»
Между массивами INCLUDED_FILES и EXCLUDED_FILES я смог указать префикс любых файлов/каталогов, которые я хотел включить/исключить. Запуск скрипта создал файл /music/phone-list.m3u, содержащий все пути к файлам, которые я хотел передать (нулевое завершение). Теперь я могу просто ввести это в rsync и начать передачу файла:
rsync -avz —files-from=»/music/phone-list.m3u» —delete -e «ssh -p 2222» -0 /. [email protected]:~/SDCard/Music/
И, конечно же, я могу восстановить список файлов и повторно запустить команду rsync в любое время, чтобы передать любые изменения или новые треки на свой телефон.
Во время воспроизведения музыки на телефоне я заметил, что у ряда треков отсутствует обложка. Решил поделиться тем, как я все это починил.
Во-первых, я написал быстрый скрипт для определения списка файлов, в которых отсутствует обложка:
#!/бин/баш
echo «Нахождение отсутствующей обложки…»
FILELIST=$(найти «/music» -iname «*.mp3»)
OLDIFS=$IFS
ЕСЛИ=$’\n’
для FILENAME в $FILELIST ; сделать
EYED3OUT=$(eyed3 «$FILENAME» | grep «FRONT_COVER Image»)
, если [[ -n $EYED3OUT ]]; затем
продолжить
фи
EYED3OUT=$(eyed3 «$FILENAME» | grep «ДРУГОЕ Изображение»)
, если [[ -n $EYED3OUT ]]; затем
продолжить
фи
эхо $FILENAME
сделано
ЕСЛИ=$СТАРЫЕЕСЛИ
Затем я выполнял быстрый запрос Beets ls, чтобы убедиться, что поиск по альбому соответствует только тому, что мне нужно:
$ свекла ls-a Цирк Максимус Девять
Когда я был доволен строкой запроса, я мог передать ее в плагины FetchArt/EmbedArt Beets, как только включил их в config. yaml для Beets:
Плагины: fetchart embedart
$ ALBUM=Circus\ Maximus\ Nine && beet fetchart $ALBUM && beet embedart $ALBUM
Если все пойдет хорошо, правильная обложка должна быть загружена и встроена в файл MP3. Если по какой-то причине вам нужно обновить обложку вручную, просто скачайте ее и скормите в eyeD3:
$ eyeD3 —add-image ~/Desktop/cover.jpg:FRONT_COVER «/path/to/my/file.mp3»

Написание плагинов — документация по beets 1.1.0

Плагин beets — это просто модуль Python внутри пространства имен beetsplug упаковка. (Проверьте этот вопрос Stack Overflow о пакетах пространства имен, если вы о них не слышали. ) Итак, чтобы сделать это, создайте каталог с именем beetsplug и поместите в него два файла: один с именем __init__.py и один с именем myawesomeplugin.py (но не называйте его так). Ваш каталог структура должна выглядеть так:

 свекловичный штекер/
    __init__.py
    myawesomeplugin.py 

Затем вам нужно поместить этот материал в __init__.py, чтобы beetsplug пакет пространства имен:

 из pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
 

Это все для __init__.py; вы можете оставить его в покое. Мясо твоего плагин находится в myawesomeplugin.py. Там вам нужно будет импортировать модуль beets.plugins и определить подкласс класса BeetsPlugin нашел в нем. Вот скелет файла плагина:

 из beets.plugins импортировать BeetsPlugin
класс MyPlugin (BeetsPlugin):
    проходить
 

Когда у вас есть подкласс BeetsPlugin, вы можете плагин может сделать. (Читайте дальше!)

Чтобы использовать новый плагин, убедитесь, что каталог beetsplug находится в каталоге Python. path (например, с помощью PYTHONPATH или путем установки в virtualenv). Затем, как описано выше, отредактируйте файл config.yaml, включив в него plugins: myawesomeplugin (подставляя название модуля Python содержащий ваш плагин).

Добавление команд в интерфейс командной строки

Плагины могут добавлять новые подкоманды в интерфейс командной строки beet. Определять Метод commands() класса плагина для возврата списка подкоманд объекты. (Класс Subcommand определен в модуле beets.ui.) Вот пример плагина, который добавляет простую команду:

 из beets.plugins import BeetsPlugin
from beets.ui Подкоманда импорта
my_super_command = Подкоманда('супер', help='сделать что-то супер')
def say_hi(lib, opts, args):
    print "Всем привет! Я плагин!"
my_super_command.func = сказать_привет
класс SuperPlug (BeetsPlugin):
    команды защиты (я):
        вернуть [my_super_command]
 

Чтобы создать подкоманду, вызовите конструктор следующим образом: Подкоманда(имя, анализатор, помощь, псевдонимы). Параметр name является единственным обязательным и должен просто имя вашей команды. парсер может быть экземпляром OptionParser, но по умолчанию это пустой синтаксический анализатор (вы можете расширить его позже). помощь — это описание вашей команды, а псевдонимы — это список сокращенных версий имя вашей команды.

Вам нужно будет добавить функцию к вашей команде, сказав mycommand.func = моя функция. Эта функция должна принимать следующие параметры: lib (a beets Library) и opts и args (параметры командной строки и аргументы, возвращаемые OptionParser.parse_args).

Функция должна использовать любую из служебных функций, определенных в beets.ui. Попробуйте запустить pydoc beets.ui, чтобы узнать, что доступно.

Вы можете добавить параметры командной строки к вашей новой команде с помощью члена анализатора класса Subcommand, который является экземпляром OptionParser. Просто используйте это как обычный OptionParser в независимом скрипте.

Прослушивание событий

Обработчики событий позволяют плагинам запускать код всякий раз, когда что-то происходит в свекле операция. Например, плагин может записывать сообщение журнала каждый раз, когда альбом успешно автоматически помечается или обновляет индекс MPD всякий раз, когда база данных измененный.

Вы можете «прослушивать» события с помощью декоратора BeetsPlugin.listen. Вот пример:

 из beets.plugins импортировать BeetsPlugin
класс SomePlugin (BeetsPlugin):
    проходить
@SomePlugin.listen('загрузка подключаемого модуля')
деф загружен():
    print 'Плагин загружен!'
 

Передайте имя рассматриваемого события декоратору прослушивания. События в настоящее время доступны:

  • pluginload : вызывается после загрузки всех плагинов после свеклы команда начинается
  • import : вызывается после завершения команды импорта свеклы (ключевое слово lib аргумент — это объект библиотеки; paths — это список путей (строк), которые были импортный)
  • album_imported : вызывается с объектом альбома каждый раз при импорте Команда завершает добавление альбома в библиотеку. Параметры: библиотека, альбом
  • item_imported : вызывается с объектом Item каждый раз, когда импортер добавляет singleton в библиотеку (не требуется для полного импорта альбома). Параметры: библиотека, пункт
  • запись : вызывается с объектом Item непосредственно перед метаданными файла. записывается на диск (т. е. непосредственно перед открытием файла на диске).
  • import_task_start : вызывается перед началом обработки задачи импорта. Параметры: задача ( ImportTask ) и сессия ( ImportSession ).
  • import_task_apply : вызывается после применения изменений метаданных в импортная задача. Параметры: задача и сессия.
  • import_task_choice : вызывается после принятия решения об импорте задача. Это событие можно использовать для инициирования дальнейшего взаимодействия с пользователем. Используйте task.choice_flag, чтобы определить действие, которое необходимо предпринять. Параметры: задача и сессия.
  • import_task_files : вызывается после того, как задача импорта завершает работу с файловая система (копирование и перемещение файлов, запись тегов метаданных). Параметры: задача и сессия.
  • library_opened : вызывается после запуска beets и инициализирует главный Объект библиотеки. Параметр: библиотека.
  • database_change : в базу данных библиотеки внесены изменения. изменение может быть еще не зафиксировано. Параметр: библиотека.
  • cli_exit : вызывается непосредственно перед выходом из командной строки beet. Параметр: библиотека.

Включенный подключаемый модуль mpdupdate предоставляет пример использования прослушивателей событий.

Расширение возможностей автотегера

Плагины также могут расширить функциональные возможности автотегера. Для исчерпывающий пример, попробуйте посмотреть на подключаемый модуль цветности, который включен со свеклой.

Плагин может расширить три части процесса автотеггера: расстояние трека функция, функция расстояния до альбома и начальный поиск MusicBrainz. Функции расстояния определяют, насколько «хорошо» совпадение трека и альбома. уровни; начальный поиск контролирует, какие кандидаты представляются алгоритм соответствия. Плагины реализуют эти расширения, реализуя три методы класса плагина:

  • track_distance(self, item, info): добавляет компонент на расстояние функция (т. е. метрика сходства) для отдельных треков. пункт это трек для сопоставления (объект Item), а информация — это объект TrackInfo. который предлагается в качестве матча. Должна возвращать пару (dist, dist_max) поплавков, указывающих расстояние.
  • альбом_расстояние(я, элементы, альбом_информация, сопоставление): то же, что и выше, но сравнивает список элементов (представляющих альбом) с MusicBrainz на уровне альбома вход. items — список объектов Item; Album_info — это AlbumInfo объект; а отображение — это словарь, который сопоставляет элементы с их соответствующими Объекты TrackInfo.
  • кандидатов(я, элементы): задан список элементов, включенных в альбом, который будет соответствует, возвращает список объектов AlbumInfo для альбомов-кандидатов, которые должны быть сравнил и подогнал.
  • item_candidates(self, item): учитывая одноэлементных элементов, вернуть список Объекты TrackInfo для треков-кандидатов, которые нужно сравнить и сопоставить.

При реализации этих функций, вероятно, будет очень необходимо использовать функций из модулей beets.autotag и beets.autotag.mb, оба которые имеют несколько полезных строк документации.

Чтение параметров конфигурации

Плагины могут настраивать себя с помощью файла config.yaml. Ты можешь читать значения конфигурации двумя способами. Первый — использовать self.config внутри класс вашего плагина. Это дает вам представление о значениях конфигурации в раздел с тем же названием, что и модуль вашего плагина. Например, если ваш плагин находится в greatplugin.py, то self.config будет ссылаться на параметры в greatplugin: раздел конфигурационного файла.

Например, если у вас есть значение конфигурации с именем «foo», пользователи могут поместить это в их config. yaml:

 greatplugin:
    foo: bar 

Чтобы получить доступ к этому значению, скажите self.config[‘foo’].get() в любой момент вашего код плагина. объект self.config представляет собой представление , как определено в Confit библиотека.

Если вы хотите получить доступ к значениям конфигурации за пределами раздела вашего плагина, импортировать объект конфигурации из модуля beets . То есть просто положить из beets импортирует конфигурацию в верхней части вашего плагина и получает доступ к значениям оттуда.

Добавление функций и полей формата пути

Beets поддерживает вызовов функций в синтаксисе формата пути (см. Форматы пути ). Beets включает в себя несколько встроенных функций, но плагины могут добавлять новые функции с помощью декоратора template_func. Чтобы использовать его, украсьте функцию MyPlugin.template_func(«name»), где name имя функции, как оно должно отображаться в строках шаблона.

Вот пример:

 класс MyPlugin(BeetsPlugin):
    проходить
@MyPlugin.template_func('исходный')
защита _tmpl_initial (текст):
    если текст:
        вернуть текст[0].upper()
    еще:
        вернись ''
 

Этот плагин предоставляет функцию %initial для шаблонов пути, где %initial{$artist} заменяется на инициал исполнителя (с заглавной буквы характер).

Плагины также могут добавлять поля шаблона , которые представляют собой вычисляемые значения, указанные как $имя в шаблонах. Чтобы добавить новое поле, украсьте функцию, занимающую один параметр, элемент, с MyPlugin.template_field(«имя»). Вот пример который добавляет поле $disc_and_track:

 @MyPlugin.template_field('disc_and_track')
защита _tmpl_disc_and_track (элемент):
    """Расширить до номера диска и номера дорожки, если это
    многодисковый выпуск. В противном случае просто расширяется до трека
    число.
    """
    если item.disctotal > 1:
        вернуть u'%02i.%02i' % (item.disc, item. track)
    еще:
        вернуть u'%02i' % (item.track)
 

Если этот плагин включен, шаблоны могут ссылаться на $disc_and_track, поскольку они может любое стандартное поле метаданных.

Расширение MediaFile

MediaFile — это уровень абстракции файловых тегов, который Beets использует для создания простая манипуляция метаданными между форматами. Плагины могут добавлять поля в MediaFile чтобы расширить виды метаданных, которыми они могут легко управлять.

Метод item_fields в подключаемых модулях следует переопределить, чтобы он возвращал словарь, ключи которого являются именами полей, а значения — объектами-дескрипторами которые обеспечивают рассматриваемое поле. Дескрипторы, вероятно, должны быть Экземпляры MediaField (определены в beets.mediafile). Вот пример плагин, который предоставляет бессмысленное новое поле «foo»:

 из свеклы импортировать медиафайл, плагины, пользовательский интерфейс
класс FooPlugin(plugins.BeetsPlugin):
    определение item_fields (я):
        возвращаться {
            'foo': медиафайл. MediaField(
                mp3 = медиафайл.StorageStyle(
                    'TXXX', id3_desc=u'Foo Поле'),
                mp4 = медиафайл.StorageStyle(
                    '----:com.apple.iTunes:Foo Field'),
                etc = mediafile.StorageStyle('FOO FIELD')
            ),
        }
 

Позже плагин может манипулировать этим новым полем, говоря что-то вроде mf.foo = ‘bar’, где mf — экземпляр MediaFile.

Обратите внимание, что в настоящее время эти дополнительные поля применяются только к . Сам медиафайл. Схема базы данных библиотеки beets и класс Item не расширены, поэтому поля являются гражданами второго сорта. Это может измениться в конце концов.

Добавление этапов конвейера импорта

Многим подключаемым модулям необходимо добавлять операции с высокой задержкой в ​​рабочий процесс импорта. Для Например, плагин, который извлекает тексты песен из Интернета, в идеале не блокировал бы ход остальной части импортера. Beets позволяет плагинам добавлять этапы в конвейер параллельного импорта.

Каждый этап выполняется в отдельном потоке. Стадии плагина запускаются после изменения метаданных были применены к единице музыки (альбому или треку) и перед файлом произошли манипуляции (копирование и перемещение файлов, запись тегов на диск). Несколько этапов выполняются параллельно, но каждый этап обрабатывает только одну задачу за раз. и каждая задача обрабатывается только одним этапом за раз.

Плагины предоставляют этапы как функции, которые принимают два аргумента: config и задача, которая является объектами ImportConfig и ImportTask (оба определены в свекла.импортер). Добавьте такую ​​функцию в поле import_stages плагина. зарегистрировать его:

 из beets.plugins импортировать BeetsPlugin
класс ExamplePlugin (BeetsPlugin):
    защита __init__(сам):
        super(ExamplePlugin, self).__init__()
        self.import_stages = [self.stage]
    стадия определения (я, конфигурация, задача):
        print('Импорт чего-то!')
 

Расширьте синтаксис запроса

Вы можете добавить новые типы запросов к синтаксису запроса beets , обозначенному префиксом.

Запись опубликована в рубрике Разное. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *