summary refs log tree commit diff stats
path: root/plugins/mpcinfo
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/mpcinfo')
-rw-r--r--plugins/mpcinfo/functions.c156
-rw-r--r--plugins/mpcinfo/mp3Info.c334
-rw-r--r--plugins/mpcinfo/mpcInfo.c160
-rw-r--r--plugins/mpcinfo/mpcinfo.def3
-rw-r--r--plugins/mpcinfo/mpcinfo.vcxproj59
-rw-r--r--plugins/mpcinfo/mpcinfo.vcxproj.filters23
-rw-r--r--plugins/mpcinfo/oggInfo.c124
-rw-r--r--plugins/mpcinfo/theme.c148
8 files changed, 0 insertions, 1007 deletions
diff --git a/plugins/mpcinfo/functions.c b/plugins/mpcinfo/functions.c
deleted file mode 100644
index e5993948..00000000
--- a/plugins/mpcinfo/functions.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- *  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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <glib.h>
-
-char *split(char *text, char separator)
-{
-	int pos = -1;
-	size_t i;
-	for (i = 0; i < strlen(text); i++)
-	{
-		if (text[i] == separator) {
-			pos = i;
-			i = strlen(text) + 1;
-		}
-	}
-
-	if (pos == -1)
-	{
-		return text;
-	}
-
-	text[pos] = 0;
-	return &(text[pos + 1]);
-}
-
-int endsWith(char *text, char *suffix){
-    char *tmp=strstr(text,suffix);
-    if (tmp==NULL) return 0;
-    if (strlen(tmp)==strlen(suffix)) return 1;
-    return 0;
-}
-
-int inStr(char *s1, size_t sl1, char *s2)
-{
-	size_t i;
-	for (i = 0; i < sl1 - strlen(s2); i++)
-	{
-		size_t j;
-		for (j = 0; j < strlen(s2); j++)
-		{
-			if (s1[i + j] != s2[j])
-			{
-				j = strlen(s2) + 2;
-			}
-		}
-
-		if (j == strlen(s2))
-		{
-			return i;
-		}
-	}
-
-	return -1;
-}
-
-static char *subString(char *text, int first, int length, int spcKill){
-//if (DEBUG==1) putlog("creating substring");
-	char *ret = g_new (char, length + 1);
-	int i;
-	ret[length]=0;
-	for (i=0;i<length;i++){
-		ret[i]=text[i+first];
-		//if (ret[i]==0) ret[i]='0';
-	}
-	if (spcKill==1){
-	   for (i=length-1;i>=0;i--){
-           if (ret[i]==32) ret[i]=0;
-           else i=-1;
-       }
-    }
-    //if (DEBUG==1) putlog("substring created");
-	return ret;
-}
-
-static char *substring(char *text, int first, int length){return subString(text,first,length,0);}
-
-
-char *readLine(FILE *f){
-     //if (DEBUG==1) putlog("reading line from file");
-     char *buffer = g_new (char, 1024);
-     int pos=0;
-     int cc=0;
-     while((cc!=EOF)&&(pos<1024)&&(cc!=10)){
-          cc=fgetc(f);
-          if ((cc!=10)&&(cc!=13)){
-             if (cc==EOF) buffer[pos]=0;
-             else buffer[pos]=(char)cc;pos++;
-          }
-     }
-     if (buffer[pos]==EOF) hexchat_printf(ph,"EOF: %i\n",pos);
-     return buffer;
-}
-
-char *toUpper(char *text)
-{
-	char *ret = (char*) calloc(strlen(text) + 1, sizeof(char));
-
-	size_t i;
-	for (i = 0; i < strlen(text); i++)
-	{
-		ret[i] = toupper(text[i]);
-	}
-
-	ret[strlen(text)] = 0;
-
-	return ret;
-}
-
-static char *str3cat(char *s1, char *s2, char *s3){
-       //if (DEBUG==1) putlog("cating 3 strings");
-       char *ret=(char*)calloc(strlen(s1)+strlen(s2)+strlen(s3)+1,sizeof(char));
-       strcpy(ret,s1);strcat(ret,s2);strcat(ret,s3);
-       ret[strlen(s1)+strlen(s2)+strlen(s3)]=0;
-       //if (DEBUG==1) putlog("strings cated");
-       return ret;
-}
-
-char *replace(char *text, char *from, char *to){
-     //if (DEBUG==1) putlog("replacing");
-     char *ret=(char*)calloc( strlen(text)+(strlen(to)-strlen(from)),sizeof(char));
-     char *left;
-     char *right;
-     int pos=inStr(text,strlen(text),from);
-     if (pos!=-1){
-           left=substring(text,0,pos);
-           right=substring(text,pos+strlen(from),strlen(text)-(pos+strlen(from)));          
-           ret=str3cat(left,to,right);
-           return replace(ret,from,to);
-     }
-     //if (DEBUG==1) putlog("replaced");
-     return text;
-}
-
-char *intReplaceF(char *text, char *from, int to, char *form){
-     //if (DEBUG==1) putlog("replaceF");
-     char *buffer=(char*) calloc(16,sizeof(char));
-     sprintf(buffer,form,to);
-     //if (DEBUG==1) putlog("replaceF done");
-     return replace(text,from,buffer);
-}
-
-char *intReplace(char *text, char *from, int to){return intReplaceF(text,from,to,"%i");}
diff --git a/plugins/mpcinfo/mp3Info.c b/plugins/mpcinfo/mp3Info.c
deleted file mode 100644
index 240b07a6..00000000
--- a/plugins/mpcinfo/mp3Info.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- *  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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-//#include <stdio.h>
-#include <sys/stat.h>
-//#include "functions.c"
-
-struct tagInfo{
-	int mode;
-	int cbr;
-	int bitrate;
-	unsigned int freq;
-	char *artist;
-	char *title;
-	char *album;
-	char *comment;
-	char *genre;
-	//int genre;
-	//int track;
-};
-
-static int RATES[2][3][15]={
-				{//mpeg2
-                    {-1,8,16,24,32,64,80,56,64,128,160,112,128,256,320},//layer3 (V2)    
-					{-1,32,48,56,64,80,96,112,128,160,192,224,256,320,384},//layer2 (V2)
-					{-1,32,64,96,128,160,192,224,256,288,320,352,384,416,448},//layer1 (V2)
-                },
-                {//mpeg1
-					{-1,32,40,48,56,64,80,96,112,128,160,192,224,256,320},//layer3 (V1)
-					{-1,32,48,56,64,80,96,112,128,160,192,224,256,320,384},//layer2 (V1)
-                    {-1,32,64,96,128,160,192,224,256,288,320,352,384,416,448},//layer1 (V1)
-        }};
-static int FREQS[2][4]={{22050,24000,16000,-1},{44100,48000,32000,-1}};
-//static double FRATES[]={38.5,32.5,27.8,0.0};
-
-static char GENRES[][50]={"Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge","Hip-Hop","Jazz","Metal",
-"New Age","Oldies","Other","Pop","R&B","Rap","Reggae","Rock","Techno","Industrial",
-"Alternative","Ska","Death Metal","Pranks","Soundtrack","Euro-Techno","Ambient","Trip-Hop","Vocal","Jazz+Funk",
-"Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound Clip","Gospel","Noise",
-"AlternRock","Bass","Soul","Punk","Space","Meditative","Instrumental Pop","Instrumental Rock","Ethnic","Gothic",
-"Darkwave","Techno-Industrial","Electronic","Pop-Folk","Eurodance","Dream","Southern Rock","Comedy","Cult","Gangsta",
-"Top 40","Christian Rap","Pop/Funk","Jungle","Native American","Cabaret","New Wave","Psychadelic","Rave","Showtunes",
-"Trailer","Lo-Fi","Tribal","Acid Punk","Acid Jazz","Polka","Retro","Musical","Rock & Roll","Hard Rock",
-
-//################## END OF OFFICIAL ID3 TAGS, WINAMP TAGS BELOW ########################################
-
-"Folk","Folk/Rock","National Folk","Swing","Fast Fusion","Bebob","Latin","Revival","Celtic","Bluegrass",
-"Avantgarde","Gothic Rock","Progressive Rock","Psychedelic Rock","Symphonic Rock","Slow Rock","Big Band","Chorus","Easy Listening","Acoustic",
-"Humour","Speech","Chanson","Opera","Chamber Music","Sonata","Symphony","Booty Bass","Primus","Porn Groove",
-"Satire","Slow Jam","Club","Tango","Samba","Folklore","Ballad","Poweer Ballad","Rhytmic Soul","Freestyle",
-"Duet","Punk Rock","Drum Solo","A Capela","Euro-House","Dance Hall",
-
-//################## FOUND AT http://en.wikipedia.org/wiki/ID3 ###########################################
-
-"Goa","Drum & Bass","Club-House","Hardcore",
-"Terror","Indie","BritPop","Negerpunk","Polsk Punk","Beat","Christian Gangsta Rap","Heavy Metal","Black Metal","Crossover",
-"Contemporary Christian","Christian Rock","Merengue","Salsa","Thrash Metal","Anime","JPop","Synthpop"
-
-};
-
-static char MODES [][13]={"Stereo","Joint-Stereo","Dual-Channel","Mono"};
-
-int iPow(int x, int y){return (int)(pow((double)x,(double) y));}
-
-int str2int(char *text)
-{
-	int ret = 0;
-
-	size_t i;
-	for (i = 1; i <= strlen(text); i++)
-	{
-		if ((text[strlen(text) - i] > 57) || (text[strlen(text) - i] < 48))
-		{
-			hexchat_printf(ph, "invalid char in string: %i", (int) text[strlen(text) - i]);
-			return 255;
-		}
-
-		ret += ((int) text[strlen(text) - i] - 48)*iPow(10, i - 1);
-	}
-
-	return ret;
-}
-
-static char *tagExtract(char *tag, int tagLen, char* info){
-//if (DEBUG==1) putlog("extracting tag");
-	int pos, len, i;
-	pos=inStr(tag,tagLen,info);
-//hexchat_printf(ph,"pos=%i",pos);
-	if (pos==-1) return "";//NULL;
-	//printf("position of %s = %i\n",info,pos);
-	len=0;
-	//for (i=pos;i<pos+10;i++)printf("tag[%i]=%i \n",i,tag[i]);
-	for (i=0;i<4;i++) {
-		len+=tag[pos+strlen(info)+i]*iPow(255,3-i);
-	}
-	//printf("Tag-Length: %i\n",len);
-	if (strcmp("COMM",info)!=0) return substring(tag,pos+7+strlen(info),len-1);//11
-	return substring(tag,pos+7+strlen(info),len-1);//11
-	//char *ct=substring(tag,pos+7+strlen(info),len-1);//11
-	//return substring(ct,strlen(ct)+1,len-1-strlen(ct)); //<-- do not understand, what i did here :(
-	
-}
-
-struct tagInfo readID3V1(char *file){
-//if (DEBUG==1) putlog("reading ID3V1");
-	FILE *f;
-	struct tagInfo ret;
-	int res, i, c, val;
-	char *tag;
-	char *id;
-	char *tmp;
-	ret.artist=NULL;
-	f=fopen(file,"rb");
-	if (f==NULL){
-       hexchat_print(ph,"file not found while trying to read id3v1");
-       //if (DEBUG==1) putlog("file not found while trying to read id3v1");
-       return ret;
-    }
-	//int offset=getSize(file)-128;
-	res=fseek(f,-128,SEEK_END);
-	if (res!=0) {printf("seek failed\n");fclose(f);return ret;}
-	tag = (char*) malloc(sizeof(char)*129);
-	//long int pos=ftell(f);
-	//printf("position= %li\n",pos);
-	for (i=0;i<128;i++) {
-		c=fgetc(f);
-		if (c==EOF) {hexchat_printf(ph,"read ID3V1 failed\n");fclose(f);free(tag);return ret;}
-		tag[i]=(char)c;
-	}
-	fclose(f);
-	//printf("tag readed: \n");
-	id=substring(tag,0,3);
-	//printf("header: %s\n",id);
-	res=strcmp(id,"TAG");
-	free(id);
-	if (res!=0){hexchat_printf(ph,"no id3 v1 found\n");free(tag);return ret;}
-	ret.title=subString(tag,3,30,1);
-	ret.artist=subString(tag,33,30,1);
-	ret.album=subString(tag,63,30,1);
-	ret.comment=subString(tag,97,30,1);
-	tmp=substring(tag,127,1);
-	//ret.genre=substring(tag,127,1);
-	
-	val=(int)tmp[0];
-	if (val<0)val+=256;
-	//hexchat_printf(ph, "tmp[0]=%i (%i)",val,tmp[0]);
-	if ((val<148)&&(val>=0)) 
-       ret.genre=GENRES[val];//#############changed
-	else {
-         ret.genre="unknown";
-         //hexchat_printf(ph, "tmp[0]=%i (%i)",val,tmp[0]);
-    }
-	//hexchat_printf(ph, "tmp: \"%s\" -> %i",tmp,tmp[0]);
-	//hexchat_printf(ph,"genre \"%s\"",ret.genre);
-	//if (DEBUG==1) putlog("id3v1 extracted");
-	free(tmp);
-	free(tag);
-	return ret;
-}
-
-char *extractID3Genre(char *tag)
-{
-	if (tag[strlen(tag) - 1] == ')')
-	{
-		tag[strlen(tag) - 1] = 0;
-		tag = &tag[1];
-		return GENRES[str2int(tag)];
-	}
-	else
-	{
-		size_t i;
-		for (i = 0; i < strlen(tag); i++)
-		{
-			if (tag[i] == ')')
-			{
-				tag = &tag[i] + 1;
-				return tag;
-			}
-		}
-	}
-
-	return "[152] failed";
-}
-
-struct tagInfo readID3V2(char *file){
-//if (DEBUG==1) putlog("reading id3v2");
-	FILE *f;
-	int i, c, len;
-	char header[10];
-	char *tag;
-	struct tagInfo ret;
-
-	f = fopen(file,"rb");
-	//hexchat_printf(ph,"file :%s",file);
-	if (f==NULL)
-	{
-       hexchat_print(ph,"file not found whilt trying to read ID3V2");
-       //if (DEBUG==1)putlog("file not found while trying to read ID3V2");
-       return ret;
-    }
-
-	ret.artist=NULL;
-	for (i=0;i<10;i++){
-        c=fgetc(f);
-        if (c==EOF){
-            fclose(f);
-           //putlog("found eof while reading id3v2");
-           return ret;
-        }
-        header[i]=(char)c;
-    }
-	if (strstr(header,"ID3")==header){
-		//hexchat_printf(ph,"found id3v2\n");
-		len=0;
-		for (i=6;i<10;i++) len+=(int)header[i]*iPow(256,9-i);
-		
-		//char *tag=(char*)malloc(sizeof(char)*len);
-		tag=(char*) calloc(len,sizeof(char)); //malloc(sizeof(char)*len);
-		for (i=0;i<len;i++){c=fgetc(f);tag[i]=(char)c;}
-//hexchat_printf(ph,"tag length: %i\n",len);
-//hexchat_printf(ph,"tag: %s\n",tag);
-		fclose(f);
-		ret.comment=tagExtract(tag,len,"COMM");
-//hexchat_printf(ph,"Comment: %s\n",ret.comment);
-		ret.genre=tagExtract(tag,len,"TCON");
-		//if (strcmp(ret.genre,"(127)")==0) ret.genre="unknown";
-//hexchat_printf(ph, "ret.genre = %s",ret.genre);
-		if ((ret.genre!=NULL)&&(ret.genre[0]=='(')) ret.genre=extractID3Genre(ret.genre);
-//hexchat_printf(ph,"genre: %s\n",ret.genre);
-		ret.title=tagExtract(tag,len,"TIT2");
-//hexchat_printf(ph,"Title: %s\n",ret.title);
-		ret.album=tagExtract(tag,len,"TALB");
-//hexchat_printf(ph,"Album: %s\n",ret.album);
-		ret.artist=tagExtract(tag,len,"TPE1");
-//hexchat_printf(ph,"Artist: %s\n",ret.artist);
-	}
-	else{fclose(f);printf("no id3v2 tag found\n"); return ret;}
-	//printf("id2v2 done\n");
-	//if (DEBUG==1) putlog("id3v2 readed");
-	return ret;
-}
-
-struct tagInfo readHeader(char *file){
-//if (DEBUG==1) putlog("reading header");
-	FILE *f;
-	//int buffer[5120];
-	int versionB, layerB, bitrateB, freqB, modeB;
-	int header[4];
-	int count=0;
-	int cc=0;
-	struct tagInfo info;
-	info.artist=NULL;
-
-	f = fopen(file,"rb");
-	if (f==NULL)
-	{
-       hexchat_print(ph,"file not found while trying to read mp3 header");
-       //if (DEBUG==1) putlog("file not found while trying to read mp3 header");
-       return info;
-    }
-	//struct tagInfo tagv2
-	
-	info=readID3V2(file);
-	//struct tagInfo tagv1;//=readID3V1(file);
-	//if 	(tagv2.artist!=NULL){info=tagv2;}
-	//else {
-	if (info.artist==NULL){
-		//printf("searching for id3v1\n");
-		//tagv1=readID3V1(file);
-		info=readID3V1(file); //#####################
-	}
-	/*
-	if (tagv1.artist!=NULL){
-		//printf("Artist: %s\nTitle: %s\nAlbum: %s\nComment: %s\nGenre: %s\n",tagv1.artist,tagv1.title,tagv1.album,tagv1.comment,tagv1.genre);
-		info=tagv1;
-	}
-	*/
-	while ((count<5120)&&(cc!=EOF)&&(cc!=255)) {cc=fgetc(f);count++;}
-	if ((cc==EOF)||(count==5119)) printf("no header found\n");
-	else {
-		//printf("located header at %i\n",count);
-		header[0]=255;
-		for (count=1;count<4;count++){
-			header[count]=fgetc(f);
-			//printf("header[%i]=%i\n",count,header[count]);
-		}
-		versionB=(header[1]&8)>>3;
-		layerB=(header[1]&6)>>1;
-		bitrateB=(header[2]&240)>>4; //4
-		freqB=(header[2]&12)>>2;//2
-		modeB=(header[3]&192)>>6;//6
-		//printf("Mpeg: %i\nLayer: %i\nBitrate: %i\nFreq: %i\nMode: %i\n",versionB, layerB, bitrateB, freqB, modeB);
-		//int Bitrate=RATES[versionB][layerB-1][bitrateB];
-		//int Freq=FREQS[versionB][freqB];
-		info.bitrate=RATES[versionB][layerB-1][bitrateB];
-		info.freq=FREQS[versionB][freqB];
-		info.mode=modeB;	
-	}
-	fclose(f);
-	//if (DEBUG==1) putlog("header readed");
-	return info;
-}
-/*
-static void printMp3Info(char *file){
-	//printf("\nScanning Mp3-File for Informations: %s\n",file);
-	//printf("size:\t%10d byte\n",getSize(file));
-	struct tagInfo info =readHeader(file);
-	printf("%s | %10d",file,getSize(file));
-	if  (info.bitrate>0){
-		//printf("Bitrate: %i\nFreq: %i\nMode: %s\n",info.bitrate,info.freq,MODES[info.mode]);
-		printf(" | %i kbps | %i kHz | %s",info.bitrate,info.freq,MODES[info.mode]);
-		//if (info.artist!=NULL) printf("\nArtist: %s\nTitle: %s\nAlbum: %s\nComment: %s\nGenre: %s\n",info.artist,info.title,info.album,info.comment,info.genre);
-		if (info.artist!=NULL) {
-			printf("| %s | %s | %s | %s | %s",info.artist,info.title,info.album,info.comment,info.genre);
-			//printf("| %s ",info.title);//,info.title,info.album,info.comment,info.genre
-		}
-	}
-	printf("\n");
-	
-}
-*/
diff --git a/plugins/mpcinfo/mpcInfo.c b/plugins/mpcinfo/mpcInfo.c
deleted file mode 100644
index 4ad17689..00000000
--- a/plugins/mpcinfo/mpcInfo.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- *  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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-//static int DEBUG=0;
-static char *VERSION="0.0.6";
-
-#include <windows.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <math.h>
-#include "hexchat-plugin.h"
-static hexchat_plugin *ph;
-
-#include "functions.c"
-#include "mp3Info.c"
-#include "oggInfo.c"
-#include "theme.c"
-
-static int print_themes (char *word[], char *word_eol[], void *userdata){
-       printThemes();
-       return HEXCHAT_EAT_ALL;
-}
-
-static int mpc_themeReload(char *word[], char *word_eol[], void *userdata){
-   themeInit();
-   loadThemes();
-   return HEXCHAT_EAT_ALL;
-}
-
-static int mpc_tell(char *word[], char *word_eol[], void *userdata){
-       char *tTitle, *zero, *oggLine, *line;
-	   struct tagInfo info;
-	   HWND hwnd = FindWindow("MediaPlayerClassicW",NULL);
-       if (hwnd==0) {hexchat_print(ph, randomLine(notRunTheme));return HEXCHAT_EAT_ALL;}
-       
-       tTitle = g_new(char, 1024);
-       GetWindowText(hwnd, tTitle, 1024);
-       zero = strstr (tTitle, " - Media Player Classic");
-	   if (zero != NULL)
-	   {
-		   zero[0] = 0;
-	   }
-	   else
-	   {
-		   g_free(tTitle);
-		   hexchat_print(ph, "pattern not found");
-		   return HEXCHAT_EAT_ALL;
-	   }
-
-       if ((tTitle[1]==':')&&(tTitle[2]=='\\')){
-          //hexchat_print(ph,"seams to be full path");
-          if (endsWith(tTitle,".mp3")==1){
-             //hexchat_print(ph,"seams to be a mp3 file");
-             info = readHeader(tTitle);
-             
-             if ((info.artist!=NULL)&&(strcmp(info.artist,"")!=0)){
-                char *mode=MODES[info.mode];
-                //hexchat_printf(ph,"mode: %s\n",mode);
-                char *mp3Line=randomLine(mp3Theme);
-                mp3Line=replace(mp3Line,"%art",info.artist);
-                mp3Line=replace(mp3Line,"%tit",info.title);
-                mp3Line=replace(mp3Line,"%alb",info.album);
-                mp3Line=replace(mp3Line,"%com",info.comment);
-                mp3Line=replace(mp3Line,"%gen",info.genre);
-                //mp3Line=replace(mp3Line,"%time",pos);
-                //mp3Line=replace(mp3Line,"%length",len);
-                //mp3Line=replace(mp3Line,"%ver",waVers);
-                //mp3Line=intReplace(mp3Line,"%br",br);
-                //mp3Line=intReplace(mp3Line,"%frq",frq);
-                
-                mp3Line=intReplace(mp3Line,"%br",info.bitrate);
-                mp3Line=intReplace(mp3Line,"%frq",info.freq);
-                mp3Line=replace(mp3Line,"%mode",mode);
-                //mp3Line=replace(mp3Line,"%size",size);
-                //mp3Line=intReplace(mp3Line,"%perc",perc);
-                //mp3Line=replace(mp3Line,"%plTitle",title);
-                mp3Line=replace(mp3Line,"%file",tTitle);
-				g_free(tTitle);
-				hexchat_command(ph, mp3Line);
-                return HEXCHAT_EAT_ALL;
-             }
-          }
-          if (endsWith(tTitle,".ogg")==1){
-             hexchat_printf(ph,"Ogg detected\n");
-             info = getOggHeader(tTitle);
-             if (info.artist!=NULL){
-                char *cbr;
-                if (info.cbr==1) cbr="CBR"; else cbr="VBR";
-                oggLine=randomLine(oggTheme);
-                //if (cue==1) oggLine=cueLine;
-                //hexchat_printf(ph,"ogg-line: %s\n",oggLine);
-                oggLine=replace(oggLine,"%art",info.artist);
-                oggLine=replace(oggLine,"%tit",info.title);
-                oggLine=replace(oggLine,"%alb",info.album);
-                oggLine=replace(oggLine,"%com",info.comment);
-                oggLine=replace(oggLine,"%gen",info.genre);
-                //oggLine=replace(oggLine,"%time",pos);
-                //oggLine=replace(oggLine,"%length",len);
-                //oggLine=replace(oggLine,"%ver",waVers);
-                oggLine=intReplace(oggLine,"%chan",info.mode);
-                oggLine=replace(oggLine,"%cbr",cbr);
-                oggLine=intReplace(oggLine,"%br",info.bitrate/1000);//br);
-                oggLine=intReplace(oggLine,"%frq",info.freq);
-                //oggLine=replace(oggLine,"%size",size);
-                //oggLine=intReplace(oggLine,"%perc",perc);
-                //oggLine=replace(oggLine,"%plTitle",title);
-                oggLine=replace(oggLine,"%file",tTitle);
-				g_free(tTitle);
-				hexchat_command(ph, oggLine);
-                return HEXCHAT_EAT_ALL;
-             }
-          }
-       }
-       line=randomLine(titleTheme);
-       line=replace(line,"%title", tTitle);
-	   g_free(tTitle);
-	   hexchat_command(ph, line);
-       return HEXCHAT_EAT_ALL;
-}
-
-int hexchat_plugin_init(hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg){
-	ph = plugin_handle;
-	*plugin_name = "mpcInfo";
-	*plugin_desc = "Information-Script for Media Player Classic"; 
-	*plugin_version=VERSION;
-
-	hexchat_hook_command(ph, "mpc", HEXCHAT_PRI_NORM, mpc_tell,"no help text", 0);
-	hexchat_hook_command(ph, "mpc_themes", HEXCHAT_PRI_NORM, print_themes,"no help text", 0);
-	hexchat_hook_command(ph, "mpc_reloadthemes", HEXCHAT_PRI_NORM, mpc_themeReload,"no help text", 0);
-	hexchat_command (ph, "MENU -ishare\\music.png ADD \"Window/Display Current Song (MPC)\" \"MPC\"");
-
-	themeInit();
-	loadThemes();
-	hexchat_printf(ph, "%s plugin loaded\n", *plugin_name);
-
-	return 1;
-}
-
-int
-hexchat_plugin_deinit (void)
-{
-	hexchat_command (ph, "MENU DEL \"Window/Display Current Song (MPC)\"");
-	hexchat_print (ph, "mpcInfo plugin unloaded\n");
-	return 1;
-}
diff --git a/plugins/mpcinfo/mpcinfo.def b/plugins/mpcinfo/mpcinfo.def
deleted file mode 100644
index e560f50f..00000000
--- a/plugins/mpcinfo/mpcinfo.def
+++ /dev/null
@@ -1,3 +0,0 @@
-EXPORTS 

