<!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">&quot;</span><span class="Constant">8 7 6 5 4 3 2 6 4 2 3 2 1 3 2 1</span><span class="Statement">&quot;</span>

<span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-n</span> <span class="Statement">&quot;</span><span class="PreProc">$MP3DIR</span><span class="Statement">&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Identifier">dir</span>=<span class="Statement">&quot;</span><span class="PreProc">$MP3DIR</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$1</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">&quot;-h&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    cat <span class="Statement">&lt;&lt;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">[&quot;path/00.m3u&quot;] 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">&quot;</span><span class="PreProc">$dir</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$dir</span><span class="Constant"> n'est pas un repertoire</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$dir</span><span class="Constant">/mp3</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$dir</span><span class="Constant">/mp3 n'est pas un repertoire</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$1</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">&quot;-r&quot;</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">&quot;</span><span class="PreProc">$list</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">generation du fichier </span><span class="PreProc">$list</span><span class="Constant"> ...</span><span class="Statement">&quot;</span>
    <span class="Statement">cd</span> <span class="Statement">&quot;</span><span class="PreProc">$dir</span><span class="Constant">/mp3</span><span class="Statement">&quot;</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">&gt;</span><span class="Statement">&quot;</span><span class="PreProc">$list</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$1</span><span class="Statement">&quot;</span> <span class="Statement">=</span> <span class="Constant">&quot;-i&quot;</span> <span class="Statement">]</span><span class="Statement">;</span> <span class="Statement">then</span>
    <span class="Statement">cd</span> <span class="Statement">&quot;</span><span class="PreProc">$dir</span><span class="Constant">/mp3</span><span class="Statement">&quot;</span>
    <span class="Statement">if </span><span class="Statement">[</span> <span class="Statement">-n</span> <span class="Statement">&quot;</span><span class="PreProc">$2</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">/</span><span class="PreProc">$2</span><span class="Constant"> -</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">/</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$2</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">/</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$album</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">-</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">/</span><span class="PreProc">$album</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">/</span><span class="PreProc">$artist</span><span class="Constant"> - </span><span class="Statement">&quot;</span> <span class="Statement">&quot;</span><span class="PreProc">$list</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">s/'/</span><span class="Special">\\\'</span><span class="Constant">/g</span><span class="Statement">&quot;</span> <span class="Statement">|</span>\
      awk <span class="Statement">'</span><span class="Constant">{ print &quot;grep &quot;$0&quot; mp3.list | sed \&quot;s/^/           /\&quot; |\</span>
<span class="Constant">      sed \&quot;s/\\/00\\.m3u//\&quot; | cat - </span><span class="Statement">'</span><span class="PreProc">$log</span><span class="Statement">'</span><span class="Constant"> | grep &quot;$0&quot;$ | tail -n 1&quot; }</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">&quot;</span><span class="PreProc">$jour</span><span class="Constant"> </span><span class="PreProc">$heure</span><span class="Statement">&quot;</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">&gt;</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">&quot;</span><span class="PreProc">$prev</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$min</span><span class="Statement">&quot;</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">&lt;</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">&quot;</span><span class="Constant">derniere selection il y a </span><span class="PreProc">$min</span><span class="Constant"> minute</span><span class="Statement">&quot;</span>
            <span class="Statement">else</span>
                <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="Constant">derniere selection il y a </span><span class="PreProc">$min</span><span class="Constant"> minutes</span><span class="Statement">&quot;</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">&lt;</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">&quot;</span><span class="Constant">effacement de la derniere selection</span><span class="Statement">&quot;</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">&gt;</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">&gt;</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">&quot;</span><span class="Constant"> </span><span class="PreProc">$m3u</span><span class="Statement">&quot;</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">&gt;&gt;</span><span class="PreProc">$log</span>
    <span class="Statement">echo</span><span class="Constant"> </span><span class="Statement">&quot;</span><span class="PreProc">$last</span><span class="Statement">&quot;</span><span class="Constant"> </span><span class="Statement">&gt;</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">&quot;</span><span class="PreProc">$1</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$dir</span><span class="Constant">/mp3</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">les nombres de poids ne correspondent pas</span><span class="Statement">&quot;</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">&lt;=</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">&quot;</span><span class="Constant">part</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$list</span><span class="Statement">&quot;</span> <span class="Statement">&gt;</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">&quot;</span><span class="PreProc">$dir</span><span class="Constant">/mp3/</span><span class="PreProc">$m3u</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">s/'/</span><span class="Special">\\\\\'</span><span class="Constant">/g</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">/</span><span class="Statement">&quot;</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">&quot;</span><span class="Constant">/</span><span class="PreProc">$album</span><span class="Statement">&quot;</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">&quot;</span><span class="PreProc">$m3u</span><span class="Statement">&quot;</span>
nyxmms2 play
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->