static int _id3_find_and_set_frame(ID3Tag *tag, ID3_FrameID id, const char *value) { ID3Frame *frame; ID3Field *field; /* Remove existing tag to avoid issues with trashed frames. */ while ((frame = ID3Tag_FindFrameWithID(tag, id))) ID3Tag_RemoveFrame(tag, frame); if (value && strlen(value) > 0) { frame = ID3Frame_NewID(id); g_assert(frame); ID3Tag_AttachFrame(tag, frame); field = ID3Frame_GetField(frame, ID3FN_TEXT); if (field) ID3Field_SetASCII(field, value); //TODO: UTF8 else return 1; } return 0; }
void set_TagField (ID3Tag * myTag, char *data, ID3_FrameID id) { ID3Frame *myFrame; ID3Frame *pFrame; char *conv_str = NULL; myFrame = ID3Frame_NewID (id); pFrame = ID3Tag_FindFrameWithID (myTag, id); if (pFrame != NULL) { ID3Tag_RemoveFrame (myTag, pFrame); } conv_str = g_locale_from_utf8 (data, -1, NULL, NULL, NULL); ID3Field_SetASCII (ID3Frame_GetField (myFrame, ID3FN_TEXT), conv_str); ID3Tag_AttachFrame (myTag, myFrame); g_free (conv_str); return; }