我通过自己写的叫作Mocp的脚本调用moc,感觉更方便了...那样当然是可以,可是就需要再弄一个脚本去关闭moc,不如在moc里直接用shift+q退出方便。我先去试试moc的config。最近在看moc的源码,不过我太菜了,看的挺吃力的。
终于实现了 mocp 的随机播放
- 潇洒走一回
- 帖子: 735
- 注册时间: 2009-05-20 21:43
Re: 终于实现了 mocp 的随机播放
上次由 潇洒走一回 在 2009-10-31 23:56,总共编辑 1 次。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 终于实现了 mocp 的随机播放
贴来瞧瞧潇洒走一回 写了:我通过自己写的叫作Mocp的脚本调用moc,感觉更方便了...
- photor
- 论坛版主
- 帖子: 11004
- 注册时间: 2008-04-26 12:41
Re: 终于实现了 mocp 的随机播放
行不通,一旦你用mocp -p的话,就是从播放列表的第一首歌开始播放了潇洒走一回 写了:通过这个方式记住上次未完的歌曲是行不通的,cat lastsong | xargs mocp --playit这条命令会在后台播放lastson,它不会占用shell,所以紧接着mocp --next又执行了,事实上,上次的歌曲根本没播放...所以还得调用mocp -i提取lastsong的时长,playit执行后,要sleep那个时长的时间,然后继续,当然还可以绕一下,使用mplayer来播放上次的歌曲,它是在前台运行的,把歌曲播放玩之后才交出控制权,所以可以把mocp -p写在mplayer $lastsong后面...
我说的两种方式,我都通过bash实现过,但是衔接的不太好...加上我对该功能不感兴趣,我在我个人的控制mocp播放的脚本中剔除了该功能

- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 终于实现了 mocp 的随机播放
没有用 mocp -p 啊,用的是 --playit,又叫 -lphotor 写了:行不通,一旦你用mocp -p的话,就是从播放列表的第一首歌开始播放了潇洒走一回 写了:通过这个方式记住上次未完的歌曲是行不通的,cat lastsong | xargs mocp --playit这条命令会在后台播放lastson,它不会占用shell,所以紧接着mocp --next又执行了,事实上,上次的歌曲根本没播放...所以还得调用mocp -i提取lastsong的时长,playit执行后,要sleep那个时长的时间,然后继续,当然还可以绕一下,使用mplayer来播放上次的歌曲,它是在前台运行的,把歌曲播放玩之后才交出控制权,所以可以把mocp -p写在mplayer $lastsong后面...
我说的两种方式,我都通过bash实现过,但是衔接的不太好...加上我对该功能不感兴趣,我在我个人的控制mocp播放的脚本中剔除了该功能
- photor
- 论坛版主
- 帖子: 11004
- 注册时间: 2008-04-26 12:41
Re: 终于实现了 mocp 的随机播放
我是说的潇洒走一回的方案,你那个mocp -l更行不通,你试验一下就知道了lilydjwg 写了:没有用 mocp -p 啊,用的是 --playit,又叫 -lphotor 写了:行不通,一旦你用mocp -p的话,就是从播放列表的第一首歌开始播放了潇洒走一回 写了:通过这个方式记住上次未完的歌曲是行不通的,cat lastsong | xargs mocp --playit这条命令会在后台播放lastson,它不会占用shell,所以紧接着mocp --next又执行了,事实上,上次的歌曲根本没播放...所以还得调用mocp -i提取lastsong的时长,playit执行后,要sleep那个时长的时间,然后继续,当然还可以绕一下,使用mplayer来播放上次的歌曲,它是在前台运行的,把歌曲播放玩之后才交出控制权,所以可以把mocp -p写在mplayer $lastsong后面...
我说的两种方式,我都通过bash实现过,但是衔接的不太好...加上我对该功能不感兴趣,我在我个人的控制mocp播放的脚本中剔除了该功能
上次由 photor 在 2009-10-31 18:39,总共编辑 1 次。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 终于实现了 mocp 的随机播放
还是没看明白和后台有什么关系。最后由于通信关系让中间休息一秒足够了。潇洒走一回 写了:通过这个方式记住上次未完的歌曲是行不通的,cat lastsong | xargs mocp --playit这条命令会在后台播放lastson,它不会占用shell,所以紧接着mocp --next又执行了,事实上,上次的歌曲根本没播放...所以还得调用mocp -i提取lastsong的时长,playit执行后,要sleep那个时长的时间,然后继续,当然还可以绕一下,使用mplayer来播放上次的歌曲,它是在前台运行的,把歌曲播放玩之后才交出控制权,所以可以把mocp -p写在mplayer $lastsong后面...
我说的两种方式,我都通过bash实现过,但是衔接的不太好...加上我对该功能不感兴趣,我在我个人的控制mocp播放的脚本中剔除了该功能
我试了一下,问题在于文件名传递不成功(可能是最后的换行符的关系)。如果真是这样,可能最方便的办法是去改源代码了。
- photor
- 论坛版主
- 帖子: 11004
- 注册时间: 2008-04-26 12:41
Re: 终于实现了 mocp 的随机播放
不但是文件名传递的问题,实际上mocp --next会反复播放你mocp -l的那首歌,而不是到播放列表中的下一首歌lilydjwg 写了:还是没看明白和后台有什么关系。最后由于通信关系让中间休息一秒足够了。潇洒走一回 写了:通过这个方式记住上次未完的歌曲是行不通的,cat lastsong | xargs mocp --playit这条命令会在后台播放lastson,它不会占用shell,所以紧接着mocp --next又执行了,事实上,上次的歌曲根本没播放...所以还得调用mocp -i提取lastsong的时长,playit执行后,要sleep那个时长的时间,然后继续,当然还可以绕一下,使用mplayer来播放上次的歌曲,它是在前台运行的,把歌曲播放玩之后才交出控制权,所以可以把mocp -p写在mplayer $lastsong后面...
我说的两种方式,我都通过bash实现过,但是衔接的不太好...加上我对该功能不感兴趣,我在我个人的控制mocp播放的脚本中剔除了该功能
我试了一下,问题在于文件名传递不成功(可能是最后的换行符的关系)。如果真是这样,可能最方便的办法是去改源代码了。

