Portál AbcLinuxu, 27. dubna 2024 02:58

script pro snadné ovládání mocp po síti

8.9.2008 23:41 | Přečteno: 1155× | linux | poslední úprava: 7.9.2008 22:53

Po delší odmlce vítejte na mém blogu:-) Na noteboooku jsem spokojeným uživatelem prostředí fluxbox a konzolového přehrávače mocp, který ovládám pomocí multimediálních tlačítek. Když jsem doma, pouštím ovšem hudbu z file serveru(debian etch + mocp) do hifivěže. Neustálé překlikávání do konzole kde je přes ssh spuštěn mocp kvůli ovládání hlasitosti, pauzy ap. mě začalo dost otravovat....

Proto jsem si vytvořil script v bashi, který je volán při stisknutí multimediálního tlačítka, otestuje (ne)existenci lokálního mocp a případně pomocí ssh pošle příkaz na file server. Původně jsem si myslel že to bude jen krátký scriptík, nakonec má asi 300 řádků tak si říkám jestli se někomu nemůže hodit...

ovládání je řešeno pomocí parametrů předávaných scriptu:
vol_up - zesílí
vol_down - zeslabi
mute - mute/unmute
player_pause - play/pause
player_next - další song
player_back - předchozí song
player_stop - zastaví přehrávání
set_context - přepne který přehrávač bude ovládán - pokud existuje lokálně spuštěné mocp přepne na server a naopak.

Ukládání informací (úroveň hlasitosti pro unmute, informace o pauze ap) jsou pomocí souborů v /tmp. Pro ovládání hlasitosti jsou spřaženy kanály Master a PCM, kvůli většímu rozsahu volume.(Pokud budete upravovat sed výrazy pro načtení hlasitosti kanálu, pozor na to kterou jednotku používáte, dB nebo %? hlasitosti kanálu.

Na začátku scriptu jsou do proměnných nadefinovány akce pro ovládání hlasitostí pomocí alsy(vyberte si své kanály dle libosti..., ovládání mocp je natvrdo v kódu, to se snad neliší....

Problémy o kterých vím: pokud dáte pauzu tímto scriptem a odpauzujete přehrávačem, "rozhodíte ho", je potřeba odpauzovat script(ikdyž hudba už jede) a další signál player_pause normálně provede pauzu. jediné řešení co mě napadlo je asi úprava mocp a na tu se necítím...

Závěr: Pokud Vás napadnou lepší řešení jak celého problému, případně se Vám něco nezdá v kódu pište do diskuze, rád se přiučím:-) a pokud se to někomu bude hodit napište určitě případně i kontakt ať můžu dát vědět když budou nějaké novinky...

Protože se mi sem na abc nepodařilo vložit jako přílohu textový soubor, tak jsem to prozatím dal k sobě na server... díky za pochopení :-)

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Václav 9.9.2008 07:01 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
Rozbalit Rozbalit vše Re: script pro snadné ovládání mocp po síti
Odpovědět | Sbalit | Link | Blokovat | Admin
Lepší řešení je rozhodně mpd :) každý konzolový i grafický frontend komunikaci po síti zvládá bez problémů. Takhle mám v práci v kanclu rozchozený mp3 přehrávač. Sám ho ovládám přes qmpdclient nebo konzolové ncmpc, kolega s Windows používá… err… nějaký windows client a druhý kolega webové rozhraní :)
Cross my heart and hope to fly, stick a cupcake in my eye!
Josef Kufner avatar 9.9.2008 12:48 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: script pro snadné ovládání mocp po síti
Odpovědět | Sbalit | Link | Blokovat | Admin
Na domácím serveru mám mpd, lokálně používám amarok. Tohle mám v ~/.icewm/keys:
#-------- Hlasitost ----------------------------------------------------------
key "Super+Delete"              amixer -q set Master 4%- # lower volume
key "Super+Insert"              amixer -q set Master 4%+ # raise volume
key "Super+Home"                amixer -q set PCM 4%+   # lower volume
key "Super+End"                 amixer -q set PCM 4%-   # lower volume
key "Super+Page_Up"             sh -c "if pgrep amarokapp; then amixer -q set Master 4%+; else mpc volume +2; fi"
key "Super+Page_Down"           sh -c "if pgrep amarokapp; then amixer -q set Master 4%-; else mpc volume -2; fi"
key "Super+a"                   xterm -e alsamixer
key "Super+Shift+a"             xterm -e alsamixer -c 1
 
#-------- amarok, mpc ----------------------------------------------------------
key "Super+b"           sh -c "if pgrep amarokapp;  then amarok -f;      else mpc next;  fi"
key "Super+z"           sh -c "if pgrep amarokapp;  then amarok -r;      else mpc prev;  fi"
key "Super+c"           sh -c "if pgrep amarokapp;  then amarok --pause; else mpc pause; fi"
key "Super+x"           sh -c "if pgrep amarokapp;  then amarok -p;      else mpc play;  fi"
key "Super+v"           sh -c "if pgrep amarokapp;  then amarok -s;      else mpc stop;  fi"
key "Super+n"           sh -c "if pgrep amarokapp;  then false;          else mpc random on;  mpc next;  mpc random off;  fi"
To je celé ;-)
Hello world ! Segmentation fault (core dumped)
Ilfirin avatar 9.9.2008 13:40 Ilfirin | skóre: 32 | blog: ilfblog | Liberec
Rozbalit Rozbalit vše Re: script pro snadné ovládání mocp po síti
Odpovědět | Sbalit | Link | Blokovat | Admin
Protože se mi sem na abc nepodařilo vložit jako přílohu textový soubor
To jsem obešel tak, že jsem byl první, kdo si svůj zápisek komentoval a onen soubor byl v onom prvním komentáři, kam již vložit jde.
hikikomori82 avatar 9.9.2008 18:46 hikikomori82 | skóre: 18 | blog: foobar | Košice
Rozbalit Rozbalit vše Re: script pro snadné ovládání mocp po síti
Odpovědět | Sbalit | Link | Blokovat | Admin
Na hornej gnome liste mam 3 spustace (play, next, info), ktorym zodpovedaju tieto 3 skripty:

mocp-play.sh:
#!/bin/bash
POMS=`mocp -i | grep State: | head -1 | sed 's/: /\n/' | tail -1`
if [ "$POMS" = "PLAY" ]; then
  mocp -P
fi
if [ "$POMS" = "PAUSE" ]; then
  mocp -U
fi
if [ "$POMS" = "STOP" ]; then
  mocp -p
fi
mocp-next.sh:
#!/bin/bash
mocp -f
mocp-info.sh:
#!/bin/bash
mocp -i | gmessage -nearmouse -file -
Mam ale par problemov ktore sa mi nepodarilo zatial vyriesit:

- po vypnuti pocitaca si nepamata poziciu kde prestal, takze kazdy den zacina odznova

- krmim ho cez icecream z internetoveho radia a asi icecream nepresne rozdeluje konce pesniciek ked ho dam stahovat po 1 pesnicke, to musi byt preto lebo priebezne musim stiahnute pesnicky pridavat do playlistu, takze na konci kazdej pesnicky pocujem kusok nasledujucej, a na zaciatku zase kusok predoslej. Asi to poriesim tak ze jeden proces bude kontinualne stahovat cez icecream (ked stahuje kontinualne tak tam tie nepresnosti niesu) a druhym procesom budem monitorovat adresar a ked pribudne subor tak to pridam do playlistu
Slobodný font na technické kreslenie

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.