当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 24 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 有这样一个想法
帖子发表于 : 2008-05-16 14:47 
头像

注册: 2007-04-25 13:12
帖子: 2838
送出感谢: 0 次
接收感谢: 0 次
显示歌词的脚本

按照lrc文件的时间标签把该行写入一个新文件
然后使用tail -f监视这个新文件达到动态显示歌词的效果
不知可否实现...


_________________
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-05-16 14:51 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
。。。没必要这样费劲,,按照时间调用 osd 显示效果更好。


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-05-16 14:51 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
以前就有个,不过这个搜索歌词的服务器好像加了限制,不能自动下载歌词了.但是显示没问题的,希望能找个好用的服务器,
代码:
#!/bin/bash

TMPDIR=/tmp/lrcache
LRCDIR=/media/sda5/baidump3/lrc

STARTPLAYER(){
  ps -e | grep mocp >> /dev/null 2>&1
  if [ $? -ne "0" ] ; then
   mocp -p
  fi
  return $?
}

GETNAME(){
  echo `mocp -i | grep "^Title: " | sed -e "s/.*-\ //"`
#  awk '{ gsub(/\.mp3|\.wma|\.MP3|\.WMA/,"",$NF);print $NF }'
}

DOWNLRC(){
  [ -d $TMPDIR ] || mkdir -p  $TMPDIR
  NM=$(GETNAME)
  echo $NM
  SNM=`echo $NM | iconv -f utf8 -t gbk`
  wget "http://lrc.bzmtv.com/so.asp?go=go&y=1&key=$SNM" \
                 -O $TMPDIR/$NM".tmp" >> /dev/null 2>&1
  iconv -f gbk -t utf8 $TMPDIR/$NM".tmp" > $TMPDIR/$NM
  egrep "> *$NM *<" $TMPDIR/$NM >> /dev/null 2>&1
  if [ $? -ne "0" ] ; then
    echo "not found "
    rm -f $TMPDIR/$NM $TMPDIR/$NM".tmp"
    sleep 15
  else
    URL=`awk -F"> *$NM *<" \
         '{if (FLAG == 1 && $0 ~/lrc.gif/ ) \
            { h=index($0,"lrc_db");n=index($0,".lrc")-h+4; \
              print substr($0,h,n);exit; \
            }else if (NF > 1 ) FLAG=1  }' $TMPDIR/$NM `

    URL="http://lrc.bzmtv.com/$URL"
    [ -d $LRCDIR ] || mkdir -p $LRCDIR
    wget "$URL" -O "$LRCDIR/$NM" ## >> /dev/null 2>&1
    iconv -f gbk -t utf8 "$LRCDIR/$NM" >  $LRCDIR/$NM".lrc"
    rm -f  $LRCDIR/$NM
    echo "download success"
    rm -f $TMPDIR/$NM
  fi
}

READLRC(){
  ifs=$IFS
  IFS="NOTSPACE"
  [ -d $TMPDIR ] || mkdir -p  $TMPDIR
  awk '! /(\] *.?)$|^( *)$|^[^\[]/' $LRCDIR/$(GETNAME)".lrc" | while read LINE
  do
    echo $LINE | awk -F"]" '{ \
        if (NF > 2){ \
          for (i = 1; i < NF; i++){  \
            print $i"]"$NF; \
          }
         }else{ print $0; }\
        }'
  done | sort > $TMPDIR/$NM
  IFS=$ifs
}

DISPLAY(){
  NM=$(GETNAME)
  LAST=""
  N=1
  LRC="$(< $TMPDIR/$NM)"
  clear
  echo  -e "\033[;34m****** $NM ****** \033[0m "
  echo "  "
  while [ true ] ; do
    if [ $NM != $(GETNAME) ] ; then
      NM=$(GETNAME)
      while [ ! -s $LRCDIR/$NM".lrc" ] ; do
        DOWNLRC
        NM=$(GETNAME)
      done
      [ -s $LRCDIR/$NM".lrc" ] && [ ! -s $TMPDIR/$NM ] &&  READLRC
      LRC="$(< $TMPDIR/$NM)"
      clear
      echo  -e "\033[;34m****** $NM ****** \033[0m "
      echo "  "
      N=1
    fi
    TM=`mocp -i | grep "CurrentTime" | sed -e 's/CurrentTime:\ //'`
    [ "$TM" = ""  ] && break
    NOW=`echo "$LRC" | sed -n "/$TM/p" |cut -d"]" -f 2`
    if [ "$NOW" != ""  -a  "$NOW" != "$LAST" ] ; then
      N=`expr $N + 1`
      if [ $N -ge "9" ] ; then
        N=1
        clear
        echo  -e "\033[;34m****** $NM ****** \033[0m "
        echo "  "
        echo $LAST
        echo "  "
      fi
      LAST=$NOW
      echo $NOW
      echo "   "
    fi
    sleep 0.3
  done
}


