echoprint

来源:互联网 发布:linux 播放器剪辑 编辑:程序博客网 时间:2024/05/01 08:59

安装数据库:tokyotyrant/

下载地址:

wget http://cloud.github.com/downloads/xurenlu/mc_list_patch_4_tokyotyrant/tokyocabinet-1.4.41.tar.gz

wget http://cloud.github.com/downloads/xurenlu/mc_list_patch_4_tokyotyrant/tokyotyrant-1.1.37.tar.gz

tar -xzf tokyotyrant-1.1.37.tar.gz  327  cd tokyocabinet-1.4.41  328  ll  329   tar -xzf tokyocabinet-1.4.41.tar.gz  330  ll  331  cd tokyocabinet-1.4.41  332  ./configure  333   make && make install  334  ll  335  cd ../  340  cd tokyotyrant-1.1.37  341   ./configure  342  make && sudo make install  343  pwd  344  cd ../  345  ll  346  find / -name ttserver  347  mkdir -p /ttserver/  348  chmod 777 -R /ttserver/  349  /usr/local/bin/ttserver -host 127.0.0.1 -port 11111 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tch  350  curl -X PUT http://127.0.0.1:11111/my_key -d "this is value"    351  curl http://127.0.0.1:11111/my_key  352  curl -X DELETE http://127.0.0.1:11111/my_key



安装web.py,  

1, http://webpy.org/static/web.py-0.37.tar.gz  
2, tar xvfz web.py-0.37.tar.gz  
3, cd web.py-0.37  
4, sudo python setup.py install

启动数据库:
ttservctl start


启动solr:

# cd /usr/local/src/echoprint/echoprint-server/solr/solr/

# java -Dsolr.solr.home=/usr/local/src/echoprint/echoprint-server/solr/solr/solr/ -Djava.awt.headless=true -jar start.jar

solr管理地址:
http://192.168.1.3:8502/solr/fp/admin/

cd echoprint-server-master\API目录, 测试数据写入读出:
>>> import fp
>>> fp.ingest({"track_id": "my_track_id", "fp": "123 40 123 60 123 80 123 90 123 110 123 130", "length": "120", "codever": "4.12"})
>>> fp.commit()
>>> r = fp.best_match_for_query("123 40 124 60 125 80 126 90 127 110 128 130 129 60 123 40 127 50")
>>> r.message()
'query code length is too small'
>>> example_code = "eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw"
>>> r = fp.best_match_for_query(example_code)
>>> r.message()
'OK (match type 3)'
>>> r.TRID
'my_track_id'


打开web.py服务,添加数据:
cd API
python api.py 8080

$  curl http://192.168.1.3:8080/ingest -d "fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw&track_id=thisone&length=300&codever=4.12"

后台启动:

nohup python code.py 8088 > /webpy.log 2>&1 &



查询数据
http://192.168.1.3:8080/query?fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw







开始装codegen
https://github.com/echonest/echoprint-codegen

