📄 tags.c
字号:
/* * MP3Tag - Add ID3 tags to MP3 files based on their filename * Copyright (C)2000 Dave Ewart (davee@sungate.co.uk) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <stdio.h>#include <string.h>#include "defs.h"#include "const.h"int WriteTag (struct tagdata sometag, FILE *somefile, int style);// char *GetArtist (char fname);int AlreadyGotTag(FILE *somefile);struct tagdata ReadTag(FILE *somefile);int DisplayTag(struct tagdata sometag);struct tagdata CreateTag(char *filename);int WriteTag (struct tagdata sometag, FILE *somefile, int style) { if (style==WRITETAG_REPLACE) { if (!fseek(somefile,-128,SEEK_END)) { fputs("TAG",somefile); fputs(sometag.title,somefile); fputs(sometag.artist,somefile); fputs(sometag.album,somefile); fputs(sometag.year,somefile); fputs(sometag.comment,somefile); putc(sometag.genre,somefile); return (WRITETAG_OK); } else { return(WRITETAG_FAIL); }; } else if (style==WRITETAG_NEW) { if (!fseek(somefile,0,SEEK_END)) { fputs("TAG",somefile); fputs(sometag.title,somefile); fputs(sometag.artist,somefile); fputs(sometag.album,somefile); fputs(sometag.year,somefile); fputs(sometag.comment,somefile); putc(sometag.genre,somefile); return (WRITETAG_OK); } else { return(WRITETAG_FAIL); }; } else { printf("This should never happen!!\n"); return(WRITETAG_FAIL); }}/* Move file pointer to 128 bytes from end of file, to look for tag. * Three characters here should be "TAG". */int AlreadyGotTag(FILE *somefile) { int val; char tag[4]; if (!fseek(somefile,-128,SEEK_END)) { if (strcmp(fgets(tag,4,somefile),"TAG")==0) { return(TAG_FOUND); } else { return (TAG_NOTFOUND); } } else { return(TAG_ERROR); }}struct tagdata ReadTag(FILE *somefile) { int val; char tag[4]; char buf[31]; struct tagdata sometag; if (!fseek(somefile,-128,SEEK_END)) { if (strcmp(fgets(tag,4,somefile),"TAG")==0) { strcpy(sometag.title,fgets(buf,31,somefile)); strcpy(sometag.artist,fgets(buf,31,somefile)); strcpy(sometag.album,fgets(buf,31,somefile)); strcpy(sometag.year,fgets(buf,5,somefile)); strcpy(sometag.comment,fgets(buf,31,somefile)); sometag.genre=getc(somefile); } } return(sometag);}int DisplayTag(struct tagdata sometag) { printf("--- |%s|\n",sometag.title); printf("--- |%s|\n",sometag.artist); printf("--- |%s|\n",sometag.album); printf("--- |%s|\n",sometag.year); printf("--- |%s|\n",sometag.comment); printf("--- |%d|\n",sometag.genre); return(0);}struct tagdata CreateTag(char *filename) { char *r; char *s; char tag[4]; char buf[31]; struct tagdata sometag; int lenart; int i; char *art; char *album; // printf("- Creating a tag from filename %s ...\n",filename); // Search for " - " in the filename r=strstr(filename," - "); if (!r) { // printf("- Cannot find - in filename.\n"); strncpy(sometag.title,filename,30); sometag.title[30]='\0'; strncpy(sometag.artist,filename,30); sometag.artist[30]='\0'; strncpy(sometag.album,filename,30); sometag.album[30]='\0'; strncpy(sometag.year,"2000",4); sometag.year[4]='\0'; strncpy(sometag.comment,TAG_COMMENT,30); sometag.comment[30]='\0'; sometag.genre=13; } else { // printf("- Found - processing ...\n"); lenart=r-filename; r+=3; strncpy(sometag.title,r,30); sometag.title[strlen(sometag.title)-4]='\0'; if (strlen(sometag.title)<30) { for (i=strlen(sometag.title);i<30;i++) { sometag.title[i]=' '; } } else { sometag.title[30]='\0'; } strncpy(sometag.artist,filename,lenart); sometag.artist[lenart]='\0'; if (strlen(sometag.artist)<30) { for (i=strlen(sometag.artist);i<30;i++) { sometag.artist[i]=' '; } } else { sometag.artist[30]='\0'; } //strncpy(sometag.album,filename,30); strcpy(sometag.album," "); strncpy(sometag.year,"2000",4); sometag.year[4]='\0'; strncpy(sometag.comment,TAG_COMMENT,30); sometag.comment[30]='\0'; sometag.genre=13; } return(sometag);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -