автомогинтола, shuffle

Автор pa_, 30 сентября 2014, 11:21:42

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

pa_

Добрый день.

В штатной магнитоле нет ф-ции играть музыку в разнобой или не нашел =).
Набросал простенький скрипт с помощью CTRL+C\CTRL+V для перемешивания.
Заходим в папку с Вашим любимым исполнителем и запускаем.

~/.bash_aliases
alias mix="~/shell/mix.sh"


#! /bin/sh

N="7" # колво знаков в имени файла
T="mix" # временная папка
E="*.mp3" # расширение файла
P=`pwd` # текущий каталог
PT=`pwd`/$T # текущий каталог + временная папка

# если существует папка T удаляем
if [ -d "$PT" ]
then
  rm -r "$PT"
fi

# создаем пустую
mkdir "$PT"

# ищем все файлы E в директории где лежит скрипт
find "$P" -type f -name "$E" -print -exec cp -n {} "$PT" \;

# если существует папка T и она пустая
# ничего не выполняем и удаляем ее
if [ -d "$PT" ]
then
  if  [ $(find "$PT" -maxdepth 0 -type d -empty 2>/dev/null) ]
  then
    echo "$T is empty. Erase."
    rm -r "$PT"
    return 0
  fi
fi

# для всех файлов E даем случайные имена
for i in "$PT"/$E
do
  mv "$i" "$PT/$(cat /dev/urandom | tr -dc 'a-z' | head -c $((N))).mp3"
done


Всё, можно копировать на флешку.

Подправил, можно запускать через алиас

endru

я бы рекомендовал использовать полные пути в скриптах, вместо относительных.

pa_

почему ? не будет же такой "мобильности"

endru

проще указать нужный путь к директории при запуске скрипта, чем постоянно перемещать файлы в текущую директорию или сам скрипт.

pa_

можно и доработать мол если есть аргументы или брать то что забито в программе и текущий каталог
у меня путь к папке /srv/ftp/www/music/... так что лень каждый раз набирать =)
пользуюсь mc + алиасы для перехода сразу в папку music (cdm) book (cdb) iso (cdi) и т.д.
скрипт можно также повесить на алиас, выбрал что хочешь сегодня слушать и запустил, только тогда надо будет приделать `pwd` за место "."

проигрывателем тоже пользуюсь в виде алиаса =) в mc выбрал папку или по жанру или по исполнителю и запустил

## mplayer
function mpp() {
  find "`pwd`" -type f -iname "*.mp3" -o -name "*.flac" -o -name "*.ogg" -o -name "*.m4a" -o -name "*.avi" -o -name "*.mkv" | sort -R > /var/tmp/plst.tmp
  mplayer -shuffle -playlist /var/tmp/plst.tmp
  rm /var/tmp/plst.tmp
}
function mp1() {
  find "`pwd`" -type f -iname "*.mp3" -o -name "*.flac" -o -name "*.ogg" -o -name "*.m4a" -o -name "*.avi" -o -name "*.mkv" | sort -g > /var/tmp/plst.tmp
  mplayer -playlist /var/tmp/plst.tmp
  rm /var/tmp/plst.tmp
}

ferum

Endru, Вижу вы разбираетесь в вопросе шел программирования. Если будет время пожалуйста напишите для нас форумчан доходчивую хоутушку а то в официальной документации как то всё не совсем доходчиво ::)
Русские дебианщики против цифрового слабоумия !

yura_n

Цитата: ferum от 30 сентября 2014, 12:44:23а то в официальной документации как то всё не совсем доходчиво ::)
Я даже не уверен, есть ли люди, которые поняли хотя бы треть, прочитав только man bash. Этот мануал то ли торчками с большим стажем написан, то ли инопланетянами. ;D А его порой еще и переводят буквально. ;D

ferum

 ??? А я грешным делом думал что один такой тупой :D
Русские дебианщики против цифрового слабоумия !