Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Управление плеером Amarok из командной строки

Оригинал: How-To: Control Amarok from Command-Line
Автор: Craciun Dan
Дата публикации: 18 марта 2014 года
Перевод: А. Кривошей
Дата перевода: октябрь 2014 г.

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

Amarok

Этот способ использует D-BUS - систему обмена информацией между процессами. Большинство команд простые и интуитивные, а qdbus поддерживает автодополнение по TAB для доступных агрументов командной строки.
Например, вывод команды qdbus org.kde.amarok /Player после нажатия ТАВ покажет примерно следующее:

...
method void org.freedesktop.MediaPlayer.Mute()
method void org.freedesktop.MediaPlayer.Next()
method void org.freedesktop.MediaPlayer.Pause()
method void org.freedesktop.MediaPlayer.Play()
method void org.freedesktop.MediaPlayer.PlayPause()
...

Ниже список некоторых очень полезных команд.

Запуск воспроизведения трека в Amarok:

qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Play

Пауза или возобновление воспроизведения:

qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.PlayPause

Отключить звук в Amarok:

qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Mute

Изменить уровень громкости

qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet 80

Приведенная выше команда установит уровень звука 80%.

Показать главное окно программы

qdbus org.kde.amarok /amarok/MainWindow org.qtproject.Qt.QWidget.showNormal

Скрыть главное окно

qdbus org.kde.amarok /amarok/MainWindow org.qtproject.Qt.QWidget.hide

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

qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.GetMetadata

Вы можете использовать эти команды в скриптах, например для комментаторов в IRC.

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

qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.GetMetadata
# set amarok volume
amvol () {
  if [ "$1" == "" ] || [ $1 -lt 0 ] || [ $1 -gt 100 ]; then
    echo "Usage: amvol N"
    echo "  N  - integer between 0 and 100"
  else
    qdbus org.kde.amarok /Player VolumeSet $1
    echo "Amarok volume set to $1"
  fi
}

alias ammin='amvol 0'
alias amv20='amvol 20'
alias amv40='amvol 40'
alias amv60='amvol 60'
alias amv80='amvol 80'
alias ammax='amvol 100'

Ниже пример комментатора для XChat:

#!/usr/bin/perl
# Amarok announcer for XChat - type /NPS to use

Xchat::register("NPS", "0.2.0", "Amarok Announcer");

Xchat::hook_command("NPS", cmd_nps);

sub cmd_nps {
	$META = `qdbus org.kde.amarok /Player GetMetadata`;
	$artist = ( $META =~ /artist: (.*)/ ? $1 : "(No Artist" );
	$title = ( $META =~ /title: (.*)/ ? $1 : "(No Title)" );
	$line_nps = "Rocks! $artist - $title";
	Xchat::command("ME $line_nps");
}

Изменение уровня громкости в KMix

Таким же способом, используя qdbus, вы можете управлять KMix. Например, вы можете менять уровень громкости с помощью команды вида:

qdbus org.kde.kmix /Mixers/PulseAudio__Playback_Devices_1/alsa_output_pci_0000_00_1b_0_analog_stereo org.kde.KMix.Control.volume 80

Уровень громкости будет установлен на 80%.