(http://blog.163.com/yungang_z/blog/static/175153133201262445539767/)
安装# yum install zlib zlib-devel
# yum install ffmpeg boost taglib

# yum install ffmpeg-devel boost-devel taglib-devel

如果ffmpeg安装不成功,使用以下方法:

方法二、此方法有时不太好用
1.安装前准备
vi /etc/yum.repos.d/ffmpeg.repo 

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux  
baseurl=http://apt.sw.be/redhat/el\$releasever/en/\$basearch/dag  
gpgcheck=0  
enabled=1 
2.安装ffmpeg
yum -y install ffmpeg ffmpeg-devel 


开始安装codegen:

 389  unzip echoprint-codegen-master.zip
  390  ll
  391  mv echoprint-codegen-master echoprint-codegen
  392  cd echoprint-codegen
  397  cd src/
  398  ll
  399  whereis boost
  400  vi Makefile //edit BOOST_CFLAGS and other variables as necessary
  401  make
  402  cd ..
  403  ll

  # ./echoprint-codegen billie_jean.mp3 10 30

  # cd /usr/local/src/echoprint/echoprint-server/util

 440  mkdir /music

  444  ll /music
  445  find /music -name "*.mp3" > music_to_ingest
  446  ./echoprint-codegen -s < music_to_ingest > allcodes.json
# python splitdata.py /usr/local/src/echoprint/echoprint-codegen/allcodes.json









/
(http://blog.sina.com.cn/s/blog_7985987f010196c1.html)
安装python-setuptools
wget –q http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
[root@MIO-03 pyechonest-master]# python setup.py install
 pyechonest:
Your API Key: G1QCI9RB0AIJKXTJN

Your Consumer Key: 5cd12bae2c16f47e3e14c3eef93e037c

Your Shared Secret: +EniaamaQgiSd8nRQ07a2g


ps -ef | grep solr




操作手册

启动数据库:
ttservctl restart

启动solr:
# cd /usr/local/src/echoprint/echoprint-server/solr/solr/
# java -Dsolr.solr.home=/usr/local/src/echoprint/echoprint-server/solr/solr/solr/ -Djava.awt.headless=true -jar start.jar

solr管理地址:
http://172.16.146.129:8502/solr/fp/admin/



原生的数据操作:
tcrmgr list -port 1978 172.16.146.129
curl -X PUT  http://172.16.146.129:1978/mykey -d "this is value"
curl http://172.16.146.129:1978/thisone2
curl -X DELETE http://172.16.146.129:1978/my_key

命令行测试数据写入读出:
cd /usr/local/src/echoprint/echoprint-server/API目录,
>>> import fp
>>> fp.ingest({"track_id": "my_track_id", "fp": "123 40 123 60 123 80 123 90 123 110 123 130", "length": "120", "codever": "4.12"})
>>> fp.delete(['my_track_id-0','thisfour-0'])
>>> fp.commit()
>>> r = fp.best_match_for_query("123 40 124 60 125 80 126 90 127 110 128 130 129 60 123 40 127 50")
>>> r.message()
'query code length is too small'
>>> example_code = "eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw"
>>> r = fp.best_match_for_query(example_code)
>>> r.message()
'OK (match type 3)'
>>> r.TRID
'my_track_id'

web测试数据读写:
打开web.py服务,开启8080端口,添加数据:
cd /usr/local/src/echoprint/echoprint-server/API
python api.py 8080

模拟post提交添加数据:

$  curl http://172.16.146.129:8080/ingest -d "fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw&track_id=thisone&length=300&codever=4.12"

$  curl http://172.16.146.129:8080/ingest -d "fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw&track_id=enya&length=300&codever=4.12"

查询数据
http://172.16.146.129:8080/query?fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw
123 40 124 60 125 80 126 90 127 110 128 130 129 60 123 40 127 50 127 60

solr返回json:&wt=json
http://172.16.146.129:8502/solr/fp/select/?q=123+40+124+60+125+80+126+90+127+110+128+130+129+60+123+40+127+50+127+60&version=2.2&start=0&rows=10&indent=on&wt=json

通过ID查询:
http://172.16.146.129:8502/solr/fp/select/?q=track_id:thisone-0&version=2.2&start=0&rows=10&indent=on&wt=json

转码
http://172.16.146.129:8080/decode?fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw


到这里又可以用命令行去查数据,会现r.TRID变成了刚ingent的ID:
>>> r.TRID
'thisone'

通过codegen把mp3信息生成json文件,
cd /usr/local/src/echoprint/echoprint-codegen
# ./echoprint-codegen Kalimba.mp3 10 30
find /music -name "*.mp3" > music_to_ingest
./echoprint-codegen -s < music_to_ingest > allcodes.json

然后在server里把这个json数据添加进去;
cd /usr/local/src/echoprint/echoprint-server/util
python fastingest.py  /usr/local/src/echoprint/echoprint-codegen/allcodes.json     
python splitdata.py /usr/local/src/echoprint/echoprint-codegen/allcodes.json

0 0