- 潇洒走一回
- 帖子: 735
- 注册时间: 2009-05-20 21:43
Re: 终于实现了 mocp 的随机播放
现在用的很简单,Mocp,它只是一个智能开关,第一次执行它会打开播放器,再次执行时它成了关闭播放器,我把它绑定在了一个键盘组合键上:lilydjwg 写了:贴来瞧瞧潇洒走一回 写了:我通过自己写的叫作Mocp的脚本调用moc,感觉更方便了...
代码: 全选
#!/bin/bash
#scriptname: Mocp
#该脚本用来调用mocp播放我的音乐
#为mocp做的一个开关,方便绑定在面板上的一个图标上
##########################################################
#下面非日常操作, 当用户音乐文件下面添加新的文件了,并执行 Mocp -u时,下面的命令将被执行...
if [ -n "$1" ]; then
case "$1" in
-u)
echo "正在更新播放列表... ..."
mocp -c; mocp -a $HOME/music/; echo "Done"; exit 0 ;;
esac
fi
#脚本通过/tmp/下的StateFile来判断打开还是关闭mocp
[ ! -f /tmp/StateFile ] && { echo "to-open" > /tmp/StateFile; echo "yes" >> /tmp/StateFile; }
#######################################################
read state < /tmp/StateFile
if [ "$state" = "to-open" ]; then
mocp -p #打开mocp,同时自动播放列表中的音乐,
sleep 0.3; lrcdis&
echo "to-close" > /tmp/StateFile
exit 0
elif [ "$state" = "to-close" ]; then
echo "to-open" > /tmp/StateFile
mocp -x
exit 0
else
echo "to-open" > /tmp/StateFile
Mocp #调用自身.
fi
上次由 潇洒走一回 在 2009-11-01 0:01,总共编辑 3 次。
- 潇洒走一回
- 帖子: 735
- 注册时间: 2009-05-20 21:43
Re: 终于实现了 mocp 的随机播放
这个本来确实是播放列表中的第一首歌,但是一旦你开启了shuffle,mocp -p变成了在你的列表中随便挑一首开始播放,你每一次执行mocp -p开始播放的那首歌都是不一样的,不信你试试...行不通,一旦你用mocp -p的话,就是从播放列表的第一首歌开始播放了
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 终于实现了 mocp 的随机播放
把 rmocp 改了一下,成 rmocp2 了, r 的意思由 random 改为了 remembering。
只是这样的话再直接用 mocp 会有问题。
只是这样的话再直接用 mocp 会有问题。
- 附件
-
- rmocp2.zip
- (3.19 KiB) 已下载 57 次
上次由 lilydjwg 在 2009-11-01 1:46,总共编辑 3 次。
- photor
- 论坛版主
- 帖子: 11004
- 注册时间: 2008-04-26 12:41
Re: 终于实现了 mocp 的随机播放
不喜欢随机怎么办?潇洒走一回 写了:这个本来确实是播放列表中的第一首歌,但是一旦你开启了shuffle,mocp -p变成了在你的列表中随便挑一首开始播放,你每一次执行mocp -p开始播放的那首歌都是不一样的,不信你试试...行不通,一旦你用mocp -p的话,就是从播放列表的第一首歌开始播放了

