<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>mp3rand.sh</title>
<meta name="Generator" content="Vim/8.2">
<meta name="plugin-version" content="vim8.1_v2">
<meta name="syntax" content="bash">
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=,use_input_for_pc=fallback">
<meta name="colorscheme" content="default">
<style>
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #ffffff; background-color: #000000; }
body { font-family: monospace; color: #ffffff; background-color: #000000; }
* { font-size: 1em; }
.Comment { color: #8080ff; }
.Constant { color: #ff6060; }
.Special { color: #ff40ff; }
.Identifier { color: #00ffff; }
.Statement { color: #ffff00; }
.PreProc { color: #ff40ff; }
-->
</style>
</head>
<body>
<pre id='vimCodeElement'>
<span class="Comment">#!/bin/bash</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment">## \file mp3rand.sh</span>
<span class="Comment">## \author Sebastien Beaugrand</span>
<span class="Comment">## \sa <a href="http://beaugrand.chez.com/">http://beaugrand.chez.com/</a></span>
<span class="Comment">## \copyright CeCILL 2.1 Free Software license</span>
<span class="Comment">## \note Les albums doivent etre ranges dans des repertoires commencants par</span>
<span class="Comment">## part01, part02, etc. A chaque repertoire doit etre associe' un poids.</span>
<span class="Comment">## Les albums doivent etre des repertoires. Dans chaque album il doit y</span>
<span class="Comment">## avoir une liste 00.m3u</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># part : 1 2 3 4 5 6 7 1 2 3</span>
<span class="Identifier">weights</span>=<span class="Statement">"</span><span class="Constant">8 7 6 5 4 3 2 6 4 2 3 2 1 3 2 1</span><span class="Statement">"</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-n</span> <span class="Statement">"</span><span class="PreProc">$MP3DIR</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Identifier">dir</span>=<span class="Statement">"</span><span class="PreProc">$MP3DIR</span><span class="Statement">"</span>
<span class="Statement">else</span>
<span class="Identifier">dir</span>=/data
<span class="Statement">fi</span>
<span class="Identifier">list</span>=<span class="PreProc">$dir</span>/mp3/mp3.list
<span class="Identifier">log</span>=<span class="PreProc">$MP3DIR</span>/.mp3log
<span class="Identifier">tmpfile</span>=/tmp/mp3list.tmp
<span class="Identifier">lastdate</span>=<span class="PreProc">$MP3DIR</span>/.mp3date
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># usage</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$1</span><span class="Statement">"</span> <span class="Statement">=</span> <span class="Constant">"-h"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
cat <span class="Statement"><<EOF</span>
<span class="Constant">Usage: </span><span class="PreProc">${</span><span class="PreProc">0</span><span class="Statement">##</span>*/<span class="PreProc">}</span><span class="Constant"> [options]</span>
<span class="Constant">Options:</span>
<span class="Constant">-i [artiste] informations sur les albmus de l'artiste ou sur le dernier album</span>
<span class="Constant">-r generation de la liste</span>
<span class="Constant">["path/00.m3u"] lire la liste </span><span class="PreProc">$dir</span><span class="Constant">/path/00.m3u</span>
<span class="Statement">EOF</span>
<span class="Statement">exit</span> <span class="Constant">0</span>
<span class="Statement">fi</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">!</span> <span class="Statement">-d</span> <span class="Statement">"</span><span class="PreProc">$dir</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="PreProc">$dir</span><span class="Constant"> n'est pas un repertoire</span><span class="Statement">"</span>
<span class="Statement">exit</span> <span class="Constant">1</span>
<span class="Statement">fi</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">!</span> <span class="Statement">-d</span> <span class="Statement">"</span><span class="PreProc">$dir</span><span class="Constant">/mp3</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="PreProc">$dir</span><span class="Constant">/mp3 n'est pas un repertoire</span><span class="Statement">"</span>
<span class="Statement">exit</span> <span class="Constant">1</span>
<span class="Statement">fi</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># reset</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$1</span><span class="Statement">"</span> <span class="Statement">=</span> <span class="Constant">"-r"</span> <span class="Statement">]</span> <span class="Statement">||</span> <span class="Statement">[</span> <span class="Statement">!</span> <span class="Statement">-r</span> <span class="Statement">"</span><span class="PreProc">$list</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">generation du fichier </span><span class="PreProc">$list</span><span class="Constant"> ...</span><span class="Statement">"</span>
<span class="Statement">cd</span> <span class="Statement">"</span><span class="PreProc">$dir</span><span class="Constant">/mp3</span><span class="Statement">"</span>
<span class="Statement">find</span> <span class="Statement">-L</span><span class="Statement"> . </span>-name <span class="Constant">00</span>.m3u <span class="Special">-print</span> <span class="Statement">|</span> <span class="PreProc">LC_ALL</span><span class="Statement">=</span>C <span class="Statement">sort</span> <span class="Statement">|</span> cut <span class="Special">-c</span>3- <span class="Statement">></span><span class="Statement">"</span><span class="PreProc">$list</span><span class="Statement">"</span>
<span class="Statement">exit</span> <span class="PreProc">$?</span>
<span class="Statement">fi</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># info</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">"</span><span class="PreProc">$1</span><span class="Statement">"</span> <span class="Statement">=</span> <span class="Constant">"-i"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">cd</span> <span class="Statement">"</span><span class="PreProc">$dir</span><span class="Constant">/mp3</span><span class="Statement">"</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-n</span> <span class="Statement">"</span><span class="PreProc">$2</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Identifier">album</span>=<span class="Special">`</span><span class="Statement">grep</span><span class="Special"> </span><span class="Statement">"</span><span class="Constant">/</span><span class="PreProc">$2</span><span class="Constant"> -</span><span class="Statement">"</span><span class="Special"> </span><span class="PreProc">$log</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> </span><span class="Statement">tail</span><span class="Special"> </span><span class="Special">-n</span><span class="Special"> </span><span class="Constant">1</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> cut </span><span class="Special">-d</span><span class="Special"> </span><span class="Statement">"</span><span class="Constant">/</span><span class="Statement">"</span><span class="Special"> </span><span class="Special">-f</span><span class="Special"> </span><span class="Constant">2</span><span class="Special">`</span>
<span class="Identifier">artist</span>=<span class="Statement">"</span><span class="PreProc">$2</span><span class="Statement">"</span>
<span class="Statement">else</span>
<span class="Identifier">album</span>=<span class="Special">`</span><span class="Statement">tail</span><span class="Special"> </span><span class="Special">-n</span><span class="Special"> </span><span class="Constant">1</span><span class="Special"> </span><span class="PreProc">$log</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> cut </span><span class="Special">-d</span><span class="Special"> </span><span class="Statement">"</span><span class="Constant">/</span><span class="Statement">"</span><span class="Special"> </span><span class="Special">-f</span><span class="Special"> </span><span class="Constant">2</span><span class="Special">`</span>
<span class="Identifier">artist</span>=<span class="Special">`</span><span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="PreProc">$album</span><span class="Statement">"</span><span class="Constant"> </span><span class="Statement">|</span><span class="Special"> cut </span><span class="Special">-d</span><span class="Special"> </span><span class="Statement">"</span><span class="Constant">-</span><span class="Statement">"</span><span class="Special"> </span><span class="Special">-f</span><span class="Special"> </span><span class="Constant">1</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> </span><span class="Statement">sed</span><span class="Special"> </span><span class="Statement">'</span><span class="Constant">s/ $//</span><span class="Statement">'</span><span class="Special">`</span>
<span class="Statement">grep</span> <span class="Statement">"</span><span class="Constant">/</span><span class="PreProc">$album</span><span class="Statement">"</span> <span class="PreProc">$log</span> <span class="Statement">|</span> <span class="Statement">tail</span> <span class="Statement">-n</span> <span class="Constant">2</span> <span class="Statement">|</span> head <span class="Statement">-n</span> <span class="Constant">1</span>
<span class="Statement">echo</span>
<span class="Statement">fi</span>
<span class="Statement">grep</span> <span class="Statement">"</span><span class="Constant">/</span><span class="PreProc">$artist</span><span class="Constant"> - </span><span class="Statement">"</span> <span class="Statement">"</span><span class="PreProc">$list</span><span class="Statement">"</span> <span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/\/00\.m3u//</span><span class="Statement">'</span> <span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/\ /\\\ /g</span><span class="Statement">'</span> <span class="Statement">|</span>\
<span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/(/\\(/g</span><span class="Statement">'</span> <span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/)/\\)/g</span><span class="Statement">'</span> <span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">"</span><span class="Constant">s/'/</span><span class="Special">\\\'</span><span class="Constant">/g</span><span class="Statement">"</span> <span class="Statement">|</span>\
awk <span class="Statement">'</span><span class="Constant">{ print "grep "$0" mp3.list | sed \"s/^/ /\" |\</span>
<span class="Constant"> sed \"s/\\/00\\.m3u//\" | cat - </span><span class="Statement">'</span><span class="PreProc">$log</span><span class="Statement">'</span><span class="Constant"> | grep "$0"$ | tail -n 1" }</span><span class="Statement">'</span> <span class="Statement">|</span>\
awk <span class="Statement">'</span><span class="Constant">{ system($0) }</span><span class="Statement">'</span> <span class="Statement">|</span> tee /tmp/mp3rand<span class="Statement">-i</span>.tmp
<span class="Statement">exit</span> <span class="PreProc">$?</span>
<span class="Statement">fi</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># updatelog</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Identifier">updatelog()</span>
<span class="Identifier">{</span>
<span class="Identifier">jour</span>=`date +%F`
<span class="Identifier">heure</span>=`date +%R`
<span class="Identifier">last</span>=`<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="PreProc">$jour</span><span class="Constant"> </span><span class="PreProc">$heure</span><span class="Statement">"</span><span class="Constant"> </span><span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/-/ /g</span><span class="Statement">'</span> <span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/:/ /</span><span class="Statement">'</span>`
<span class="Identifier">prev</span>=`cat <span class="PreProc">$lastdate</span> <span class="Constant">2</span><span class="Statement">></span>/dev/null <span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/-/ /g</span><span class="Statement">'</span> <span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/:/ /</span><span class="Statement">'</span>`
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-n</span> <span class="Statement">"</span><span class="PreProc">$prev</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Identifier">i</span>=<span class="Constant">0</span>
<span class="Statement">for</span> a <span class="Statement">in</span> <span class="PreProc">$prev</span><span class="Statement">;</span> <span class="Statement">do</span>
prevtab<span class="Statement">[</span><span class="PreProc">$i</span><span class="Statement">]</span><span class="Statement">=</span><span class="Special">`</span><span class="Statement">echo</span><span class="Constant"> </span><span class="PreProc">$a</span><span class="Constant"> </span><span class="Statement">|</span><span class="Special"> awk </span><span class="Statement">'</span><span class="Constant">{ print $0+0 }</span><span class="Statement">'</span><span class="Special">`</span>
<span class="Statement">(</span><span class="PreProc">(</span>i++<span class="PreProc">)</span><span class="Statement">)</span>
<span class="Statement">done</span>
<span class="Identifier">i</span>=<span class="Constant">0</span>
<span class="Statement">for</span> a <span class="Statement">in</span> <span class="PreProc">$last</span><span class="Statement">;</span> <span class="Statement">do</span>
lasttab<span class="Statement">[</span><span class="PreProc">$i</span><span class="Statement">]</span><span class="Statement">=</span><span class="Special">`</span><span class="Statement">echo</span><span class="Constant"> </span><span class="PreProc">$a</span><span class="Constant"> </span><span class="Statement">|</span><span class="Special"> awk </span><span class="Statement">'</span><span class="Constant">{ print $0+0 }</span><span class="Statement">'</span><span class="Special">`</span>
<span class="Statement">(</span><span class="PreProc">(</span>i++<span class="PreProc">)</span><span class="Statement">)</span>
<span class="Statement">done</span>
<span class="Special">((</span>min <span class="Statement">=</span> (lasttab<span class="Statement">[</span><span class="Constant">0</span><span class="Statement">]</span> - prevtab<span class="Statement">[</span><span class="Constant">0</span><span class="Statement">]</span>) * <span class="Constant">525600</span> +
(lasttab<span class="Statement">[</span><span class="Constant">1</span><span class="Statement">]</span> - prevtab<span class="Statement">[</span><span class="Constant">1</span><span class="Statement">]</span>) * <span class="Constant">44640</span> +
(lasttab<span class="Statement">[</span><span class="Constant">2</span><span class="Statement">]</span> - prevtab<span class="Statement">[</span><span class="Constant">2</span><span class="Statement">]</span>) * <span class="Constant">1440</span> +
(lasttab<span class="Statement">[</span><span class="Constant">3</span><span class="Statement">]</span> - prevtab<span class="Statement">[</span><span class="Constant">3</span><span class="Statement">]</span>) * <span class="Constant">60</span> +
(lasttab<span class="Statement">[</span><span class="Constant">4</span><span class="Statement">]</span> - prevtab<span class="Statement">[</span><span class="Constant">4</span><span class="Statement">]</span>) <span class="Special">))</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-n</span> <span class="Statement">"</span><span class="PreProc">$min</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">if </span><span class="Special">((</span>min <span class="Statement"><</span> <span class="Constant">2</span><span class="Special">))</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">derniere selection il y a </span><span class="PreProc">$min</span><span class="Constant"> minute</span><span class="Statement">"</span>
<span class="Statement">else</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">derniere selection il y a </span><span class="PreProc">$min</span><span class="Constant"> minutes</span><span class="Statement">"</span>
<span class="Statement">fi</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">!</span> <span class="Statement">-f</span> <span class="PreProc">$log</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">touch</span> <span class="PreProc">$log</span>
<span class="Statement">elif</span> <span class="Special">((</span>min <span class="Statement"><</span> <span class="Constant">5</span><span class="Special">))</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">effacement de la derniere selection</span><span class="Statement">"</span>
<span class="Identifier">nl</span>=<span class="Special">`cat </span><span class="PreProc">$log</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> wc </span><span class="Special">-l</span><span class="Special">`</span>
<span class="Statement">if </span><span class="Special">((</span>nl <span class="Statement">></span> <span class="Constant">0</span><span class="Special">))</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Special">((</span>nl<span class="Statement">--</span><span class="Special">))</span>
head <span class="Statement">-n</span> <span class="PreProc">$nl</span> <span class="PreProc">$log</span> <span class="Statement">></span><span class="PreProc">$log</span>.tmp
<span class="Statement">mv</span> <span class="PreProc">$log</span>.tmp <span class="PreProc">$log</span>
<span class="Statement">fi</span>
<span class="Statement">fi</span>
<span class="Statement">fi</span>
<span class="Statement">fi</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="PreProc">$jour</span><span class="Statement">"</span><span class="Constant"> </span><span class="PreProc">$m3u</span><span class="Statement">"</span><span class="Constant"> </span><span class="Statement">|</span> <span class="Statement">sed</span> <span class="Statement">'</span><span class="Constant">s/\/00\.m3u//</span><span class="Statement">'</span> <span class="Statement">>></span><span class="PreProc">$log</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="PreProc">$last</span><span class="Statement">"</span><span class="Constant"> </span><span class="Statement">></span><span class="PreProc">$lastdate</span>
<span class="Identifier">}</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Comment"># main</span>
<span class="Comment"># ---------------------------------------------------------------------------- #</span>
<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-z</span> <span class="Statement">"</span><span class="PreProc">$1</span><span class="Statement">"</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Identifier">max</span>=<span class="Constant">0</span>
<span class="Identifier">m</span>=<span class="Special">`</span><span class="Statement">ls</span><span class="Special"> </span><span class="Statement">"</span><span class="PreProc">$dir</span><span class="Constant">/mp3</span><span class="Statement">"</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> </span><span class="Statement">grep</span><span class="Special"> part </span><span class="Statement">|</span><span class="Special"> </span><span class="Statement">tail</span><span class="Special"> </span><span class="Special">-n</span><span class="Special"> </span><span class="Constant">1</span><span class="Special">`</span>
<span class="Identifier">m</span>=<span class="Special">`</span><span class="Statement">echo</span><span class="Constant"> </span><span class="PreProc">${</span><span class="PreProc">m</span><span class="Statement">:4</span><span class="Statement">:2</span><span class="PreProc">}</span><span class="Constant"> </span><span class="Statement">|</span><span class="Special"> awk </span><span class="Statement">'</span><span class="Constant">{ print $0+0 }</span><span class="Statement">'</span><span class="Special">`</span>
<span class="Identifier">n</span>=<span class="Constant">0</span>
<span class="Statement">for</span> i <span class="Statement">in</span> <span class="PreProc">$weights</span><span class="Statement">;</span> <span class="Statement">do</span>
<span class="Statement">(</span><span class="PreProc">(</span>max <span class="Statement">=</span> max + i<span class="PreProc">)</span><span class="Statement">)</span>
<span class="Statement">(</span><span class="PreProc">(</span>n++<span class="PreProc">)</span><span class="Statement">)</span>
<span class="Statement">done</span>
<span class="Statement">if </span><span class="Special">((</span>n <span class="Statement">!=</span> m<span class="Special">))</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="Constant">les nombres de poids ne correspondent pas</span><span class="Statement">"</span>
<span class="Statement">exit</span> <span class="Constant">1</span>
<span class="Statement">fi</span>
<span class="Special">((</span>rand <span class="Statement">=</span> <span class="Constant">RANDOM</span> * max / <span class="Constant">32768</span> + <span class="Constant">1</span><span class="Special">))</span>
<span class="Identifier">part</span>=<span class="Constant">1</span>
<span class="Identifier">max</span>=<span class="Constant">0</span>
<span class="Statement">for</span> i <span class="Statement">in</span> <span class="PreProc">$weights</span><span class="Statement">;</span> <span class="Statement">do</span>
<span class="Statement">(</span><span class="PreProc">(</span>max <span class="Statement">=</span> max + i<span class="PreProc">)</span><span class="Statement">)</span>
<span class="Statement">if </span><span class="Special">((</span>rand <span class="Statement"><=</span> max<span class="Special">))</span><span class="Statement">;</span> <span class="Statement">then</span>
<span class="Statement">break</span><span class="Statement">;</span>
<span class="Statement">fi</span>
<span class="Statement">(</span><span class="PreProc">(</span>part++<span class="PreProc">)</span><span class="Statement">)</span>
<span class="Statement">done</span>
<span class="Identifier">part</span>=<span class="Statement">"</span><span class="Constant">part</span><span class="Statement">"</span><span class="Special">`</span><span class="Statement">printf</span><span class="Special"> %02d </span><span class="PreProc">$part</span><span class="Special">`</span>
<span class="Statement">grep</span> <span class="PreProc">$part</span> <span class="Statement">"</span><span class="PreProc">$list</span><span class="Statement">"</span> <span class="Statement">></span><span class="PreProc">$tmpfile</span>
<span class="Identifier">max</span>=<span class="Special">`cat </span><span class="PreProc">$tmpfile</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> wc </span><span class="Special">-l</span><span class="Special">`</span>
<span class="Special">((</span>num <span class="Statement">=</span> <span class="Constant">RANDOM</span> * max / <span class="Constant">32768</span> + <span class="Constant">1</span><span class="Special">))</span>
<span class="Identifier">m3u</span>=<span class="Special">`head </span><span class="Special">-n</span><span class="Special"> </span><span class="PreProc">$num</span><span class="Special"> </span><span class="PreProc">$tmpfile</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> </span><span class="Statement">tail</span><span class="Special"> </span><span class="Special">-n</span><span class="Special"> </span><span class="Constant">1</span><span class="Special">`</span>
<span class="Statement">rm</span> <span class="PreProc">$tmpfile</span>
<span class="Statement">else</span>
<span class="Identifier">m3u</span>=<span class="PreProc">$1</span>
<span class="Statement">fi</span>
updatelog
<span class="Identifier">m3u</span>=<span class="Special">`</span><span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">"</span><span class="PreProc">$dir</span><span class="Constant">/mp3/</span><span class="PreProc">$m3u</span><span class="Statement">"</span><span class="Constant"> </span><span class="Statement">|</span><span class="Special"> </span><span class="Statement">sed</span><span class="Special"> </span><span class="Statement">"</span><span class="Constant">s/'/</span><span class="Special">\\\\\'</span><span class="Constant">/g</span><span class="Statement">"</span><span class="Special">`</span>
<span class="Identifier">album</span>=<span class="Special">`</span><span class="Statement">tail</span><span class="Special"> </span><span class="Special">-n</span><span class="Special"> </span><span class="Constant">1</span><span class="Special"> </span><span class="PreProc">$log</span><span class="Special"> </span><span class="Statement">|</span><span class="Special"> cut </span><span class="Special">-d</span><span class="Special"> </span><span class="Statement">"</span><span class="Constant">/</span><span class="Statement">"</span><span class="Special"> </span><span class="Special">-f</span><span class="Special"> </span><span class="Constant">2</span><span class="Special">`</span>
<span class="Statement">grep</span> <span class="Statement">"</span><span class="Constant">/</span><span class="PreProc">$album</span><span class="Statement">"</span> <span class="PreProc">$log</span> | <span class="Statement">tail</span> <span class="Special">-n</span> <span class="Constant">2</span> | head <span class="Special">-n</span> <span class="Constant">1</span>
nyxmms2 <span class="Statement">stop</span>
nyxmms2 <span class="Statement">clear</span>
nyxmms2 addpls <span class="Statement">"</span><span class="PreProc">$m3u</span><span class="Statement">"</span>
nyxmms2 play
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->