mpcplay - spela enstaka filer med mpd utan att uppdatera db

Här kan du dela med dig av dina bästa tips och knep.
Kategoriregler
Här ligger de utförliga instruktionerna vi kan tänkas behöva. Leta här om du tex behöver installera nåt program eller sätta upp någon funktion. Starta inte trådar utan att ha ett svar.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

mpcplay - spela enstaka filer med mpd utan att uppdatera db

Inlägg av dmz »

... utan att uppdatera hela databasen.
Detta script är så enkelt, men genialiskt. En "nackdel" med mpd har varit att för att snabbt lyssna på en ny låt/platta så måste man uppdatera databasen ( mpc update [dir] ), vilket man kanske inte alltid vill/har tid med. Det skapar alltså temporära symlinks och kör sedan update enbart på den/dem.
Känns lite märkligt att man inte har tänkt på detta själv... har alltid använt mplayer i sådana situationer, men nu är det alltså slut med det. :)

Kod: Markera allt

#!/usr/bin/perl

# mpc-play
# version 0.2
# by Ilya "Voyager" Schurov (http://comm.noo.ru/iv-en/)

$MUSIC_PREFIX="/mnt/Music_1/";
$TEMP_DIR=".temp";
$SCRIPT_NAME="mpc-play";
# warning! all symlinks in $MUSIC_PREFIX/$TEMP_DIR will be lost on start!

$DEBUG=0;


$PWD=`pwd`;
chomp $PWD;

if(!@ARGV)
{
  print "Usage:\n$SCRIPT_NAME <files-to-play>\n";
}

say_and_do("mpc --no-status stop",$DEBUG);
say_and_do("mpc --no-status clear",$DEBUG);

# removing symlinks from $TEMP_DIR

while(<$MUSIC_PREFIX/$TEMP_DIR/*>)
{
    unlink if(-l);
}


foreach $file (@ARGV)
{
  $link=$file;

  # stripping slashes from arguments
  $link=~s/\//_/g;
  if($file!~/^\//)
  {
    $file="$PWD/$file";
  }

  symlink("$file","$MUSIC_PREFIX/$TEMP_DIR/$link") 
               || die("Can't create symlink from $file to $MUSIC_PREFIX/$TEMP_DIR/$link: $!");
  push @links, $link;
}
say_and_do("mpc update $TEMP_DIR",$DEBUG);

# now we need to wait while mpd updating DB
do
{
  $stat=`mpc`;
  sleep(0.1);
}while($stat=~/^Updating DB/m);

# generating playlist
foreach $link(@links)
{
  $link=~s/\`/\\\`/g;
  say_and_do("mpc --no-status add \"$TEMP_DIR/$link\"",$DEBUG);
}

#let's the music begins! :)
say_and_do("mpc play",$DEBUG);

sub say_and_do
{
  my $str=shift;
  my $debug=shift;
  print "$str\n" if($debug);
  system($str);
}
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: mpcplay - spela enstaka filer med mpd utan att uppdatera db

Inlägg av Rasmus »

Ser ju trevligt ut. Om man skulle lägga till funktionen i gimmix/gmpc så att man kan använda d'n'd för att lägga till filer i spellistan. Men då måste man ju förstås kunna hantera d'n'd på programeringsplanet...
Man skulle iof. kunna skapa en mapp i ~ där man kan lägga in/länka tillfällig musik.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: mpcplay - spela enstaka filer med mpd utan att uppdatera db

Inlägg av dmz »

vad är d'n'd?
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: mpcplay - spela enstaka filer med mpd utan att uppdatera db

Inlägg av Rasmus »

dmz skrev:vad är d'n'd?
drag and drop
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: mpcplay - spela enstaka filer med mpd utan att uppdatera db

Inlägg av dmz »

Fast det spelar ju ingen roll vilken klient du använder, som du säkert redan har listat ut... :p
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: mpcplay - spela enstaka filer med mpd utan att uppdatera db

Inlägg av Rasmus »

dmz skrev:Fast det spelar ju ingen roll vilken klient du använder, som du säkert redan har listat ut... :p
Nej, det jag ville göra var att lägga in funktionen i klienten för att grafiskt kunna dra direkt in i spellistan. Men det behövs ju inte, bara en vidare utveckling ;)
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: mpcplay - spela enstaka filer med mpd utan att uppdatera db

Inlägg av dmz »

Jaha, ursäkta...
Jo, liknande funktionalitet lär väl gå att mosa in i den antar jag. Jag tycker dock att detta är sjukt smidigt som det är.
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Skriv svar

Återgå till "Guider"