- 潇洒走一回
- 帖子: 735
- 注册时间: 2009-05-20 21:43
Re: 终于实现了 mocp 的随机播放
不喜欢就是个人风格问题了...photor 写了:不喜欢随机怎么办?潇洒走一回 写了:这个本来确实是播放列表中的第一首歌,但是一旦你开启了shuffle,mocp -p变成了在你的列表中随便挑一首开始播放,你每一次执行mocp -p开始播放的那首歌都是不一样的,不信你试试...行不通,一旦你用mocp -p的话,就是从播放列表的第一首歌开始播放了
随机让我永远都不知道下一首是什么歌...每次顺序都不同...何尝不是一种美妙的体验呢
- 潇洒走一回
- 帖子: 735
- 注册时间: 2009-05-20 21:43
Re: 终于实现了 mocp 的随机播放
我刚把我的Mocp脚本加入了每次打开时首先播放上次退出时播放的歌曲功能,实际上为了减少麻烦,lastsong是用mplayer播放的,但一般情况下在体验上是感觉不同区别的,根据photor所说,如果mocp没有开启随机功能,这个方案是不适合你的,因为它又会从你的列表中从头播放,而开启了shuffle后每次执行mocp -p播放的永远都是你预料不到的歌曲...
内容如下:
内容如下:
代码: 全选
#!/bin/bash
#scriptname: Mocp
#这是一个mocp的智能开关脚本,打开时可以首先播放上次退出时播放的歌曲
if [ -n "$1" ]; then
case "$1" in
-u)
echo "正在更新播放列表... ..."
mocp -c; mocp -a $HOME/music/; echo "Done"; exit 0 ;;
esac
fi
#通过/tmp/StateFile的内容来判断打开还是关闭mocp
[ ! -f /tmp/StateFile ] && echo "to-open" > /tmp/StateFile
#######################################################
read state < /tmp/StateFile
[ -f ~/.moc/lastsong ] && read lastsong < ~/.moc/lastsong
if [ "$state" = "to-open" ]; then
echo "to-close" > /tmp/StateFile
[ -n $lastsong ] && mplayer "$lastsong"
mocp -p #打开mocp,同时自动播放列表中的音乐
exit 0
elif [ "$state" = "to-close" ]; then
echo "to-open" > /tmp/StateFile
mocp -i|grep File |sed 's/File: //' > ~/.moc/lastsong #退出mocp时记住最后播放的歌曲
mocp -x #退出mocp
exit 0
else
echo "to-open" > /tmp/StateFile
Mocp #调用自身.
fi
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 终于实现了 mocp 的随机播放
我也喜欢随机。不过现在我在想,给每首歌一个权值,按此权值来随机播放。而权值是听歌时通知程序喜欢或者不太喜欢实现的。潇洒走一回 写了:photor 写了:不喜欢就是个人风格问题了...潇洒走一回 写了: 不喜欢随机怎么办?
随机让我永远都不知道下一首是什么歌...每次顺序都不同...何尝不是一种美妙的体验呢
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 终于实现了 mocp 的随机播放
试一下我这个吧(viewtopic.php?f=74&t=236602&p=1542594#p1542115),用 rmocp2 代替 mocp 来读取播放列表并通知 mocp 播放,同时记录播放的歌曲名到 ~/.moc/lastsong。放下一首时就可以从播放列表中找到它的下一首播放了。因为我不喜欢这种播放模式,所以还请大家为我测试了。潇洒走一回 写了:我刚把我的Mocp脚本加入了每次打开时首先播放上次退出时播放的歌曲功能,实际上为了减少麻烦,lastsong是用mplayer播放的,但一般情况下在体验上是感觉不同区别的,根据photor所说,如果mocp没有开启随机功能,这个方案是不适合你的,因为它又会从你的列表中从头播放,而开启了shuffle后每次执行mocp -p播放的永远都是你预料不到的歌曲...
