Мне нужна команда, которая играет случайный mp3 из каталога. До сих пор я попробовал
ls *.mp3 | shuf -n 1 | omxplayer
Каждый различный плеер просто действует как он, не получил имя файла и выкладывает справку. Спасибо за справку!
Эта команда должна работать в ударе. Вы могли бы хотеть выполнить его от того, чтобы быть в родительской папке того, где Ваши файлы MP3 в.
find . -type f -name '*.mp3' | shuf -n 1 | xargs -d "\n" omxplayer
или замена omxplayer
с Вашим любимым медиаплеером.
Или другая команда, которую работы используют xdg-open
для использования плеера по умолчанию как @muru, прокомментировал:
xdg-open "$(find . -type f -name '*.mp3' | shuf -n 1)"
ПРИМЕЧАНИЕ: , Если Вы удаляете -n 1
из эти shuf
, затем это будет играть все файлы MP3 в переставленном порядке. Но это требует использования фактического плеера а не xdg-open
. И это только работает в первой команде здесь. Просто протестированный это.
Во-первых, мне не нравится Bash. Передача по каналу путей к процессам не так хороша, и вызывает все виды странности при отсутствии выполнения 'именно так'. Однако многие вещи, которые Вы пытаетесь сделать в Bash, которые не добры с работой или работой, могут быть, покончили (к сожалению), больше кода, но может работать способ, которым Вы хотите это к на других языках.
Так, несколько надоевшись и заинтересованный созданием чего-то для этого, я пошел и записал (очень грубый) сценарий Python, который может сделать то, что Вы ищете. Это может выглядеть сложным, но это работает вполне прилично, и я поместил комментарии везде, где или объяснили это ниже.
Примечание: Я только протестировал это с плеером VLC и Rhythmbox в моей системе, и с xdg-open
который открывает обработчик GUI по умолчанию для данного файла. В моем случае VLC является значением по умолчанию это xdg-open
вызовы. Если Вы находитесь на GUI и просто хотите использовать Медиаплеер по умолчанию для файла MP3, использовать xdg-open
для "плеера".
Требования пакета к Вашей системе:
python
(Python 2.6 или выше, но не Python 3)python-dev
(Важные библиотеки Python)Процесс установки сценария:
Едва ли много работы здесь. Но сделать это более простым, выполните эти шаги:
bin
папка в Вашем корневом каталоге: mkdir /home/$USER/bin
cd /home/$USER/bin
randommp3
. Копия-и-вставка код от раздела "Code/Script" ниже в этот файл с текстовым редактором. Сохраните сказал файл.chmod +x /home/$USER/bin/randommp3
oxmplayer
был бы тем, вместо чего Вы поместите player
когда Вы выполняете файл./home/$USER/Music
(где $USER
в настоящее время входил в систему пользователь), затем также необходимо указать полный путь к каталогу с --dir
аргумент (или один из его псевдонимов, как объяснено в "использовании" разделяют ниже). Если путь к папке содержит какие-либо пробелы вообще, необходимо перенести его в одинарные кавычки (например, для каталога "My Music" в данном пути, Вы ввели бы его как /path/to/My Music
к --dir
аргумент).Выполнение в качестве примера:
Откройте случайный файл MP3 от папки Music пользователя в их Корневом каталоге в Плеере VLC GUI
randommp3 vlc-wrapper
Откройте случайный файл MP3 от внешнего диска под названием "MusicDrive", смонтированный в Music Drive
в /media
папка, в названном медиаплеере oxmplayer
randommp3 --dir '/media/Music Drive' oxmplayer
Использование
randommp3 [-h] [--dir DIRPATH] player
Open a random MP3 in the player of choice, or the default player
positional arguments:
player The executable name of the media player to open the
MP3 with. If none specified, uses the system default
player.
optional arguments:
-h, --help show this help message and exit
--dir DIRPATH, --directory DIRPATH, --music-dir DIRPATH
The path to the directory where your music is stored.
If the path has spaces, wrap the entire path in
single-quotes ('/home/ubuntu/My Music/' for example).
If not specified, the current user's Music directory
in their /home/ folder is used.
Код: (или ссылка, которую можно сохранить, если Вы действительно настолько ленивы),
#!/usr/bin/python
import getpass
import subprocess as sp
import os
import glob
import random
import argparse
if __name__ == "__main__":
# Parse arguments to the script
argparser = argparse.ArgumentParser(description="Open a random MP3 in the player of choice, or the default player",
add_help=True)
argparser.add_argument('--dir', '--directory', '--music-dir', dest='dirpath', type=str,
default=str('/home/' + getpass.getuser() + '/Music'), required=False,
help="The path to the directory where your music is stored. If the path has spaces, wrap the "
"entire path in single-quotes ('/home/ubuntu/My Music/' for example). If not specified, "
"the current user's Music directory in their /home/ folder is used.")
argparser.add_argument('player', type=str, help="The executable name of the media player "
"to open the MP3 with. If none specified, "
"uses the system default player.")
# Using the above 'argparser' items, get the arguments for what we're going to be using.
args = argparser.parse_args()
# Gp to the directory your music is in.
os.chdir(args.dirpath)
mp3s = glob.glob('*.mp3')
# Modify the directory path to make sure we have the trailing slash
dirpath = args.dirpath
if dirpath[-1] not in '/\\':
dirpath += '/'
# Actually open the MP3 file, and /dev/null to suppress output messages from the process.
DEV_NULL = open(os.devnull, 'w')
execpath = [args.player, '%s%s' % (dirpath, str(random.choice(mp3s)))]
sp.Popen(execpath, stdout=DEV_NULL, stderr=DEV_NULL)