原文: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
分享到:
相关推荐
Ruby-i18n是Ruby语言中的一个核心库,专门用于实现国际化(Internationalization,简称i18n)和本地化(Localization,简称l10n)功能。在软件开发过程中,尤其是在面向全球用户的应用中,i18n和l10n是至关重要的,...
Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。它强调代码的简洁性和可读性,致力于提供一种更自然的编程方式。Ruby-2.6.9是这个语言的一个稳定版本,它的...
标签"Ruby开发-数据库工具"表明,Ruby-Shift是面向Ruby开发者的一个实用数据库管理工具。对于那些从事Ruby开发但项目不使用Rails或使用其他ORM(对象关系映射)系统的团队,这是一个非常有价值的资源。它可以帮助...
在“其它杂项”标签下,我们可以推测Ruby-femto可能包含了一些特定的特性或功能,比如自定义快捷键、简单的文本格式化、或者对特殊字符集的支持。这些功能可能通过Ruby的内建模块或者自定义逻辑来实现。 项目名为...
2. **纯Ruby实现**:作为纯Ruby库,Kramdown无需依赖其他外部软件或库,这使得它在各种Ruby环境中都能无缝集成和运行,包括Jekyll、Middleman等静态站点生成器。 3. **严格的语法定义**:Kramdown遵循Markdown的...
标签“Ruby开发-后台管理界面”表明这个框架是针对使用Ruby编程语言进行Web开发的,特别是针对那些希望创建后台管理界面的开发者。Ruby是一种面向对象的语言,以其简洁的语法和强大的Rails框架而闻名,适用于快速...
标签"ruby 1.9.3"进一步明确了我们关注的Ruby版本。Ruby 1.9系列是Ruby的重要升级,引入了对UTF-8编码的默认支持,增强了性能,同时引入了一些语法改进,比如对块的语法简化(使用语法糖`&:`)和新的数字字面量表示...
关于标签“Ruby开发-HTML/XML解析”,这表明这个解析器是为了解决Ruby开发者在处理HTML和XML文档时的需求。HTML和XML都是用于结构化数据的标准格式,在Web开发和数据处理中非常常见。解析这些文档能够帮助开发者提取...
标签"Ruby开发-日志处理"表明Scrolls是Ruby开发人员用于日志处理的工具。与其他日志库(如Log4r或Logger)相比,Scrolls更注重简洁性和易用性,而非功能的全面性。因此,如果你需要一个轻量级、易于理解和使用的日志...
标签"源码"表明这个压缩包中包含的是编程相关的源代码文件,可能有.rb扩展名,这些文件是Ruby语言的文本文件,可以被Ruby解释器执行。 在Ruby中,属性访问器是通过`attr_accessor`、`attr_reader`和`attr_writer`这...
关于“Ruby开发-Git工具”的标签,这表明`gitsh`是用Ruby编程语言开发的,对于Ruby开发者或者想要学习Ruby的人来说,这是一个很好的实践项目,因为它展示了如何使用Ruby来扩展和增强现有工具。此外,这也意味着如果...
标签"Ruby开发-模板引擎"表明了Curly是Ruby生态系统的一部分,适用于构建Web应用的视图层。在Ruby on Rails框架中,虽然ERB(Embedded Ruby)是默认的模板引擎,但开发者可以根据项目需求选择像Curly这样的替代品,...
"Ruby开发-其它杂项" 这个标签说明了这个话题与Ruby编程语言的开发实践有关,特别是涉及到非标准或特定的工具或技术。在Ruby开发中,gem是常用的扩展和库的形式,而ExceptionTrack就是这样的一个工具,属于"杂项...
如果你对Ruby编程感兴趣,可以通过阅读和分析这些源代码来了解Termit的工作原理,甚至对其进行自定义修改以满足个人需求。 总的来说,Ruby-Termit是一个结合了Ruby编程、Google Translate API、国际化处理和语音...
在“Ruby开发-数据库工具”的标签中,我们可以推断LHM是一个用Ruby编程语言编写的开源工具,面向数据库管理员和开发人员,帮助他们在管理数据库架构时更高效、更安全地进行迁移操作。Ruby是一种面向对象的、动态类型...
Ruby的数组支持多种方法,如`each`用于遍历数组,`[]`用于访问和修改数组元素,以及`swap`这样的潜在辅助方法用于交换两个元素的值。以下是一个简单的Ruby冒泡排序实现示例: ```ruby def bubble_sort(array) n = ...
Ruby-Rugged是一个强大的Ruby库,它为Ruby开发者提供了一个与libgit2库绑定的接口。libgit2是一个纯C编写的Git库,它允许在不使用Git原生命令行工具的情况下,直接在应用程序中实现Git的功能。Rugged库将libgit2的...
GitHub Changelog Generator - 自动生成更改日志从你的GitHub标签、问题、标签和pull请求
标签“Ruby开发-其它杂项”表明`watchexec`虽然与Ruby开发有关,但它并不属于Ruby标准库的一部分,而是作为一个独立的工具或者辅助开发的库存在,用于解决开发过程中的各种杂项问题,如自动化构建、实时代码检查等。...
Ruby-Codervault是一个开源项目,它为开发者提供了一个自托管的代码片段管理器。这个工具使得个人或团队能够安全地存储、组织和检索代码片段,增强了开发效率和代码复用性。作为一个自托管的解决方案, Codervault ...