Android id3lib,GitHub - larsbs/id3v2lib: id3v2lib is a library written in C to read and edit id3 tag...

id3v2lib

id3v2lib is a library written in C to read and edit id3 tags from mp3 files. It is focused on the ease of use. As it is a personal project, the software is provided "as is" without warranty of any kind.

It is licensed under BSD License. See LICENSE for details.

It is a work in progress so some functionality is not implemented yet.

What it can do?

id3v2lib can read and edit id3 v2.3 and v2.4 tags from mp3 files. It can read and edit a small subset of tags by default. Specifically, the most used tags:

Title

Album

Artist

Album Artist

Comment

Genre

Year

Track

Disc Number

Album Cover

However, it can be extended, in a very easy manner, to read other id3 tags.

Building id3v2lib

Building using CMake

The id3v2lib library is built using CMake 2.6+ on all platforms. On most systems you can build and install the library using the following commands:

$ mkdir build && cd build

$ cmake ..

$ make && make install

Most of the times, you need to run the make install command with su privileges.

Building using Microsoft Visual Studio

Microsoft Visual Studio needs a slightly different way of building.

Open the Visual Studio Developers Console, ch into the id3v2lib folder and execute the following:

$ mkdir build && cd build

$ cmake ..

This should leave you with several MSVS projects in the \build directory. Open ALL_BUILD.vcxproj with Visual Studio and build it as usual.

The resulting lib file can be found in \build\src\Debug\id3v2.lib

Usage

You only have to include the main header of the library:

#include

int main(int argc, char* argv[])

{

// Etc..

}

And when compiling, link against the static library:

$ gcc -o example example.c -lid3v2

Main functions

File functions

This functions interacts directly with the file to edit. This functions are:

ID3v2_tag* load_tag(const char* filename)

void remove_tag(const char* filename)

void set_tag(const char* filename, ID3v2_tag* tag)

Tag functions

This functions interacts with the tags in the file. They are classified in three groups:

Getter functions

Retrieve information from a tag, they have the following name pattern:

tag_get_[frame] where frame is the name of the desired field from which to obtain information. It can be one of the previously mentioned tags.

Setter functions

Set the information of a field, they have the following name pattern:

tag_set_[frame] where frame is the name of the desired field to edit. It can be one of the previously mentioned tags.

Delete functions

Delete individual fields in the tag, they have the following name pattern:

tag_delete_[frame] where frame is the name of the desired field to delete. It can be one of the previously mentioned tags.

Examples

Load tags

ID3v2_tag* tag = load_tag("file.mp3"); // Load the full tag from the file

if(tag == NULL)

{

tag = new_tag();

}

// Load the fields from the tag

ID3v2_frame* artist_frame = tag_get_artist(tag); // Get the full artist frame

// We need to parse the frame content to make readable

ID3v2_frame_text_content* artist_content = parse_text_frame_content(artist_frame);

printf("ARTIST: %s\n", artist_content->data); // Show the artist info

ID3v2_frame* title_frame = tag_get_title(tag);

ID3v2_frame_text_content* title_content = parse_text_frame_content(title_frame);

printf("TITLE: %s\n", title_content->data);

Edit tags

ID3v2_tag* tag = load_tag("file.mp3"); // Load the full tag from the file

if(tag == NULL)

{

tag = new_tag();

}

// Set the new info

tag_set_title("Title", 0, tag);

tag_set_artist("Artist", 0, tag);

// Write the new tag to the file

set_tag("file.mp3", tag);

Delete tags

ID3v2_tag* tag = load_tag("file.mp3"); // Load the full tag from the file

if(tag == NULL)

{

tag = new_tag();

}

// We can delete single frames

tag_delete_title(tag);

tag_delete_artist(tag);

// Write the new tag to the file

set_tag("file.mp3", tag);

// Or we can delete the full tag

remove_tag("file.mp3")

Extending functionality

Read new frames

Suppose we want to read the frame that stores the copyright message (TCOP). We have to do the following:

ID3v2_tag* tag = load_tag("file.mp3"); // Load the full tag from the file

if(tag == NULL)

{

tag = new_tag();

}

ID3v2_frame* copyright_frame = tag_get_frame(tag, "TCOP"); // Get the copyright message frame

// We need to parse the frame content to make it readable, as the copyright message is a text frame,

// we use the parse_text_frame_content function.

ID3v2_frame_text_content* copyright_content = parse_text_frame_content(copyright_frame);

printf("COPYRIGHT: %s\n", copyright_content->data); // Show the copyright info

Edit new frames

Suppose that now, we want to edit the copyright frame. We have to do the following:

ID3v2_tag* tag = load_tag("file.mp3"); // Load the full tag from the file

if(tag == NULL)

{

tag = new_tag();

}

ID3v2_frame* copyright_frame = NULL;

if( ! (copyright_frame = tag_get_frame(tag, "TCOP")))

{

copyright_frame = new_frame();

add_to_list(tag->frames, copyright_frame);

}

set_text_frame("A copyright message", 0, "TCOP", copyright_frame);

Projects

If your project is using this library, let me know it and I will put it here.

Copyright

Copyright (c) 2013 Lars Ruiz. See LICENSE for details.

Questions?

If you have any questions, please feel free to ask me. I will try to answer it ASAP.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值