-hexchat_plugin_init 

-hexchat_plugin_deinit 

diff --git a/plugins/mpcinfo/mpcinfo.vcxproj b/plugins/mpcinfo/mpcinfo.vcxproj
deleted file mode 100644
index 236cb572..00000000
--- a/plugins/mpcinfo/mpcinfo.vcxproj
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>

-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

-  <PropertyGroup Label="Configuration">

-    <PlatformToolset>v140</PlatformToolset>

-    <ConfigurationType>DynamicLibrary</ConfigurationType>

-  </PropertyGroup>

-  <ItemGroup Label="ProjectConfigurations">

-    <ProjectConfiguration Include="Release|Win32">

-      <Configuration>Release</Configuration>

-      <Platform>Win32</Platform>

-    </ProjectConfiguration>

-    <ProjectConfiguration Include="Release|x64">

-      <Configuration>Release</Configuration>

-      <Platform>x64</Platform>

-    </ProjectConfiguration>

-  </ItemGroup>

-  <PropertyGroup Label="Globals">

-    <ProjectGuid>{B0E36D93-CA2A-49FE-9EB9-9C96C6016EEC}</ProjectGuid>

-    <Keyword>Win32Proj</Keyword>

-    <RootNamespace>mpcinfo</RootNamespace>

-  </PropertyGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

