如何使用lisp获取mp3文件的艺术家
(let ((in (open "test.mp3" :direction
:input
:element-type '(unsigned-byte 8))))
(when in
(loop for line = (read-byte 'utf-8 in)
while line do (format t "~a" line ))
(close in)))
Run Code Online (Sandbox Code Playgroud) 我在C中制作一个id3标签编辑器.我无法弄清楚如何从二进制文件末尾拉出最后128个字节,以便操作/打印出id3标签所在的区域.下面是一些代码:
struct Tag{
char tagMark[3];
char trackName[30];
char artistName[30];
char albumName[30];
char year[4];
char comment[30];
char genre;
};
int main(int argc, char *argv[]){
struct Tag fileTag;
FILE *fp;
fp=fopen(argv[0], "r+b");
if(!fp){
printf("ERROR: File does not exist.");
}
int bufLength=129;
fseek(fp, 0, SEEK_END);
long fileLength=ftell(fp);
fseek(fp, fileLength-bufLength+1, SEEK_SET);
fread(&fileTag, sizeof(fileTag), 1, fp);
printf("%s\n", fileTag.tagMark);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用一个文件来测试它,其中包含一个格式正确的id3标记.在id3标记中,前三个字节分别包含"T","A"和"G",以便识别标记是否存在.有人知道为什么当我运行这个程序时,"_main"是打印出来的唯一东西吗?
基本上,我有一堆音乐文件从我兄弟的iPod中悄悄地保留了他们的元数据,但有一些绝对可怕的四个角色名称,iPod似乎喜欢将它们存放下来.我想我会写一个很好的,快速的脚本来按我的意愿重命名它们,但我很好奇任何用于读取ID3元数据的好库.我更喜欢Perl或Python.我对Perl感到很自在,因为我在工作中使用它,而Python我需要更多的练习,这将使我的Python传道者朋友们感到高兴.
无论如何,缩短版本:你能为Python或Perl命名一个好的库/模块,这将允许我从一堆mp3中轻松提取ID3元数据吗?
我想编写一个快速程序,让我的MP3文件的文件组织与我的ID3标签中的信息同步...
我曾试图获得Windows Media Format SDK,但是当我去安装它时说它只能在WinXP上运行.我发现有人在这里建议TagLib#,从代码示例中看起来非常好.问题是官方网站似乎已经消失了,我在Novell的服务器上发现的其他链接也已关闭.
任何人都知道在哪里我仍然可以获得用于Windows的C#/ VB.NET的TagLib#发行版?还是另一个好的ID3标签阅读器?
我正在尝试编写一个Python脚本来读取我的MP3的文件名,当它找到一个缺少的Artist标签时,它将从文件名的第一部分开始.我的大部分MP3都标题为"Artist - Title.mp3".
但是没有一个ID3标签阅读器在Python中运行良好.ID3将不会读取1.1之后的任何标记,并且自2002年以来尚未开发.当文件缺少标记时,Mutagen会引发异常.Eye3D需要安装二进制文件以使库工作,与pylibid3同上.
我使用的是错误的语言吗?我听说Perl有一些很棒的ID3标签库.我是一个新手,所以切换语言(我读过一本关于Perl的书已经有一段时间了)意味着从头开始.但是如果Python是错误的语言,我愿意这样做.
有什么想法吗?
如何以编程方式将下载的封面艺术(专辑封面)添加到下载的mp3中?
我让我的应用程序从Android APIS通过DownloadManager下载mp3文件,如下所示:
private void startDownload(){
Uri uri = Uri.parse(BASE_URL+DOWNLOAD+mp3+".mp3");
filename = title+".mp3";
Request request = new DownloadManager.Request(uri)
.setDestinationInExternalPublicDir(MUSIC_PATH, filename);
DOWNLOAD_MANAGER.enqueue(request);
}
Run Code Online (Sandbox Code Playgroud)
是否可以在下载的mp3文件中添加一个coverart,以便手机上的mp3播放器在播放歌曲时会显示图像?
我一直在尝试这个,现在仍然无法找到答案,当我尝试 sudo pecl install id3这个错误发生
downloading id3-0.2.tgz ...
Starting to download id3-0.2.tgz (20,693 bytes)
.....done: 20,693 bytes
4 source files, building
running: phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module
If the command failed with 'phpize: not found' then you need to install php5-dev packageYou can do it by running 'apt-get install php5-dev' as a root userERROR: `phpize' failed
Run Code Online (Sandbox Code Playgroud)
请帮忙 !!!我已经安装了php5-dev.
我有大量 m4a 文件,所有文件都带有流派、艺术家和标题的 ID3 标签。我想要的是能够读取这些标签并将它们存储为字符串。
我有一个字符串,它是我从MP3 ID3标签获得的艺术家的名字
sArtist = "The Beatles"
Run Code Online (Sandbox Code Playgroud)
我想要的是改变它
sArtist = "Beatles, the"
Run Code Online (Sandbox Code Playgroud)
我遇到了两个不同的问题.我的第一个问题是我似乎在为''换取''.
if sArtist.lower().find('the') == 0:
sArtist = sArtist.lower().replace('the','')
sArtist = sArtist + ", the"
Run Code Online (Sandbox Code Playgroud)
我的第二个问题是因为我必须检查"The"和"the"我使用sArtist.lower().然而,这将我的结果从"甲壳虫乐队"改为"披头士乐队".为了解决这个问题,我刚刚删除了.lower并添加了第二行代码来明确查找这两种情况.
if sArtist.lower().find('the') == 0:
sArtist = sArtist.replace('the','')
sArtist = sArtist.replace('The','')
sArtist = sArtist + ", the"
Run Code Online (Sandbox Code Playgroud)
所以我真正需要解决的问题是为什么我用' <SPACE>而不是'代替'' <NULL>.但如果有人有更好的方法来做到这一点我会很高兴教育:)
在此先感谢您的帮助.
我想在我的数据库中设置id3标签数据作为我的模型MasterSong的属性.具体来说,标题,艺术家和专辑.
create_table :master_songs do |t|
t.integer :user_id
t.has_attached_file :m_song
**- t.string :title
- t.string :artist
- t.string :album**
Run Code Online (Sandbox Code Playgroud)
在我的模型中,我使用回调来保存对象(master_song)之前的数据.
before_save :set_id3_tags_in_database
def set_id3_tags_in_database
TagLib::MPEG::File.open(self.m_song.path) do |file|
tag = file.id3v2_tag
tag.title
tag.album
tag.artist
end
self.update_attributes(:title => tag.title,
:artist => tag.artist,
:album => tag.album)
end
Run Code Online (Sandbox Code Playgroud)
我很确定我的语法是问题所在.该对象似乎遇到了错误
undefined method `title' for nil:NilClass with an infinite loop
Run Code Online (Sandbox Code Playgroud)
控制器创建动作是正常的:
def create
@master_song = current_user.master_songs.build(params[:master_song])
respond_to do |format|
if @master_song.save
format.html { redirect_to @master_song, notice: 'Master song was successfullycreated.' }
end
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?更新:def set_id3_tags z = …