m4l 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #!/bin/bash
  2. #---------------HEADER--------------------------------------------------------------------|
  3. #AUTOR:
  4. # Jefferson Rocha <lrcjefferson@gmail.com>
  5. #
  6. #PROGRAMA:
  7. # M4L - Music for life.
  8. #
  9. #DESCRIÇÃO:
  10. # Tocador de música completo via CLI, utilizando o mpg123 como base.
  11. # Tem como objetivo ser simples/minimalista e agradável, fácil de usar.
  12. #
  13. #LICENSE
  14. # M4L is licensed under the GNU Lesser/Library General Public License, LGPL, version 2.1
  15. # mpg123 is licensed under the GNU Lesser/Library General Public License, LGPL, version 2.1
  16. #
  17. #CHANGELOG:
  18. # (Versão 1.0b) - Jefferson Rocha
  19. # -Lançado programa em versão beta
  20. #
  21. # (Versão 1.1) - Jefferson Rocha
  22. # -Arrumado e melhorado Cabeçalho
  23. # -Adicionado função de verificação de parâmetro nulo
  24. # -Adicionado ajuda em linha.
  25. # -Adicionado parâmetro --stereo no mpg123
  26. # -Adicionado parâmetro -C (controle keys) no mpg123
  27. # -Trocado sáida de erro /dev/null por 2>&- no tocador mpg123
  28. # -Adicionado Animação (Espectrum) enquanto toca a música.
  29. # -Adicionado função para centralizar logo de acordo com a tela.
  30. # -Retirado subtitulo que ficava após o logo.
  31. # -Retirado váriaveis (mover e mover_sub).
  32. #-----------------------------------------------------------------------------------------|
  33. #-----------------------(VÁRIAVEIS GLOBAIS DO PROGRAMA)
  34. # Configurações--!
  35. programa="M4L Player V1.1"
  36. TOCADOR="mpg123 --title --stereo -C" # tocador
  37. # Testes--!
  38. mpg_existe=$(which mpg123)
  39. # Cores--!
  40. bold="\033[1m"
  41. a="\033[36;40;1m" # cor legenda/opções
  42. f="\033[m" # fecha cores
  43. rosa="\033[35;1m" # Rosa
  44. vermelho="\033[31;1m" # Vermelho
  45. #----------------------------------------------!
  46. #-----------------------(FUNÇÕES)
  47. variavel_nula() {
  48. [ "$param1" ] || {
  49. echo -e "\t$rosa Ops. Selecione uma música rapaz!$f"
  50. }
  51. }
  52. # agora o logo fica no centro!
  53. centro() {
  54. local cent=$(tput cols)
  55. local centralizando=$(($cent/2))
  56. printf "\t%*s\n" $centralizando " M4L - PLAYER "
  57. }
  58. espectrum() (
  59. # helice, executado em segundo plano,
  60. # enquanto rola a música.
  61. while :; do
  62. for a in / - \\ \|; do
  63. echo -ne "\b$a"
  64. done
  65. done & "$@"
  66. kill $!
  67. echo
  68. )
  69. #-------------------------------!
  70. #-----------------------(TESTES INICIAIS)
  71. # mpg123 existe no sistema?
  72. # se não existir instala vagabundo riaria
  73. [ "$mpg_existe" ] || {
  74. echo -e "$vermelho\tVocê deve instalar o mpg123 para continuar.$f"
  75. exit 1
  76. }
  77. #---------------------------------------!
  78. # Inicio programa
  79. clear; centro # chama logo do programa
  80. while (true); do
  81. read -ep $'\033[34;1m| ♫ | \033[m' param param1
  82. case $param in
  83. #----Opções do player
  84. play|tocar)
  85. variavel_nula # sem música ?
  86. espectrum eval $TOCADOR "$param1" 2>&- ;;
  87. playlist)
  88. read -ep $'\033[36;40;1mCaminho completo da pasta:\033[m\n' param1
  89. variavel_nula # sem música ?
  90. espectrum eval $TOCADOR "$param1"*.mp3 2>&- ;;
  91. #----Opções navegação
  92. licença|license) echo -e "$vermelho M4L is licensed under the GNU Lesser/Library General Public License, LGPL, version 2.1
  93. mpg123 is licensed under the GNU Lesser/Library General Public License, LGPL, version 2.1$f" ;;
  94. sair|quit) exit 0 ;;
  95. cd) cd $param1 ;;
  96. pwd) pwd ;;
  97. ls|lista) ls --color ;;
  98. *|ajuda|help)
  99. echo -e "
  100. $bold Comandos utilizados em linha:$f
  101. $vermelho cd$f = Para navegar até uma pasta específica
  102. $vermelho ls/lista$f = Para listar todos arquivos em uma pasta
  103. $vermelho pwd$f = Para saber em que diretório está.
  104. $vermelho play/tocar$f = Toca uma música, desde que esteja na pasta.
  105. $vermelho playlist$f = Selecione uma pasta com todas as músicas.
  106. $vermelho sair/quit$f = Para sair do M4L
  107. $bold Funçoes do M4L:$f
  108. $vermelho q$f = Para sair da música/playlist.
  109. $vermelho ESPAÇO$f = Para pausar e voltar a música.
  110. $vermelho f$f = Próxima música.
  111. $vermelho d$f = Volta a música anterior.
  112. $vermelho +$f = Aumenta volume da música.
  113. $vermelho -$f = Diminui o volume da música.
  114. $vermelho .$f = Pula de 1 em 1 segundo.
  115. $vermelho ,$f = Volta musica de 1 em 1 segundo.
  116. "
  117. esac
  118. done # Fecha while principal