⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 id3v2tag.c

📁 betaplayer_0.096源码 tcpmp老版本
💻 C
📖 第 1 页 / 共 3 页
字号:
{    /* Provide the item or subitem's text, if requested. */    if (pnmv->item.mask & LVIF_TEXT) {        ID3ITEM *pItem = (ID3ITEM *) (pnmv->item.lParam);        lstrcpy(pnmv->item.pszText,            pItem->aCols[pnmv->item.iSubItem]);    }}ID3ITEM *pItem;int editItemIndex;BOOL CALLBACK EditTextFrameProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam){    LV_ITEM lvi;    switch (message) {    case WM_INITDIALOG:        SetDlgItemText(hwndDlg, IDC_TEXTFRAMENAME, pItem->aCols[0]);        SetDlgItemText(hwndDlg, IDC_EDITTEXTFRAME, pItem->aCols[1]);        switch (pItem->frameId)        {        case ID3FID_ALBUM:              case ID3FID_BPM:        case ID3FID_COMPOSER:           case ID3FID_COPYRIGHT:        case ID3FID_DATE:               case ID3FID_PLAYLISTDELAY:        case ID3FID_ENCODEDBY:          case ID3FID_LYRICIST:        case ID3FID_FILETYPE:           case ID3FID_TIME:        case ID3FID_CONTENTGROUP:       case ID3FID_TITLE:        case ID3FID_SUBTITLE:           case ID3FID_INITIALKEY:        case ID3FID_LANGUAGE:           case ID3FID_SONGLEN:        case ID3FID_MEDIATYPE:          case ID3FID_ORIGALBUM:        case ID3FID_ORIGFILENAME:       case ID3FID_ORIGLYRICIST:        case ID3FID_ORIGARTIST:         case ID3FID_ORIGYEAR:        case ID3FID_FILEOWNER:          case ID3FID_LEADARTIST:        case ID3FID_BAND:               case ID3FID_CONDUCTOR:        case ID3FID_MIXARTIST:          case ID3FID_PARTINSET:        case ID3FID_PUBLISHER:          case ID3FID_TRACKNUM:        case ID3FID_RECORDINGDATES:     case ID3FID_NETRADIOSTATION:        case ID3FID_NETRADIOOWNER:      case ID3FID_SIZE:        case ID3FID_ISRC:               case ID3FID_ENCODERSETTINGS:        case ID3FID_YEAR:               case ID3FID_WWWAUDIOFILE:        case ID3FID_WWWARTIST:          case ID3FID_WWWAUDIOSOURCE:        case ID3FID_WWWCOMMERCIALINFO:  case ID3FID_WWWCOPYRIGHT:        case ID3FID_WWWPUBLISHER:       case ID3FID_WWWPAYMENT:        case ID3FID_WWWRADIOPAGE:       case ID3FID_CONTENTTYPE:        {            EnableWindow(GetDlgItem(hwndDlg, IDC_TEXTFRAMENAME), FALSE);            EnableWindow(GetDlgItem(hwndDlg, IDC_EDITTEXTFRAME), TRUE);            break;        }        case ID3FID_USERTEXT:           case ID3FID_COMMENT:        case ID3FID_UNSYNCEDLYRICS:     case ID3FID_WWWUSER:        {            EnableWindow(GetDlgItem(hwndDlg, IDC_TEXTFRAMENAME), TRUE);            EnableWindow(GetDlgItem(hwndDlg, IDC_EDITTEXTFRAME), TRUE);            break;        }        default:            EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE);            EnableWindow(GetDlgItem(hwndDlg, IDC_TEXTFRAMENAME), FALSE);            EnableWindow(GetDlgItem(hwndDlg, IDC_EDITTEXTFRAME), FALSE);            break;        }        return TRUE;    case WM_COMMAND:        switch (LOWORD(wParam)) {        case IDOK:        {            GetDlgItemText(hwndDlg, IDC_TEXTFRAMENAME, pItem->aCols[0], 1024);            GetDlgItemText(hwndDlg, IDC_EDITTEXTFRAME, pItem->aCols[1], 1024);            lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;            lvi.state = 0;            lvi.stateMask = 0;            lvi.pszText = LPSTR_TEXTCALLBACK;   /* app. maintains text */            lvi.iImage = 0;            lvi.iItem = editItemIndex;            lvi.iSubItem = 0;            lvi.lParam = (LPARAM)pItem;    /* item data */            /* Add the item. */            ListView_SetItem(m_hwndList, &lvi);            ListView_Update(m_hwndList, editItemIndex);        } /* Fall through */        case IDCANCEL:            EndDialog(hwndDlg, wParam);            return TRUE;        }    }    return FALSE;}/* Double clicking means editing a frame */BOOL List_EditData(HWND hwndApp, HWND hwndList){    LV_ITEM lvi;    BOOL result;    /* First get the selected item */    int index = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED);    m_hwndList = hwndList;    if (index != -1)    {        lvi.mask = LVIF_PARAM;        lvi.iItem = index;        lvi.iSubItem = 0;        if (ListView_GetItem(hwndList, &lvi) == TRUE)        {            pItem = (ID3ITEM*)lvi.lParam;            editItemIndex = lvi.iItem;            result = DialogBox(hInstance_for_id3editor, MAKEINTRESOURCE(IDD_EDITTEXTFRAME),                hwndApp, EditTextFrameProc);            if (LOWORD(result) == IDOK)                return TRUE;        }    }    return FALSE;}/* Delete the selected frame */BOOL List_DeleteSelected(HWND hwndApp, HWND hwndList){    int items;    /* First get the selected item */    int index = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED);    if (index != -1)        ListView_DeleteItem(hwndList, index);    items = ListView_GetItemCount(hwndList);    if (index != -1) return TRUE;    else return FALSE;}/* Save the ID3 to the file */void List_SaveID3(HWND hwndApp, HWND hwndList, char *filename){    LV_ITEM lvi;    ID3ITEM *pItem1;    int i, items;    ID3Tag *tag;    ID3Frame *frame;    ID3Field *field;        /* Strip the tag first, before completely rewriting it */    if ((tag = ID3Tag_New()) != NULL)    {        ID3Tag_Link(tag, filename);        ID3Tag_Strip(tag, ID3TT_ALL);        ID3Tag_Clear(tag);        if (SendMessage(GetDlgItem(hwndApp, IDC_ID3V2TAG), BM_GETCHECK, 0, 0) == BST_UNCHECKED)        {            /* No frames saved */            ID3Tag_Delete(tag);            EnableWindow(GetDlgItem(hwndApp, IDC_ID3V2TAG), FALSE);            ListView_DeleteAllItems(hwndList);            return;        }        /* First get the number of items */        items = ListView_GetItemCount(hwndList);        if (items > 0)        {            for (i = 0; i < items; i++)            {                lvi.mask = LVIF_PARAM;                lvi.iItem = i;                lvi.iSubItem = 0;                if (ListView_GetItem(hwndList, &lvi) == TRUE)                {                    pItem1 = (ID3ITEM*)lvi.lParam;                    frame = ID3Frame_NewID(pItem1->frameId);                    switch (pItem1->frameId)                    {                    case ID3FID_ALBUM:            case ID3FID_BPM:                    case ID3FID_COMPOSER:         case ID3FID_CONTENTTYPE:                    case ID3FID_COPYRIGHT:        case ID3FID_DATE:                    case ID3FID_PLAYLISTDELAY:    case ID3FID_ENCODEDBY:                    case ID3FID_LYRICIST:         case ID3FID_FILETYPE:                    case ID3FID_TIME:             case ID3FID_CONTENTGROUP:                    case ID3FID_TITLE:            case ID3FID_SUBTITLE:                    case ID3FID_INITIALKEY:       case ID3FID_LANGUAGE:                    case ID3FID_SONGLEN:          case ID3FID_MEDIATYPE:                    case ID3FID_ORIGALBUM:        case ID3FID_ORIGFILENAME:                    case ID3FID_ORIGLYRICIST:     case ID3FID_ORIGARTIST:                    case ID3FID_ORIGYEAR:         case ID3FID_FILEOWNER:                    case ID3FID_LEADARTIST:       case ID3FID_BAND:                    case ID3FID_CONDUCTOR:        case ID3FID_MIXARTIST:                    case ID3FID_PARTINSET:        case ID3FID_PUBLISHER:                    case ID3FID_TRACKNUM:         case ID3FID_RECORDINGDATES:                    case ID3FID_NETRADIOSTATION:  case ID3FID_NETRADIOOWNER:                    case ID3FID_SIZE:             case ID3FID_ISRC:                    case ID3FID_ENCODERSETTINGS:  case ID3FID_YEAR:                    {                        field = ID3Frame_GetField(frame, ID3FN_TEXT);                        ID3Field_SetASCII(field, pItem1->aCols[1]);                        ID3Tag_AddFrame(tag, frame);                        break;                    }                    case ID3FID_USERTEXT:                    case ID3FID_COMMENT: /* Can also contain an extra language field (but not used now) */                    case ID3FID_UNSYNCEDLYRICS: /* Can also contain an extra language field (but not used now) */                    {                        field = ID3Frame_GetField(frame, ID3FN_DESCRIPTION);                        ID3Field_SetASCII(field, pItem1->aCols[0]);                        field = ID3Frame_GetField(frame, ID3FN_TEXT);                        ID3Field_SetASCII(field, pItem1->aCols[1]);                        ID3Tag_AddFrame(tag, frame);                        break;                    }                    case ID3FID_WWWAUDIOFILE:     case ID3FID_WWWARTIST:                    case ID3FID_WWWAUDIOSOURCE:   case ID3FID_WWWCOMMERCIALINFO:                    case ID3FID_WWWCOPYRIGHT:     case ID3FID_WWWPUBLISHER:                    case ID3FID_WWWPAYMENT:       case ID3FID_WWWRADIOPAGE:                    {                        field = ID3Frame_GetField(frame, ID3FN_URL);                        ID3Field_SetASCII(field, pItem1->aCols[1]);                        ID3Tag_AddFrame(tag, frame);                        break;                    }                    case ID3FID_WWWUSER:                    {                        field = ID3Frame_GetField(frame, ID3FN_DESCRIPTION);                        ID3Field_SetASCII(field, pItem1->aCols[0]);                        field = ID3Frame_GetField(frame, ID3FN_URL);                        ID3Field_SetASCII(field, pItem1->aCols[1]);                        ID3Tag_AddFrame(tag, frame);                        break;                    }                    default:                        break;                    }                }            }            ID3Tag_UpdateByTagType(tag, ID3TT_ID3V2);        }        ID3Tag_Delete(tag);    }}/* Get the title from the file */void GetID3FileTitle(char *filename, char *title, char *format){    ID3Tag *tag;    ID3Frame *frame;    ID3Field *field;    char buffer[255];    int some_info = 0;    char *in = format;    char *out = title;    char *bound = out + (MAX_PATH - 10 - 1);    if ((tag = ID3Tag_New()) != NULL)    {        ID3Tag_Link(tag, filename);        while (*in && out < bound)        {            switch (*in) {            case '%':                ++in;                break;            default:                *out++ = *in++;                continue;            }            /* handle % escape sequence */            switch (*in++) {            case '0':                if ((frame = ID3Tag_FindFrameWithID(tag, ID3FID_TRACKNUM)) != NULL) {                    int size;                    field = ID3Frame_GetField(frame, ID3FN_TEXT);                    size = ID3Field_GetASCII(field, buffer, 255, 1);                    lstrcpy(out, buffer); out += size;                    some_info = 1;                }                break;            case '1':                if ((frame = ID3Tag_FindFrameWithID(tag, ID3FID_LEADARTIST)) != NULL) {                    int size;                    field = ID3Frame_GetField(frame, ID3FN_TEXT);                    size = ID3Field_GetASCII(field, buffer, 255, 1);                    lstrcpy(out, buffer); out += size;                    some_info = 1;                }                break;            case '2':                if ((frame = ID3Tag_FindFrameWithID(tag, ID3FID_TITLE)) != NULL) {                    int size;                    field = ID3Frame_GetField(frame, ID3FN_TEXT);                    size = ID3Field_GetASCII(field, buffer, 255, 1);                    lstrcpy(out, buffer); out += size;                    some_info = 1;                }                break;            case '3':                if ((frame = ID3Tag_FindFrameWithID(tag, ID3FID_ALBUM)) != NULL) {                    int size;                    field = ID3Frame_GetField(frame, ID3FN_TEXT);                    size = ID3Field_GetASCII(field, buffer, 255, 1);                    lstrcpy(out, buffer); out += size;                    some_info = 1;                }                break;            case '4':                if ((frame = ID3Tag_FindFrameWithID(tag, ID3FID_YEAR)) != NULL) {                    int size;                    field = ID3Frame_GetField(frame, ID3FN_TEXT);                    size = ID3Field_GetASCII(field, buffer, 255, 1);                    lstrcpy(out, buffer); out += size;                    some_info = 1;                }                break;            case '5':                if ((frame = ID3Tag_FindFrameWithID(tag, ID3FID_COMMENT)) != NULL) {                    int size;                    field = ID3Frame_GetField(frame, ID3FN_TEXT);                    size = ID3Field_GetASCII(field, buffer, 255, 1);                    lstrcpy(out, buffer); out += size;                    some_info = 1;                }                break;            case '6':                if ((frame = ID3Tag_FindFrameWithID(tag, ID3FID_CONTENTTYPE)) != NULL) {                    int size; char *tmp;                    field = ID3Frame_GetField(frame, ID3FN_TEXT);                    size = ID3Field_GetASCII(field, buffer, 255, 1);                    tmp = GetGenre(buffer);                    lstrcpy(out, tmp); out += size;                    some_info = 1;                }                break;            case '7':            {                char *p=filename+lstrlen(filename);                int len = 0;                while (*p != '\\' && p >= filename) { p--; len++; }                lstrcpy(out, ++p); out += len;                some_info = 1;                break;            }            }        }        *out = '\0';        ID3Tag_Delete(tag);    }    if (!some_info)    {        char *p=filename+lstrlen(filename);        while (*p != '\\' && p >= filename) p--;        lstrcpy(title,++p);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -