60行Shell代码实现在命令行中优雅地听歌

博主通过60行Shell代码创建了一个简单的命令行音乐播放器,利用macOS的afplay命令,实现了随机播放、后台播放、关键词检索歌曲和自动播放下一首等功能。通过定义函数和利用grep、wait等命令解决了连续切歌的随机性问题,增强了播放器的交互性和实用性。
摘要由CSDN通过智能技术生成

play_music_in_terminal

本文也发在了我的新个人博客上了,可以点击下面的链接获取更好的阅读体验:

60行Shell代码实现在命令行中优雅地听歌

0. 起因

起因就是对探索新歌失去了兴趣,并且觉得各种音乐播放软件都不怎么好用,而且懒癌发作,觉得写代码的时候想要换歌还要切换到音乐播放器再切回来实在太烦了。于是我把自己喜欢听的歌都下载下来了,放到一个文件夹里,准备用终端播放。整个过程非常简单,我所需要的只是一个想法和几行代码,迭代几次就搞定了。

1. 几次迭代

查了一下网上所谓的终端音乐播放器,似乎都不怎么样,有些还写了巨丑无比的UI,在命令行里画UI是个需要taste的事,画不好就会很丑,显然我不需要这些东西。找着找着,发现macOS上本来就有个命令行播放器,叫afplay,用法也很简单afplay后面加文件名就OK了,我想了想就用它了吧。

一开始想要的功能很简单,我需要方便地随机播放文件夹下的所有歌曲。我想了想,在.zshrc里写下了如下代码:

BYel='\e[0;33m';
function m() {
    m_path=~/Music/

    song_num="$(ls $m_path | wc -l)"                 # Total number of songs
    timestamp=$(date +%s)                       # Timestamp as millsecond, e.g. 1523305473
    song_index=$(($timestamp%$song_num+1))      # Generate a random song index

    song="$(ls $m_path | sed -n "$song_index"p)"     # Get the name of the certain song
    echo -e "${BYel}$song"
    afplay "$m_path$song"                            # Play it!
}

这样的话࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值