原文:http://rubyer.me/blog/747/
我们都知道mp3能储存音乐,其实mp3文件里还能储存“歌手、专辑、曲风、时长”等很多信息。这些信息以一次的格式保存在文件头部和尾部。很多播放器就是根据这些信息来下载歌手头像和歌词的,但很多JS也看到了商机,他们把这些信息填充自己的广告,这样就可以免费传播。最近入手WP7,本来想体验下Zune的魅力,没想到一打开音乐,歌曲信息全变成了一些网址,相当恶心。
幸好找到了ruby-mp3info,迅速对mp3文件做了一次整容。
ruby-mp3info介绍
- 纯Ruby编写
- 读底层信息如比特率,时长等
- 可读写删除id3v1 and id3v2 标签
- 现在可读VBR文件
安装
先到https://github.com/oldsong/ruby-mp3info这里下载,然后解压。
$ ruby install.rb config
$ ruby install.rb setup
# ruby install.rb install
不要“gem install ruby-mp3info”安装,这个gem已经有1年没有更新,有几个bug。
示例
require "mp3info"
#指定编码并打开文件,支持utf-8,gbk,gb2312。默认为iso-8859-1
mp3 = Mp3Info.open("myfile.mp3", :encoding => 'utf-8')
# 选取并显示所有信息和标签
Mp3Info.open("myfile.mp3") do |mp3info|
puts mp3info
end
# 读/写 使用mp3.tag来读取tag1和tag2
# 读时 tag2 优先 tag1
# 写时, 两者均写。
Mp3Info.open("myfile.mp3") do |mp3|
puts mp3.tag.title
puts mp3.tag.artist
puts mp3.tag.album
puts mp3.tag.tracknum
mp3.tag.title = "标题"
mp3.tag.artist = "艺术家"
end
分享到:
相关推荐
GitHub Changelog Generator - 自动生成更改日志从你的GitHub标签、问题、标签和pull请求
这些必须具有以下结构: CURR_STATE READ_VAL NEW_STATE WRITE_VAL DIRECTION示例: read_first b append_b _ L解释:如果我们在read_first标签上,并且磁带头下的值在b字母上,则将标签更改为append_b标签,在磁...
概述 为Fluentd重写标签过滤器。...用户代理、请求 uri、正则表达式反向引用等从 Apache 日志中更改标签。 这是一个输出插件,因为 fluentdfilter不允许标签重写。 更多详情、使用方法,请下载后阅读README.md文件
这是对 protobuf 序列化和反序列化的纯 ruby 实现的尝试。 我们从实现中借鉴了很多,主要区别在于: 将序列化逻辑与 RPC 逻辑解耦 在 protobuf 编译期间生成完整的类,而不是在运行时定义方法 发展 签出 repo ...
功能-高清和完全可自定义的墙纸-待办事项列表,提高工作效率-最受欢迎的标签-快速,简便的方法来查看已访问的网站-应用程序标签-只需单击一下即可获得热门应用程序的高效标签-注释–快速提醒您的方法重要内容-改进且...
所有这些都是在纯Ruby中实现的,并以Ruby宝石的形式分发,这使得将其与rake集成起来非常简单,或者可以做更复杂的事情。 简而言之,xcodebuilder是自巧克力奶昔以来用来设置您的Cocoa CI轨道的最好的东西:它可以...
曲奇Ruby 这是叉子 你好! 我是,这(最初是) 对原始文件所做的更改(请参阅): 删除TravisCI改为使用CircleCI 删除pyup以支持GitHub 在自述文件顶部添加了注释和新的travis构建图标 README.rst中的一些空格...
顺序的 Sequent是用Ruby编写的CQRS和事件源框架。入门参见官方网站: 对Sequent陌生? 就是您的地方!贡献分叉并发送请求请求文献资料参见官方网站: 想要帮助改善文档? 请让我们知道如何通过来改进如果您想帮助...
使用Docker运行输出的安装示例示例用法参数参数文件github-changelog-generator更改日志的生成从未如此简单。更改日志的意义何在? 我为什么要在乎? 使用Docker运行安装输出示例用法参数参数文件GitHub令牌从手动...
您还可以按域,状态代码(例如500错误)从Apache日志中更改标签, 用户代理,request-uri,正则表达式后向引用等,带有正则表达式。 这是一个输出插件,因为fluentd的filter不允许重写标签。 要求 流利的插件重写...
这个项目是从 rbenv 和 ruby-build fork 而来,并修改为 Python。特性:进行全局的 Python 版本切换为单个项目提供对应的 Python 版本使用环境变量能让你覆盖 Python 版本能在同一时间在不同版本的 Python 间进行...
使用流处理器(具有朴素的C实现),通过添加,更改或删除标签来清理标记。 动机 我使用宝石,通常它很棒。 但是,它的性能可能是个问题,此外,由于Nokogiri在内部的工作方式,它在分析片段时不会保留标签名称空间。...
自由地混合逻辑和标签 使用全局和局部上下文将值传递给可重用的组件 自动HTML转义 可组合的嵌套组件 模板从片段缓存到整个模板 注意Rubyoshka是一个新库,因此可能缺少某些功能并包含错误。 此外,其API可能会意外...
复仇者用于在Ruby代码中查找无效方法的瑰宝。安装将此行添加到您的应用程序的Gemfile中: gem 'revenant' 然后执行: $ bundle或将其自己安装为: $ gem install revenant用法待办事项:在此处写下使用说明发展签出...
概念画板concepts-artboards是一个Ruby脚本,用于将 SVG导出转换为组合的和单独的PDF文件。 这是一个初步版本。 例如,我还没有添加命令行选项。 如果您可以编写自己的脚本,我就节省了您一天的时间。 修改我在这里...
全自动的变更日志生成-该gem根据标签,问题和合并的拉取请求(并根据标签将它们拆分为单独的列表)生成一个变更日志文件 GitHub问题追踪器。 由于您现在不必手动填写CHANGELOG.md :只需运行脚本,放松一下,然后喝...
最终的“官方”源发布可以在标签上找到。 默认的master分支包含自该最终源版本发布以来编写的代码,以提供对较新硬件的支持。 港口 connectionPi已被包装为多种语言: 节点-https: Perl- PHP- Python- Ruby- ...
这最初是从Rails上的ruby项目开始的,但是rails太糟糕了,火车残骸让我受够了,将其更改为可以在Linux桌面上运行的基于ruby的程序。 这放弃了可访问的Web便利性,但在其他方面都是一个巨大的胜利。 该数据库位于...
将这些资产用作Sensu Go资源(检查,更改器或处理程序)的一部分时,请确保在资源所需的资产列表中包括相应的Sensu Ruby运行时资产。 目前Ruby运行的资产,可以发现的。功能性检查alb目标组健康check-asg-instances...
使用 AWS_EC2 名称标签中的主机列表自动填充 .ssh/config 文件的几个脚本。 这些脚本会做什么,所以请小心。 覆盖您的 home/.ssh/config 文件 在终端的 MAC OSX 上添加自动完成功能:ssh someserver 魔法 注意:...