Этот код Perl может помочь:
@files = grep {-f} glob "*"; #List files in the current directory
%files;
for(@files)
{
chomp (my $size = \`du -h \"$_\"`);
$size=~ s/\s+.*//; #Remove the file name from the output of du
$files{$size}++; # Add an entry to the hash
}
print "Size,Count\n"; # Print a header
print "${\_},$files{$_}\n" for(keys %files); # Print info in CSV format
Отметьте следующее:
du
вместо -s
оператор Perl, чтобы иметь человекочитаемый вывод.glob "*"
glob "$ARGV[0]/*"
и предоставьте название своего необходимого каталога как параметр командной строки.Если Вы хотите перечислить содержание нескольких каталогов в пакетном задании, можно сохранить этот код как list_dir.pl
и имейте обертку удара, которая делает что-то вроде этого:
list_dir.pl dir1 > dir1_list.csv
list_dir.pl dir2 > dir2_list.csv
С другой стороны, код может быть далее изменен, чтобы принять несколько каталогов как аргументы и разветвить процесс для каждого каталога, который он ищет.
Я предполагаю, что Вы хотите файлы в текущем каталоге только один уровень глубоко (никакая рекурсия).
Вы можете Скачать видео и / или только аудио, а затем посмотреть / прослушивать их, используя YouTube-DL
. Сценарий написан в Python и использует FFMPEG
.
$ youtube-dl --help
Usage: youtube-dl [options] url [url...]
Options:
General Options:
-h, --help print this help text and exit
--version print program version and exit
-U, --update update this program to latest version.
Make sure that you have sufficient
permissions (run with sudo if needed)
...
...
Для загрузки видео вы просто даете ему URL-адрес на странице, которую вы хотите, чтобы видео включена, и скрипт делает остальное:
$ youtube-dl https://www.youtube.com/watch?v=OwvZemXJhF4
[youtube] Setting language
[youtube] OwvZemXJhF4: Downloading webpage
[youtube] OwvZemXJhF4: Downloading video info webpage
[youtube] OwvZemXJhF4: Extracting video information
[youtube] OwvZemXJhF4: Encrypted signatures detected.
[youtube] OwvZemXJhF4: Downloading js player 7N
[youtube] OwvZemXJhF4: Downloading js player 7N
[download] Destination: Joe Nichols - Yeah (Audio)-OwvZemXJhF4.mp4
[download] 100% of 21.74MiB in 00:16
вы можете использовать VLC
или MPLayer
, чтобы Посмотрите эти локально:
$ vlc "Joe Nichols - Yeah (Audio)-OwvZemXJhF4.mp4"
VLC media player 2.1.5 Rincewind (revision 2.1.4-49-gdab6cb5)
[0x1cd1118] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Fontconfig warning: FcPattern object size does not accept value "0"
Fontconfig warning: FcPattern object size does not accept value "0"
Fontconfig warning: FcPattern object size does not accept value "0"
Fontconfig warning: FcPattern object size does not accept value "0"
Я нашел этот статью в блоге под названием: на ASCII, YouTube и отпуске , который демонстрирует метод Что я обсуждал в чате, в основном с использованием YouTube-DL
как «Backend», который может выполнить загрузку потока YouTube, а затем перенаправляя его в какое-то другое приложение.
Эта статья показывает, что это делается с MPlayer
:
$ youtube-dl http://www.youtube.com/watch?v=OC83NA5tAGE -o - | \
mplayer -vo aa -monitorpixelaspect 0.5 -
Видео, загруженное YouTube-DL
, перенаправляется через stdout выше, -
Отказ Здесь есть демонстрация эффекта .
При установке дополнительных библиотек видео можно дополнительно улучшить видео ASCII.
Я нашел этот трюк, который позволяет видео в xterm
в спуске О'Рейли под названием: Смотреть видео в Ascii Art .
$ xterm -fn 5x7 -geometry 250x80 -e "mplayer -vo aa:driver=curses j.mp4
Вышеуказанные результаты в открываются окна
, где открываются видео.
Так что я подумал, почему бы не поставить арахисовое масло и шоколад вместе, как это:
$ xterm -fn 5x7 -geometry 250x80 -e \
"youtube-dl http://www.youtube.com/watch?v=OC83NA5tAGE -o - | \
mplayer -vo aa:driver=curses -"
Это почти работает! Я не уверен, почему видео не может играть в окне, но казалось бы, что он должен быть в состоянии. Окно подводится и начинает играть, но затем закрывается. Я вижу видео на короткое время несколько секунд, а потом ничего.
Возможно, вышеупомянутое будет ближе к вашему окончательному решению, или, возможно, просто нужно немного настроить на опции.
Если у вас установлено LibCACA
(окрашенная версия AALIB
), и вы уменьшаете размер шрифта в Thnome-Terminal
Что-то действительно маленькое, как сказать, 3, следующая команда будет отображаться намного лучше выглядеть видео ASCII непосредственно внутри терминала:
$ CACA_DRIVER=ncurses mplayer -vo caca video.mp4
кажутся, что выбор терминала может иметь большое значение относительно того, является ли MPlayer
может играть непосредственно внутри терминала или открывает ли он отдельное окно. Кэширование тоже на Mplayer
создала резкую разницу в том, чтобы иметь возможность играть непосредственно на терминалах.
Используя эту команду, я смог играть в Terminator
, по крайней мере, для первого 1/4 видео, прежде чем он вырезать:
$ youtube-dl http://www.youtube.com/watch?v=OC83NA5tAGE -o - | \
mplayer -cache 32767 -vo aa:driver=curses -
Цветная версия использовала эту команду:
$ youtube-dl http://www.youtube.com/watch?v=OC83NA5tAGE -o - | \
CACA_DRIVER=ncurses mplayer -cache 64000 -vo caca -
эти Такие же команды могут играть в Gnome-Terminal
& Xterm
.
Примечание: Это (слева направо) Xterm
, ,
, Gnome-Terminal
, а терминология
.
Есть урок для этого на YouTube:
https://www.youtube.com/watch?v=qcuq0_ny3xk
Согласно этому видео, следующее должно работать:
mplayer -cookies -cookies-file /tmp/cook.txt $(youtube-dl -g --cookies /tmp/cook.txt "https://www.youtube.com/watch?v=QCuq0_nY3Xk")
Вы можете создать простую функцию для этой цели:
playtube () {
mplayer -cookies -cookies-file /tmp/cook.txt $(youtube-dl -g --cookies /tmp/cook.txt "$1")
}
Итак, с Терминологией (кстати, вероятно, самым лучшим, что когда-либо случалось с эмулятором терминала) на момент написания , следующие работы:
ytplay() (
init() if [ "${#1}" -gt 0 ] && i=$? du= f=
then durl \! \" \# \$ \% \& \' \( \) \* \
\+ \, \/ \: \; \= \? \@ \[ \]
: >"${f:=${2:-/tmp/vid}.$(
durl "$1" 's/.*mime=[^/]*.\([^&]*\).*/\1/'
)}"
init() { loop; }
else ! echo 'NO LINK SPECIFIED!' >&3
fi
durl() if [ "${#du}" -eq 0 ]
then du=$(for c do printf 's/%%%X/\\%s/g;' "'$c" "$c"; done)
else curl -s "$1" | { shift
sed '/.*url_encoded_fmt_stream_map[^,]*url=/!d
s///;s/,.*//;s/\\u0026/\&/g;'"$du$*"; }
fi
loop() if [ "$((i=$i+1))" -le 5 ] &&
sleep "$(($i*2))"
then play || kill "$pid" || :
else ! echo 'ERROR RETRIEVING VIDEO!' >&3
fi
play() if [ -s "$f" ]
then printf '\033}bt%s\0' "$f"; exit
fi
while init "$@" || exit
do curl -s "$(durl "$1")" >"$f" & pid=$!
done 3>&2 2>/dev/null
)
Специфический бит терминологии
- это блок , затем
в play ()
- строка printf \ 033} ...
. Терминология
допускает расширенные escape-символы терминала для вывода носителя на экран - вроде цветов подсказок, но также видео высокого разрешения и, в основном, всего, что вы хотите.
Остальное немного curl | sed
скрипт, который:
ytplay 'https://www.youtube.com/watch?v = $ {id} '
и так далее ... curl "$ yturl" | grep url_encoded_fmt_stream_map
, чтобы увидеть весь блок. grep
выше, вы найдете список в поле "
разделенные кавычками ... stream_map:"
поле. % [[: hexdigit:]] \ {2 \}
на рабочие ссылки.
/ tmp / vid. $ {Mime-type }
, но если ytplay
вызывается со вторым аргументом, он интерпретирует это как целевое имя файла для загрузки, при этом добавляя расширение в соответствии с типом mime. терминологию
поместить мультимедиа в фоновый режим сейчас выход из терминала, иначе он просто сдается и выдает сообщение об ошибке, написанное заглавными буквами.
\ 033} bt [LINK / FILE] \ 0
для полноэкранного режима играть. pn
выводит его в новое окно. Есть и другие для геометрического ограничения игровой области - например, только для части окна. Он прошел лишь немного больше, чем очень минимальное тестирование, но до сих пор работал для каждой ссылки без сбоев, кроме одной - и потому что мне не было интересно смотреть на ту, которая не работала play Я не пытался выяснить, почему.
Хотя это сработало для всех из них, не обязательно воспроизводить каждый - и это потому, что сначала я слепо добавлял .mp4
к целевому файлу, не проверяя его правильность. Возможно, то, что я раньше не рассматривал, тоже было только этим. В любом случае, я изменил его, чтобы справиться с этим.
Как я упоминал ранее, единственный специфический бит терминологии
находится в самой последней функции - play ()
- и поэтому вы можете легко изменить это, чтобы делать все, что захотите, с помощью загрузка / скачивание видеофайла - например, использование его с библиотеками CACA mplayer
в другом терминале, или вывод его в окно vlc
или что-то еще. Но если вы любите себя, вы посмотрите это в высоком разрешении в терминологии
.
И, наконец, это обычно очень быстро - мои скорости увеличивали мою пропускную способность до сих пор при каждой попытке, но терминология
не требует всего файла все равно начать играть в нее.
Вот это работает:
Изhttps://github.com/mps-youtube/mps-youtube
sudo docker run --device /dev/snd -it --rm --name mpsyt rothgar/mpsyt