-  <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

-  <Import Project="..\..\win32\hexchat.props" />

-  <PropertyGroup>

-    <TargetName>hcmpcinfo</TargetName>

-    <OutDir>$(HexChatRel)plugins\</OutDir>

-  </PropertyGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

-    <ClCompile>

-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;MPCINFO_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <AdditionalIncludeDirectories>..\..\src\common;$(Glib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-    </ClCompile>

-    <Link>

-      <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

-      <AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>

-      <ModuleDefinitionFile>mpcinfo.def</ModuleDefinitionFile>

-    </Link>

-  </ItemDefinitionGroup>

-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

-    <ClCompile>

-      <PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;MPCINFO_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

-      <AdditionalIncludeDirectories>..\..\src\common;$(Glib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-    </ClCompile>

-    <Link>

-      <AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

-      <AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>

-      <ModuleDefinitionFile>mpcinfo.def</ModuleDefinitionFile>

-    </Link>

-  </ItemDefinitionGroup>

-  <ItemGroup>

-    <None Include="mpcinfo.def" />

-  </ItemGroup>

-  <ItemGroup>

-    <ClCompile Include="mpcInfo.c" />

-  </ItemGroup>

-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

-</Project>

diff --git a/plugins/mpcinfo/mpcinfo.vcxproj.filters b/plugins/mpcinfo/mpcinfo.vcxproj.filters
deleted file mode 100644
index 7e22eb30..00000000
--- a/plugins/mpcinfo/mpcinfo.vcxproj.filters
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>

-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

-  <ItemGroup>

-    <Filter Include="Source Files">

-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>

-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>

-    </Filter>

-    <Filter Include="Resource Files">

-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>

-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>

-    </Filter>

-  </ItemGroup>

-  <ItemGroup>

-    <None Include="mpcinfo.def">

-      <Filter>Resource Files</Filter>

-    </None>

-  </ItemGroup>

-  <ItemGroup>

-    <ClCompile Include="mpcInfo.c">

-      <Filter>Source Files</Filter>

-    </ClCompile>

-  </ItemGroup>

-</Project>
\ No newline at end of file
diff --git a/plugins/mpcinfo/oggInfo.c b/plugins/mpcinfo/oggInfo.c
deleted file mode 100644
index 777d2106..00000000
--- a/plugins/mpcinfo/oggInfo.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- *  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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-static int getOggInt(char *buff, int beg, int bytes){
-//if (DEBUG==1) putlog("getOggInt");
-	int ret=0;
-	int i;
-	for (i=0;i<bytes;i++){
-		if (buff[i+beg]>=0) ret+=buff[i+beg]*iPow(256,i);else ret+=(256+buff[i+beg])*iPow(256,i);
-		//printf("[%i]=%i\n",i,buff[i+beg]);
-	}
-	return ret;
-}
-
-static char *upperStr(char *text)
-{
-	char *ret = (char*) malloc(sizeof(char)*(strlen(text) + 1));
-
-	size_t i;
-	for (i = 0; i < strlen(text); i++)
-	{
-		ret[i] = toupper(text[i]);
-	}
-
-	ret[strlen(text)] = 0;
-
-	return ret;
-}
-
-struct tagInfo getOggHeader(char *file){
-//if (DEBUG==1) putlog("reading ogg header");
-	char header[4096];
-	int i, c;
-	int h1pos, h3pos, maxBr, nomBr, minBr, pos, count, tagLen;
-	char *sub;
-	char *name;
-	char *val;
-	char HEADLOC1[]="_vorbis", HEADLOC3[]="_vorbis", HEADLOC5[]="_vorbis";
-	FILE *f;
-	struct tagInfo info;
-
-	info.artist=NULL;
-	f = fopen(file,"rb");
-	if (f==NULL){
-       hexchat_print(ph,"file not found while trying to read ogg header");
-       //if (DEBUG==1) putlog("file not found while trying to read ogg header");
-       return info;
-    }
-
-	for (i=0;i<4095;i++) {c=fgetc(f);header[i]=(char)c;}
-	fclose(f);
-	HEADLOC1[0]=1;
-	HEADLOC3[0]=3;
-	HEADLOC5[0]=5;
-	h1pos=inStr(header,4096,HEADLOC1);
-	h3pos=inStr(header,4096,HEADLOC3);
-	//int h5pos=inStr(header,4096,HEADLOC5); //not needed
-	
-	//printf("loc1: %i\n",h1pos);printf("loc3: %i\n",h3pos);printf("loc5: %i\n",h5pos);
-	maxBr=getOggInt(header,h1pos+7+9,4);
-	nomBr=getOggInt(header,h1pos+7+13,4);
-	minBr=getOggInt(header,h1pos+7+17,4);
-	info.freq=getOggInt(header,h1pos+7+5,4);
-	info.mode=header[h1pos+7+4];
-	info.bitrate=nomBr;
-	if (((maxBr==nomBr)&&(nomBr=minBr))||((minBr==0)&&(maxBr==0))||((minBr=-1)&&(maxBr=-1)) )info.cbr=1;else info.cbr=0;
-	printf("bitrates: %i|%i|%i\n",maxBr,nomBr,minBr);
-	printf("freq: %u\n",info.freq);
-	pos=h3pos+7;
-	pos+=getOggInt(header,pos,4)+4;
-	count=getOggInt(header,pos,4);
-	//printf("tags: %i\n",count);
-	pos+=4;
-
-	info.artist=NULL;info.title=NULL;info.album=NULL;info.comment=NULL;info.genre=NULL;
-	for (i=0;i<count;i++){
-		tagLen=getOggInt(header,pos,4);
-		//printf("taglength: %i\n",tagLen);
-		sub=substring(header,pos+4,tagLen);
-		name=upperStr(substring(sub,0,inStr(sub,tagLen,"=")));
-		val=substring(sub,inStr(sub,tagLen,"=")+1,tagLen-inStr(sub,tagLen,"=")-1);
-		//printf("Tag: %s\n",sub);
-		//printf("Name: %s\n",name);
-		//printf("value: %s\n",val);
-		if (strcmp(name,"ARTIST")==0) info.artist=val;
-		if (strcmp(name,"TITLE")==0) info.title=val;
-		if (strcmp(name,"ALBUM")==0) info.album=val;
-		if (strcmp(name,"GENRE")==0) info.genre=val;
-		if (strcmp(name,"COMMENT")==0) info.comment=val;
-		pos+=4+tagLen;
-		free(name);
-	}
-	if (info.artist==NULL) info.artist="";
-	if (info.album==NULL) info.album ="";
-	if (info.title==NULL) info.title="";
-	if (info.genre==NULL) info.genre="";
-	if (info.comment==NULL) info.comment="";
-	
-	printf("Artist: %s\nTitle: %s\nAlbum: %s\n",info.artist,info.title, info.album);
-	printf("Genre: %s\nComment: %s\nMode: %i\nCBR: %i\n",info.genre,info.comment,info.mode,info.cbr);
-	//if (DEBUG==1) putlog("ogg header readed");
-	return info;
-}
-
-/*
-void printOggInfo(char *file){
-	printf("Scanning Ogg-File for Informations: %s\n",file);
-	printf("size:\t%10d byte\n",getSize(file));
-	struct tagInfo info = getOggHeader(file);
-}
-*/
diff --git a/plugins/mpcinfo/theme.c b/plugins/mpcinfo/theme.c
deleted file mode 100644
index 7b92ec08..00000000
--- a/plugins/mpcinfo/theme.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- *  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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <time.h>
-
-struct theme{
-       int size;
-       char **line;
-};
-
-static struct theme notRunTheme;
-static struct theme titleTheme;
-static struct theme mp3Theme;
-static struct theme oggTheme;
-
-
-void themeInit(){
-     //if (DEBUG==1) putlog("init theme");
-     /*mp3Theme.size=0;oggTheme.size=0;cueTheme.size=0;streamTheme.size=0;etcTheme.size=0;
-     stopTheme.size=0;pauseTheme.size=0;*/
-     
-     notRunTheme.size=0;titleTheme.size=0;
-     srand((unsigned int)time((time_t *)NULL));
-     //if (DEBUG==1) putlog("theme init done");
-}
-
-void printTheme(struct theme data){
-     int i;
-     for (i=0;i<data.size;i++) hexchat_printf(ph,"line[%i]=%s\n",i,data.line[i]);
-}
-
-void printThemes(){
-     hexchat_printf(ph,"\nNotRun-Theme:\n");printTheme(notRunTheme);
-     hexchat_printf(ph,"\nMP3-Theme:\n");printTheme(mp3Theme);
-     hexchat_printf(ph,"\nOGG-Theme:\n");printTheme(oggTheme);
-     hexchat_printf(ph,"\nTitle-Theme:\n");printTheme(titleTheme);
-}
-
-void cbFix(char *line)
-{
-	size_t i;
-	for (i = 0; i < strlen(line); i++)
-	{
-		size_t j;
-
-		if (line[i] == '%')
-		{
-			if ((line[i + 1] == 'C') || (line[i + 1] == 'B') || (line[i + 1] == 'U') || (line[i + 1] == 'O') || (line[i + 1] == 'R'))
-			{
-				if (line[i + 1] == 'C') line[i] = 3;
-				if (line[i + 1] == 'B') line[i] = 2;
-				if (line[i + 1] == 'U') line[i] = 37;
-				if (line[i + 1] == 'O') line[i] = 17;
-				if (line[i + 1] == 'R') line[i] = 26;
-
-				for (j = i + 1; j < strlen(line) - 1; j++)
-				{
-					line[j] = line[j + 1];
-				}
-
-				line[strlen(line) - 1] = 0;
-			}
-		}
-	}
-}
-
-struct theme themeAdd(struct theme data, char *info){
-       //if (DEBUG==1) putlog("adding theme");
-       struct theme ret;
-       char **newLine=(char **)calloc(data.size+1,sizeof(char*));
-       int i;
-       for (i=0;i<data.size;i++) newLine[i]=data.line[i];
-       cbFix(info);
-       newLine[data.size]=info;
-       ret.line=newLine;ret.size=data.size+1;
-       //if (DEBUG==1) putlog("theme added");
-       return ret;
-}
-
-void loadThemes(){
-    char *hDir, *hFile, *line, *lineCap, *val;
-	FILE *f;
-	hexchat_print(ph,"loading themes\n");
-    hDir=(char*)calloc(1024,sizeof(char));
-    strcpy(hDir,hexchat_get_info(ph,"configdir"));
-    hFile=str3cat(hDir,"\\","mpcInfo.theme.txt");
-    f = fopen(hFile,"r");
-    free(hDir);
-    free(hFile);
-    if(f==NULL)
-	{
-		hexchat_print(ph,"no theme in homedir, checking global theme");
-		f=fopen("mpcInfo.theme.txt","r");
-    }
-	//hexchat_printf(ph,"file_desc: %p\n",f);
-	if (f==NULL) hexchat_print(ph, "no theme found, using hardcoded\n");
-	else {
-		if (f > 0)
-		{
-			line=" ";
-		} else
-		{
-			line="\0";
-		}
-
-		while (line[0]!=0)
-		{
-			line=readLine(f);
-			val=split(line,'=');
-			printf("line: %s\n",line);
-			printf("val: %s\n",val);
-			lineCap=toUpper(line);
-			if (strcmp(lineCap,"OFF_LINE")==0) notRunTheme=themeAdd(notRunTheme,val);
-			if (strcmp(lineCap,"TITLE_LINE")==0) titleTheme=themeAdd(titleTheme,val);
-			if (strcmp(lineCap,"MP3_LINE")==0) mp3Theme=themeAdd(mp3Theme,val);
-			if (strcmp(lineCap,"OGG_LINE")==0) mp3Theme=themeAdd(oggTheme,val);
-			free(lineCap);
-		}
-		fclose(f);
-		hexchat_print(ph, "theme loaded successfull\n");
-	}
-	if (notRunTheme.size==0) notRunTheme=themeAdd(notRunTheme,"Media Player Classic not running");
-	if (titleTheme.size==0) titleTheme=themeAdd(titleTheme,"say Playing %title in Media Player Classic");
-	if (mp3Theme.size==0) mp3Theme=themeAdd(mp3Theme,"me listens to %art with %tit from %alb [%gen|%br kbps|%frq kHz|%mode] in Media Player Classic ");
-	if (oggTheme.size==0) oggTheme=themeAdd(oggTheme,"me listens to %art with %tit from %alb [%gen|%br kbps|%frq kHz|%chan channels] in Media Player Classic ");
-	//mp3Theme=themeAdd(mp3Theme,"me listens to %art with %tit from %alb [%time|%length|%perc%|%br kbps|%frq kHz|%mode] in Media Player Classic ");
-}
-
-int rnd(int max){
-    return rand()%max;
-}
-
-char *randomLine(struct theme data){
-     return data.line[rnd(data.size)];
-}