[ "$1" = "reload" ] && rm -f "$TMPDIR/*"
clear
STARTPLAYER
NM=$(GETNAME)
echo $NM
while [ ! -s $LRCDIR/$NM".lrc" ] ; do
 DOWNLRC
 NM=$(GETNAME)
done
if [ -s $LRCDIR/$NM".lrc" ] ; then
    READLRC
    DISPLAY
fi


_________________
关注我的blog: ε==3


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-05-16 14:57 
头像

注册: 2007-04-25 13:12
帖子: 2838
送出感谢: 0 次
接收感谢: 0 次
:D 谢两位


_________________
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-05-16 15:07 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
ls,我这儿写了一个可以下载lrc歌词文件的脚本,可以看看:http://forum.ubuntu.org.cn/viewtopic.php?t=120253&highlight=


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-05-16 15:09 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
哈哈,LZ或者是 xiooli 可以把这俩脚本合并一下哦...


_________________
关注我的blog: ε==3


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-05-16 19:32 
头像

注册: 2007-04-25 13:12
帖子: 2838
送出感谢: 0 次
接收感谢: 0 次
代码:
#!/bin/bash

TMPDIR=/home/como/.lyrics/tmp
LRCDIR=/home/como/.lyrics

READLRC(){
  NM="元若蓝 - 绿袖子.lrc"
  ifs=$IFS
  IFS="NOTSPACE"
  [ -d $TMPDIR ] || mkdir -p  $TMPDIR
  awk '! /(\] *.?)$|^( *)$|^[^\[]/' $LRCDIR/$NM | while read LINE
  do
    echo $LINE | awk -F"]" '{ \
        if (NF > 2){ \
          for (i = 1; i < NF; i++){  \
            print $i"]"$NF; \
          }
         }else{ print $0; }\
        }'
  done | sort > $TMPDIR/$NM
  IFS=$ifs
}

DISPLAY(){
  NM="元若蓝 - 绿袖子.lrc"
  LAST=""
  N=1
  LRC="$(< $TMPDIR/$NM)"
# clear
  echo  -e "\033[;32m****** $NM ****** \033[0m "
  echo "  "
  while [ true ] ; do
    TM=`mpc | grep "/" | awk -F" " '{print $3 }' | awk -F"/" '{print $1}'`
    [ "$TM" = ""  ] && break
    NOW=`echo "$LRC" | sed -n "/$TM/p" |cut -d"]" -f 2`
    if [ "$NOW" != ""  -a  "$NOW" != "$LAST" ] ; then
      N=`expr $N + 1`
      if [ $N -ge "5" ] ; then
        N=1
        clear
        echo  -e "\033[;32m****** $NM ****** \033[0m "
        echo "  "
        echo $LAST
      fi
      LAST=$NOW
      echo $NOW
    fi
    sleep 0.3
  done
}

READLRC
DISPLAY


想改一下
但是文件名有空格就会报错
ambiguous redirect
怎么办....


_________________
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-05-16 19:38 
头像

注册: 2007-04-25 13:12
帖子: 2838
送出感谢: 0 次
接收感谢: 0 次
代码:
  LRC="$(< $TMPDIR/$NM)"

就是这步会出错


_________________
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-05-16 19:53 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
空格前加 \ 转义


_________________
关注我的blog: ε==3


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-05-16 20:08 
头像

注册: 2007-04-25 13:12
帖子: 2838
送出感谢: 0 次
接收感谢: 0 次
那如果我需要用GETNAME()获取名字呢
怎么加转义字符
echo `mpc playlist | grep ">" | sed -e "s/.*)\ //"`


_________________
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-05-16 20:11 
头像

注册: 2007-04-25 13:12
帖子: 2838
送出感谢: 0 次
接收感谢: 0 次
或者我应该把空格去掉 :lol:
代码:
GETNAME(){
  echo `mpc playlist | grep ">" | sed -e "s/.*)\ //" -e 's/\( \+\)//g'`
}


_________________
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-05-16 20:28 

注册: 2007-04-09 12:19
帖子: 119
送出感谢: 0 次
接收感谢: 0 次
solcomo 写道:
代码:
  LRC="$(< $TMPDIR/$NM)"

就是这步会出错


写成这样
代码:
LRC="$(< $TMPDIR/"$NM")"


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-05-16 20:46 
头像

注册: 2007-04-25 13:12
帖子: 2838
送出感谢: 0 次
接收感谢: 0 次
:D 谢谢楼上...
很管用...要不我还得把括号给去掉- -..


_________________
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-05-16 22:04 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
不错啊,lz这么快就实现了“跳动”效果 :D


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-05-16 22:08 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
呵呵,期待发个完整版


_________________
关注我的blog: ε==3


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 24 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Sogou [Spider] 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译