diff options
author | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-10-08 18:43:29 +0000 |
---|---|---|
committer | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-10-08 18:43:29 +0000 |
commit | 864081102a5f252415f41950b3039a896b4ae9c5 (patch) | |
tree | c6b764651e9dd1f8f53b98eab05f16ba4a492a79 /plugins/Watrack/docs | |
parent | db5149b48346c417e18add5702a9dfe7f6e28dd0 (diff) |
Awkwars's plugins - welcome to our trunk
git-svn-id: http://svn.miranda-ng.org/main/trunk@1822 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Watrack/docs')
-rw-r--r-- | plugins/Watrack/docs/const.php | 157 | ||||
-rw-r--r-- | plugins/Watrack/docs/m_music.h | 386 | ||||
-rw-r--r-- | plugins/Watrack/docs/m_music.inc | 404 | ||||
-rw-r--r-- | plugins/Watrack/docs/sampledll.dpr | 139 | ||||
-rw-r--r-- | plugins/Watrack/docs/wat.php | 28 | ||||
-rw-r--r-- | plugins/Watrack/docs/watrack_history.txt | 519 | ||||
-rw-r--r-- | plugins/Watrack/docs/watrack_readme.txt | 110 |
7 files changed, 1743 insertions, 0 deletions
diff --git a/plugins/Watrack/docs/const.php b/plugins/Watrack/docs/const.php new file mode 100644 index 0000000000..f34156280e --- /dev/null +++ b/plugins/Watrack/docs/const.php @@ -0,0 +1,157 @@ +<?php
+
+// SongInfo offsets
+
+define("wato_artist" ,0);
+define("wato_title" ,wato_artist +4);
+define("wato_album" ,wato_title +4);
+define("wato_genre" ,wato_album +4);
+define("wato_comment" ,wato_genre +4);
+define("wato_year" ,wato_comment +4);
+define("wato_mfile" ,wato_year +4);
+define("wato_kbps" ,wato_mfile +4);
+define("wato_khz" ,wato_kbps +4);
+define("wato_channels",wato_khz +4);
+define("wato_track" ,wato_channels+4);
+define("wato_total" ,wato_track +4);
+define("wato_time" ,wato_total +4);
+define("wato_wndtext" ,wato_time +4);
+define("wato_player" ,wato_wndtext +4);
+define("wato_plyver" ,wato_player +4);
+define("wato_icon" ,wato_plyver +4);
+define("wato_fsize" ,wato_icon +4);
+define("wato_vbr" ,wato_fsize +4);
+define("wato_status" ,wato_vbr +4);
+define("wato_plwnd" ,wato_status +4);
+define("wato_codec" ,wato_plwnd +4);
+define("wato_width" ,wato_codec +4);
+define("wato_height" ,wato_width +4);
+define("wato_fps" ,wato_height +4);
+define("wato_date" ,wato_fps +4);
+define("wato_txtver" ,wato_date +4);
+define("wato_lyric" ,wato_txtver +4);
+define("wato_cover" ,wato_lyric +4);
+define("wato_volume" ,wato_cover +4);
+define("wato_url" ,wato_volume +4);
+
+// player control commands
+
+define("WAT_CTRL_PREV" ,1);
+define("WAT_CTRL_PLAY" ,2);
+define("WAT_CTRL_PAUSE",3);
+define("WAT_CTRL_STOP" ,4);
+define("WAT_CTRL_NEXT" ,5);
+define("WAT_CTRL_VOLDN",6);
+define("WAT_CTRL_VOLUP",7);
+define("WAT_CTRL_SEEK" ,8);
+
+// hook service actions
+
+define("WAT_ACT_REGISTER" ,1);
+define("WAT_ACT_UNREGISTER",2);
+define("WAT_ACT_DISABLE" ,3);
+define("WAT_ACT_ENABLE" ,4);
+define("WAT_ACT_GETSTATUS" ,5); // not found/enabled/disabled
+define("WAT_ACT_SETACTIVE" ,6);
+define("WAT_ACT_REPLACE" ,0x10000); // can be combined with WAT_REGISTERFORMAT
+
+// result codes
+
+define("WAT_RES_UNKNOWN" ,-2);
+define("WAT_RES_NOTFOUND",-1);
+define("WAT_RES_ERROR" ,WAT_RES_NOTFOUND);
+define("WAT_RES_OK" ,0);
+define("WAT_RES_DISABLED",1);
+define("WAT_RES_ENABLED" ,WAT_RES_OK);
+define("WAT_RES_NEWFILE" ,3);
+
+// hook service options
+
+define("WAT_OPT_DISABLED" ,0x00000001); // registered but disabled
+define("WAT_OPT_ONLYONE" ,0x00000002); // can't be overwriten
+define("WAT_OPT_PLAYERINFO" ,0x00000004); // song info from player
+define("WAT_OPT_WINAMPAPI" ,0x00000008); // Winamp API support
+define("WAT_OPT_CHECKTIME" ,0x00000010); // check file time for changes
+define("WAT_OPT_VIDEO" ,0x00000020); // only for format registering used
+define("WAT_OPT_LAST" ,0x00000040); // (internal)
+define("WAT_OPT_FIRST" ,0x00000080); // (internal)
+define("WAT_OPT_TEMPLATE" ,0x00000100); // (internal)
+define("WAT_OPT_IMPLANTANT" ,0x00000200); // use process implantation
+define("WAT_OPT_HASURL" ,0x00000400); // (player registration) URL field present
+define("WAT_OPT_CHANGES" ,0x00000800); // obtain only chaged values
+ // (volume, status, window text, elapsed time)
+
+define("WAT_OPT_APPCOMMAND" ,0x00001000); // Special (multimedia) key support
+define("WAT_OPT_CHECKALL" ,0x00002000); // Check all players
+define("WAT_OPT_KEEPOLD" ,0x00004000); // Keep Old opened file
+define("WAT_OPT_MULTITHREAD",0x00008000); // Use multithread scan
+define("WAT_OPT_SINGLEINST" ,0x00010000); // Single player instance
+// services
+
+define("MS_WAT_GETMUSICINFO" ,"WATrack/GetMusicInfo");
+define("MS_WAT_GETFILEINFO" ,"WATrack/GetFileInfo");
+define("MS_WAT_SHOWMUSICINFO","WATrack/ShowMusicInfo");
+define("MS_WAT_MAKEREPORT" ,"WATrack/MakeReport");
+define("MS_WAT_PACKLOG" ,"WATrack/PackLog");
+define("MS_WAT_ADDTOLOG" ,"WATrack/AddToLog");
+define("MS_WAT_PLUGINSTATUS" ,"WATrack/PluginStatus");
+define("MS_WAT_PRESSBUTTON" ,"WATrack/PressButton");
+define("MS_WAT_REPLACETEXT" ,"WATrack/ReplaceText");
+
+// events
+
+define("ME_WAT_MODULELOADED" ,"WATrack/ModuleLoaded");
+define("ME_WAT_NEWSTATUS" ,"WATrack/NewStatus");
+
+// hook services
+
+define("MS_WAT_FORMAT" ,"WATrack/Format");
+define("MS_WAT_WINAMPINFO" ,"WATrack/WinampInfo");
+define("MS_WAT_WINAMPCOMMAND","WATrack/WinampCommand");
+define("MS_WAT_PLAYER" ,"WATrack/Player");
+
+// GetMuscInfo flags
+define("WAT_INF_UNICODE",0);
+define("WAT_INF_ANSI" ,1);
+define("WAT_INF_UTF8" ,2);
+define("WAT_INF_CHANGES",0x100);
+
+// player status
+
+define("WAT_PLS_NORMAL" ,WAT_RES_OK);
+define("WAT_PLS_NOMUSIC" ,WAT_RES_DISABLED);
+define("WAT_PLS_NOTFOUND",WAT_RES_NOTFOUND);
+
+// media status
+
+define("WAT_MES_STOPPED",0);
+define("WAT_MES_PLAYING",1);
+define("WAT_MES_PAUSED" ,2);
+define("WAT_MES_UNKNOWN",-1);
+
+// event types for History
+
+define("EVENTTYPE_WAT_REQUEST",9601);
+define("EVENTTYPE_WAT_ANSWER" ,9602);
+define("EVENTTYPE_WAT_ERROR" ,9603);
+define("EVENTTYPE_WAT_MESSAGE",9604);
+
+// Status events
+define("WAT_EVENT_PLAYERSTATUS",1);
+define("WAT_EVENT_NEWTRACK" ,2);
+define("WAT_EVENT_PLUGINSTATUS",3);
+define("WAT_EVENT_NEWPLAYER" ,4);
+define("WAT_EVENT_NEWTEMPLATE" ,5);
+
+define("TM_MESSAGE" ,0); // privat message
+define("TM_CHANNEL" ,1); // chat
+define("TM_STAT_TITLE",2); // xstatus title
+define("TM_STAT_TEXT" ,3); // [x]status text
+define("TM_POPTITLE" ,4); // popup title
+define("TM_POPTEXT" ,5); // popup text
+define("TM_EXPORT" ,6); // other app
+define("TM_FRAMEINFO" ,7); // frame
+
+define("TM_SETTEXT" ,0x100); // only for service
+define("TM_GETTEXT" ,0); // only for service
+?>
diff --git a/plugins/Watrack/docs/m_music.h b/plugins/Watrack/docs/m_music.h new file mode 100644 index 0000000000..0246fabe34 --- /dev/null +++ b/plugins/Watrack/docs/m_music.h @@ -0,0 +1,386 @@ +#ifndef M_MUSIC
+#define M_MUSIC
+
+#define MIID_WATRACK {0xfc6c81f4, 0x837e, 0x4430, {0x96, 0x01, 0xa0, 0xaa, 0x43, 0x17, 0x7a, 0xe3}}
+
+typedef struct tSongInfoA {
+ CHAR* artist;
+ CHAR* title;
+ CHAR* album;
+ CHAR* genre;
+ CHAR* comment;
+ CHAR* year;
+ CHAR* mfile; // media file
+ DWORD kbps;
+ DWORD khz;
+ DWORD channels;
+ DWORD track;
+ DWORD total; // music length
+ DWORD time; // elapsed time
+ CHAR* wndtext; // window title
+ CHAR* player; // player name
+ DWORD plyver; // player version
+ HANDLE icon; // player icon
+ DWORD fsize; // media file size
+ DWORD vbr;
+ int status; // WAT_MES_* const
+ HWND plwnd; // player window
+ // video part
+ DWORD codec;
+ DWORD width;
+ DWORD height;
+ DWORD fps;
+ __int64 date;
+ CHAR* txtver;
+ CHAR* lyric;
+ CHAR* cover;
+ DWORD volume;
+ CHAR* url; // player homepage
+} SONGINFOA, *LPSONGINFOA;
+
+typedef struct tSongInfo {
+ WCHAR* artist;
+ WCHAR* title;
+ WCHAR* album;
+ WCHAR* genre;
+ WCHAR* comment;
+ WCHAR* year;
+ WCHAR* mfile; // media file
+ DWORD kbps;
+ DWORD khz;
+ DWORD channels;
+ DWORD track;
+ DWORD total; // music length
+ DWORD time; // elapsed time
+ WCHAR* wndtext; // window title
+ WCHAR* player; // player name
+ DWORD* plyver; // player version
+ HANDLE icon; // player icon
+ DWORD fsize; // media file size
+ DWORD vbr;
+ int status; // WAT_MES_* const
+ HWND plwnd; // player window
+ // video part
+ DWORD codec;
+ DWORD width;
+ DWORD height;
+ DWORD fps;
+ __int64 date;
+ WCHAR* txtver;
+ WCHAR* lyric;
+ WCHAR* cover; // cover path
+ DWORD volume;
+ WCHAR* url; // player homepage
+} SONGINFO, *LPSONGINFO;
+
+#if defined(_UNICODE)
+ #define WAT_INF_TCHAR WAT_INF_UNICODE
+ #define SongInfoT tSongInfo
+#else
+ #define WAT_INF_TCHAR WAT_INF_ANSI
+ #define SongInfoT tSongInfoA
+#endif
+
+ // result codes
+#define WAT_RES_UNKNOWN -2
+#define WAT_RES_NOTFOUND -1
+#define WAT_RES_ERROR WAT_RES_NOTFOUND
+#define WAT_RES_OK 0
+#define WAT_RES_ENABLED WAT_RES_OK
+#define WAT_RES_DISABLED 1
+ // internal
+#define WAT_RES_NEWFILE 3
+#define WAT_RES_NEWPLAYER 4
+
+// result for MS_WAT_GETMUSICINFO service
+#define WAT_PLS_NORMAL WAT_RES_OK
+#define WAT_PLS_NOMUSIC WAT_RES_DISABLED
+#define WAT_PLS_NOTFOUND WAT_RES_NOTFOUND
+
+#define WAT_INF_UNICODE 0
+#define WAT_INF_ANSI 1
+#define WAT_INF_UTF8 2
+#define WAT_INF_CHANGES 0x100
+
+/*
+ wParam : WAT_INF_* constant
+ lParam : pointer to LPSONGINGO (Unicode) or LPSONGINFOA (ANSI/UTF8)
+ Affects: Fill structure by currently played music info
+ returns: WAT_PLS_* constant
+ note: pointer will be point to global SONGINFO structure of plugin
+ warning: Non-Unicode data filled only by request
+ if lParam=0 only internal SongInfo structure will be filled
+ Example:
+ LPSONGINFO p;
+ PluginLink->CallService(MS_WAT_GETMUSICINFO,0,(DWORD)&p);
+*/
+#define MS_WAT_GETMUSICINFO "WATrack/GetMusicInfo"
+
+/*
+ wParam:0
+ lParam : pointer to pSongInfo (Unicode)
+ Affects: Fill structure by info from file named in SongInfo.mfile
+ returns: 0, if success
+ note: fields, which values can't be obtained, leaves old values.
+ you must free given strings by miranda mmi.free
+*/
+#define MS_WAT_GETFILEINFO "WATrack/GetFileInfo"
+
+/*
+ wParam: encoding (WAT_INF_* consts, 0 = WAT_INF_UNICODE)
+ lParam: codepage (0 = ANSI)
+ Returns Global unicode SongInfo pointer or tranlated to Ansi/UTF8 structure
+*/
+#define MS_WAT_RETURNGLOBAL "WATrack/GetMainStructure"
+
+//!! DON'T CHANGE THESE VALUES!
+#define WAT_CTRL_FIRST 1
+
+#define WAT_CTRL_PREV 1
+#define WAT_CTRL_PLAY 2
+#define WAT_CTRL_PAUSE 3
+#define WAT_CTRL_STOP 4
+#define WAT_CTRL_NEXT 5
+#define WAT_CTRL_VOLDN 6
+#define WAT_CTRL_VOLUP 7
+#define WAT_CTRL_SEEK 8 // lParam is new position (sec)
+
+#define WAT_CTRL_LAST 8
+
+/*
+ wParam: button code (WAT_CTRL_* const)
+ lParam: 0, or value (see WAT_CTRL_* const comments)
+ Affects: emulate player button pressing
+ returns: 0 if unsuccesful
+*/
+#define MS_WAT_PRESSBUTTON "WATrack/PressButton"
+
+/*
+ Get user's Music Info
+*/
+#define MS_WAT_GETCONTACTINFO "WATrack/GetContactInfo"
+
+// ------------ Plugin/player status ------------
+
+/*
+ wParam: 1 - switch off plugin
+ 0 - switch on plugin
+ -1 - switch plugin status
+ 2 - get plugin version
+ other - get plugin status
+ lParam: 0
+ Affects: Switch plugin status to enabled or disabled
+ returns: old plugin status, 0, if was enabled
+*/
+#define MS_WAT_PLUGINSTATUS "WATrack/PluginStatus"
+
+// ---------- events ------------
+
+/*ME_WAT_MODULELOADED
+ wParam: 0, lParam: 0
+*/
+#define ME_WAT_MODULELOADED "WATrack/ModuleLoaded"
+
+#define WAT_EVENT_PLAYERSTATUS 1 //lParam: WAT_PLS_* const
+#define WAT_EVENT_NEWTRACK 2 //lParam: LPSONGINFO
+#define WAT_EVENT_PLUGINSTATUS 3 //lParam: 0-enabled; 1-dis.temporary; 2-dis.permanent
+#define WAT_EVENT_NEWPLAYER 4 //
+#define WAT_EVENT_NEWTEMPLATE 5 //lParam: TM_* constant
+
+/*ME_WAT_NEWSTATUS
+ Plugin or player status changed:
+ wParam: type of event (see above)
+ lParam: value
+*/
+#define ME_WAT_NEWSTATUS "WATrack/NewStatus"
+
+// ---------- Popup module ------------
+
+/*
+ wParam: not used
+ lParam: not used
+ Affects: Show popup or Info window with current music information
+ note: Only Info window will be showed if Popup plugin disabled
+*/
+#define MS_WAT_SHOWMUSICINFO "WATrack/ShowMusicInfo"
+
+// --------- Statistic (report) module -------------
+
+/*
+ wParam: pointer to log file name or NULL
+ lParam: pointer to report file name or NULL
+ Affects: Create report from log and run it (if option is set)
+ returns: 0 if unsuccesful
+ note: if wParam or lParam is a NULL then file names from options are used
+*/
+#define MS_WAT_MAKEREPORT "WATrack/MakeReport"
+
+/*
+ wParam, lParam - not used
+ Affects: pack statistic file
+*/
+#define MS_WAT_PACKLOG = "WATrack/PackLog"
+
+/*
+ wParam: not used
+ lParam: pointer to SongInfo
+*/
+#define MS_WAT_ADDTOLOG = "WATrack/AddToLog"
+
+// ----------- Formats and players -----------
+
+// media file status
+
+#define WAT_MES_STOPPED 0
+#define WAT_MES_PLAYING 1
+#define WAT_MES_PAUSED 2
+#define WAT_MES_UNKNOWN -1
+
+#define WAT_ACT_REGISTER 1
+#define WAT_ACT_UNREGISTER 2
+#define WAT_ACT_DISABLE 3
+#define WAT_ACT_ENABLE 4
+#define WAT_ACT_GETSTATUS 5 // not found/enabled/disabled
+#define WAT_ACT_SETACTIVE 6
+#define WAT_ACT_REPLACE 0x10000 // can be combined with WAT_REGISTERFORMAT
+
+ // flags
+#define WAT_OPT_DISABLED 0x00001 // format registered but disabled
+#define WAT_OPT_ONLYONE 0x00002 // format can't be overwriten
+#define WAT_OPT_PLAYERINFO 0x00004 // song info from player
+#define WAT_OPT_WINAMPAPI 0x00008 // Winamp API support
+#define WAT_OPT_CHECKTIME 0x00010 // check file time for changes
+#define WAT_OPT_VIDEO 0x00020 // only for format registering used
+#define WAT_OPT_LAST 0x00040 // (internal)
+#define WAT_OPT_FIRST 0x00080 // (internal)
+#define WAT_OPT_TEMPLATE 0x00100 // (internal)
+#define WAT_OPT_IMPLANTANT 0x00200 // use process implantation
+#define WAT_OPT_HASURL 0x00400 // (player registration) URL field present
+#define WAT_OPT_CHANGES 0x00800 // obtain only chaged values
+ // (volume, status, window text, elapsed time)
+#define WAT_OPT_APPCOMMAND 0x01000 // Special (multimedia) key support
+#define WAT_OPT_CHECKALL 0x02000 // Check all players
+#define WAT_OPT_KEEPOLD 0x04000 // Keep Old opened file
+#define WAT_OPT_MULTITHREAD 0x08000 // Use multithread scan
+#define WAT_OPT_SINGLEINST 0x10000 // Single player instance
+#define WAT_OPT_PLAYERDATA 0x20000 // (internal) to obtain player data
+
+
+typedef BOOL (__cdecl *LPREADFORMATPROC)(LPSONGINFO Info);
+
+typedef struct tMusicFormat {
+ LPREADFORMATPROC proc;
+ CHAR ext[8];
+ UINT flags;
+} MUSICFORMAT, *LPMUSICFORMAT;
+
+/*
+ wParam: action
+ lParam: pointer to MUSICFORMAT if wParam = WAT_ACT_REGISTER,
+ else - pointer to extension string (ANSI)
+ returns: see result codes
+*/
+#define MS_WAT_FORMAT "WATrack/Format"
+
+/*
+ wParam - pointer to SONGINFO structure (plwind field must be initialized)
+ lParam - flags
+ Affects: trying to fill SongInfo using Winamp API
+*/
+#define MS_WAT_WINAMPINFO "WATrack/WinampInfo"
+
+/*
+ wParam: window
+ lParam: LoWord - command; HiWord - value
+*/
+#define MS_WAT_WINAMPCOMMAND "WATrack/WinampCommand"
+
+typedef int (__cdecl *LPINITPROC) ();
+typedef int (__cdecl *LPDEINITPROC) ();
+typedef int (__cdecl *LPSTATUSPROC) (HWND wnd);
+typedef WCHAR (__cdecl *LPNAMEPROC) (HWND wnd, int flags);
+typedef HWND (__cdecl *LPCHECKPROC) (HWND wnd,int flags);
+typedef int (__cdecl *LPINFOPROC) (LPSONGINFO Info, int flags);
+typedef int (__cdecl *LPCOMMANDPROC)(HWND wnd, int command, int value);
+
+typedef struct tPlayerCell {
+ CHAR* Desc; // Short player name
+ UINT flags;
+ HICON Icon; // can be 0. for registration only
+ LPINITPROC Init; // LPINITPROC; can be NULL. initialize any data
+ LPDEINITPROC DeInit; // LPDEINITPROC; can be NULL. finalize player processing
+ LPCHECKPROC Check; // check player
+ LPSTATUSPROC GetStatus; // tStatusProc; can be NULL. get player status
+ LPNAMEPROC GetName; // can be NULL. get media filename
+ LPINFOPROC GetInfo; // can be NULL. get info from player
+ LPCOMMANDPROC Command; // can be NULL. send command to player
+ CHAR* URL; // only if WAT_OPT_HASURL flag present
+ WCHAR* Notes; // any tips, notes etc for this player
+} PLAYERCELL, *LPPLAYERCELL;
+
+/*
+ wParam: action
+ lParam: pointer to PLAYERCELL if wParam = WAT_ACT_REGISTER,
+ else - pointer to player description string (ANSI)
+ returns: player window handle or value>0 if found
+ note: If you use GetName or GetInfo field, please, do not return empty
+ filename even when mediafile is remote!
+*/
+#define MS_WAT_PLAYER "WATrack/Player"
+
+// --------- Last FM ---------
+
+/*
+ Toggle LastFM scrobbling status
+ wParam,lParam=0
+ Returns: previous state
+*/
+#define MS_WAT_LASTFM "WATrack/LastFM"
+
+/*
+ Get Info based on currently played song
+ wParam: pLastFMInfo
+ lParam: int language (first 2 bytes - 2-letters language code)
+*/
+typedef struct tLastFMInfo {
+ UINT request; // 0 - artist, 1 - album, 2 - track
+ WCHAR* artist; // artist
+ WCHAR* album; // album or similar artists for Artist info request
+ WCHAR* title; // track title
+ WCHAR* tags; // tags
+ WCHAR* info; // artist bio or wiki article
+ WCHAR* image; // photo/cover link
+ WCHAR* similar;
+ WCHAR* release;
+ UINT trknum;
+}PLASTFMINFO, *LPLASTFMINFO;
+
+#define MS_WAT_LASTFMINFO "WATrack/LastFMInfo"
+
+// --------- Templates ----------
+
+/*
+ wParam: 0 (standard Info) or pSongInfo
+ lParam: Unicode template
+ returns: New Unicode (replaced) string
+*/
+#define MS_WAT_REPLACETEXT "WATrack/ReplaceText"
+
+/*
+ event types for History
+ Blob structure for EVENTTYPE_WAT_ANSWER:
+ Uniciode artist#0title#0album#0answer
+*/
+#define EVENTTYPE_WAT_REQUEST 9601
+#define EVENTTYPE_WAT_ANSWER 9602
+#define EVENTTYPE_WAT_ERROR 9603
+#define EVENTTYPE_WAT_MESSAGE 9604
+
+/*
+ wParam: 0 or parent window
+ lParam: 0
+ note: Shows Macro help window with edit aliases ability
+*/
+#define MS_WAT_MACROHELP "WATrack/MacroHelp"
+
+#endif
diff --git a/plugins/Watrack/docs/m_music.inc b/plugins/Watrack/docs/m_music.inc new file mode 100644 index 0000000000..1850de52ba --- /dev/null +++ b/plugins/Watrack/docs/m_music.inc @@ -0,0 +1,404 @@ +{$IFNDEF M_MUSIC}
+{$DEFINE M_MUSIC}
+
+// defined in interfaces.inc
+//const MIID_WATRACK:MUUID='{FC6C81F4-837E-4430-9601-A0AA43177AE3}';
+
+type
+ pSongInfoA = ^tSongInfoA;
+ tSongInfoA = packed record
+ artist :PAnsiChar;
+ title :PAnsiChar;
+ album :PAnsiChar;
+ genre :PAnsiChar;
+ comment :PAnsiChar;
+ year :PAnsiChar;
+ mfile :PAnsiChar; // media file
+ kbps :dword;
+ khz :dword;
+ channels :dword;
+ track :dword;
+ total :dword; // music length
+ time :dword; // elapsed time
+ wndtext :PAnsiChar; // window title
+ player :PAnsiChar; // player name
+ plyver :dword; // player version
+ icon :THANDLE; // player icon
+ fsize :dword; // media file size
+ vbr :dword;
+ status :integer; // WAT_MES_* const
+ plwnd :HWND; // player window
+ // video part
+ codec :dword;
+ width :dword;
+ height :dword;
+ fps :dword;
+ date :int64;
+ txtver :PAnsiChar;
+ lyric :PAnsiChar;
+ cover :PAnsiChar;
+ volume :dword;
+ url :PAnsiChar; // player homepage
+ winampwnd:HWND;
+ end;
+type
+ pSongInfo=^tSongInfo;
+ tSongInfo = packed record
+ artist :pWideChar;
+ title :pWideChar;
+ album :pWideChar;
+ genre :pWideChar;
+ comment :pWideChar;
+ year :pWideChar;
+ mfile :pWideChar; // media file
+ kbps :dword;
+ khz :dword;
+ channels :dword;
+ track :dword;
+ total :dword; // music length
+ time :dword; // elapsed time
+ wndtext :pWideChar; // window title
+ player :pWideChar; // player name
+ plyver :dword; // player version
+ icon :THANDLE; // player icon
+ fsize :dword; // media file size
+ vbr :dword;
+ status :integer; // WAT_MES_* const
+ plwnd :HWND; // player window
+ // video part
+ codec :dword;
+ width :dword;
+ height :dword;
+ fps :dword;
+ date :int64;
+ txtver :pWideChar;
+ lyric :pWideChar;
+ cover :pWideChar; // cover path
+ volume :dword;
+ url :PWideChar; // player homepage
+ winampwnd:HWND;
+ end;
+ pSongInfoW = pSongInfo;
+ tSongInfoW = tSongInfo;
+
+const
+ // result codes
+ WAT_RES_UNKNOWN = -2;
+ WAT_RES_NOTFOUND = -1;
+ WAT_RES_ERROR = WAT_RES_NOTFOUND;
+ WAT_RES_OK = 0;
+ WAT_RES_ENABLED = WAT_RES_OK;
+ WAT_RES_DISABLED = 1;
+ // internal
+ WAT_RES_NEWFILE = 3;
+ WAT_RES_NEWPLAYER = 4;
+
+// result for MS_WAT_GETMUSICINFO service
+const
+ WAT_PLS_NORMAL = WAT_RES_OK;
+ WAT_PLS_NOMUSIC = WAT_RES_DISABLED;
+ WAT_PLS_NOTFOUND = WAT_RES_NOTFOUND;
+
+const
+ WAT_INF_UNICODE = 0;
+ WAT_INF_ANSI = 1;
+ WAT_INF_UTF8 = 2;
+ WAT_INF_CHANGES = $100;
+
+const
+ MS_WAT_INSERT:PAnsiChar = 'WATrack/Insert';
+ MS_WAT_EXPORT:PAnsiChar = 'WATrack/Export';
+
+const
+{
+ wParam : WAT_INF_* constant
+ lParam : pointer to pSongInfo (Unicode) or pSongInfoA (ANSI/UTF8)
+ Affects: Fill structure by currently played music info
+ returns: WAT_PLS_* constant
+ note: pointer will be point to global SongInfo structure of plugin
+ warning: Non-Unicode data filled only by request
+ if lParam=0 only internal SongInfo structure will be filled
+ Example:
+ var p:pSongInfo;
+ PluginLink^.CallService(MS_WAT_GETMUSICINFO,0,dword(@p));
+}
+ MS_WAT_GETMUSICINFO:PAnsiChar = 'WATrack/GetMusicInfo';
+{
+ wParam:0
+ lParam : pointer to pSongInfo (Unicode)
+ Affects: Fill structure by info from file named in SongInfo.mfile
+ returns: 0, if success
+ note: fields, which values can't be obtained, leaves old values.
+ you must free given strings by miranda mmi.free
+}
+ MS_WAT_GETFILEINFO:PAnsiChar = 'WATrack/GetFileInfo';
+
+{
+ wParam: encoding (WAT_INF_* consts, 0 = WAT_INF_UNICODE)
+ lParam: codepage (0 = ANSI)
+ Returns Global unicode SongInfo pointer or tranlated to Ansi/UTF8 structure
+}
+ MS_WAT_RETURNGLOBAL:PAnsiChar = 'WATrack/GetMainStructure';
+
+//!! DON'T CHANGE THESE VALUES!
+const
+ WAT_CTRL_FIRST = 1;
+
+ WAT_CTRL_PREV = 1;
+ WAT_CTRL_PLAY = 2;
+ WAT_CTRL_PAUSE = 3;
+ WAT_CTRL_STOP = 4;
+ WAT_CTRL_NEXT = 5;
+ WAT_CTRL_VOLDN = 6;
+ WAT_CTRL_VOLUP = 7;
+ WAT_CTRL_SEEK = 8; // lParam is new position (sec)
+
+ WAT_CTRL_LAST = 8;
+
+{
+ wParam: button code (WAT_CTRL_* const)
+ lParam: 0, or value (see WAT_CTRL_* const comments)
+ Affects: emulate player button pressing
+ returns: 0 if unsuccesful
+}
+ MS_WAT_PRESSBUTTON:PAnsiChar = 'WATrack/PressButton';
+
+{
+ Get user's Music Info
+}
+ MS_WAT_GETCONTACTINFO:PAnsiChar = 'WATrack/GetContactInfo';
+
+// ------------ Plugin/player status ------------
+
+{
+ wParam: 1 - switch off plugin
+ 0 - switch on plugin
+ -1 - switch plugin status
+ 2 - get plugin version
+ other - get plugin status
+ lParam: 0
+ Affects: Switch plugin status to enabled or disabled
+ returns: version, old plugin status, 0, if was enabled
+}
+ MS_WAT_PLUGINSTATUS:PAnsiChar = 'WATrack/PluginStatus';
+
+ ME_WAT_MODULELOADED:PAnsiChar = 'WATrack/ModuleLoaded';
+
+const
+ WAT_EVENT_PLAYERSTATUS = 1; // WAT_PLS_* const
+ WAT_EVENT_NEWTRACK = 2; // SongInfo ptr
+ WAT_EVENT_PLUGINSTATUS = 3; // 0-enabled; 1-dis.temporary; 2-dis.permanent
+ WAT_EVENT_NEWPLAYER = 4; //
+ WAT_EVENT_NEWTEMPLATE = 5; // TM_* constant
+
+{
+ Plugin or player status changed:
+ wParam: type of event (see above)
+ lParam: value
+}
+ ME_WAT_NEWSTATUS:PAnsiChar = 'WATrack/NewStatus';
+
+// ---------- Popup module ------------
+
+{
+ wParam: not used
+ lParam: not used
+ Affects: Show popup or Info window with current music information
+ note: Only Info window will be showed if Popup plugin disabled
+}
+ MS_WAT_SHOWMUSICINFO:PAnsiChar = 'WATrack/ShowMusicInfo';
+
+// --------- Statistic (report) module -------------
+
+{
+ wParam: pointer to log file name or NIL
+ lParam: pointer to report file name or NIL
+ Affects: Create report from log and run it (if option is set)
+ returns: 0 if unsuccesful
+ note: if wParam or lParam is a NIL then file names from options are used
+}
+ MS_WAT_MAKEREPORT :PAnsiChar = 'WATrack/MakeReport';
+// MS_WAT_MAKEREPORTW:PAnsiChar = 'WATrack/MakeReportW';
+
+{
+ wParam, lParam - not used
+ Affects: pack statistic file
+}
+ MS_WAT_PACKLOG:PAnsiChar = 'WATrack/PackLog';
+
+{
+ wParam: not used
+ lParam: pointer to SongInfo
+}
+ MS_WAT_ADDTOLOG:PAnsiChar = 'WATrack/AddToLog';
+
+// ----------- Formats and players -----------
+
+// media file status
+
+const
+ WAT_MES_STOPPED = 0;
+ WAT_MES_PLAYING = 1;
+ WAT_MES_PAUSED = 2;
+ WAT_MES_UNKNOWN = -1;
+
+const
+ WAT_ACT_REGISTER = 1;
+ WAT_ACT_UNREGISTER = 2;
+ WAT_ACT_DISABLE = 3;
+ WAT_ACT_ENABLE = 4;
+ WAT_ACT_GETSTATUS = 5; // not found/enabled/disabled
+ WAT_ACT_SETACTIVE = 6;
+ WAT_ACT_REPLACE = $10000; // can be combined with WAT_REGISTERFORMAT
+
+const
+ // flags
+ WAT_OPT_DISABLED = $00000001; // registered but disabled
+ WAT_OPT_ONLYONE = $00000002; // can't be overwriten
+ WAT_OPT_PLAYERINFO = $00000004; // song info from player
+ WAT_OPT_WINAMPAPI = $00000008; // Winamp API support
+ WAT_OPT_CHECKTIME = $00000010; // check file time for changes
+ WAT_OPT_VIDEO = $00000020; // only for format registering used
+ WAT_OPT_LAST = $00000040; // (internal-Winamp Clone) put to the end of queue
+ WAT_OPT_FIRST = $00000080; // (internal)
+ WAT_OPT_TEMPLATE = $00000100; // (internal)
+ WAT_OPT_IMPLANTANT = $00000200; // use process implantation
+ WAT_OPT_HASURL = $00000400; // (player registration) URL field present
+ WAT_OPT_CHANGES = $00000800; // obtain only chaged values
+ // (volume, status, window text, elapsed time)
+ WAT_OPT_APPCOMMAND = $00001000; // Special (multimedia) key support
+ WAT_OPT_CHECKALL = $00002000; // Check all players
+ WAT_OPT_KEEPOLD = $00004000; // Keep Old opened file
+ WAT_OPT_MULTITHREAD = $00008000; // Use multithread scan
+ WAT_OPT_SINGLEINST = $00010000; // Single player instance
+ WAT_OPT_PLAYERDATA = $00020000; // (internal) to obtain player data
+
+type
+ tReadFormatProc = function(var Info:tSongInfo):boolean; cdecl;
+ pMusicFormat = ^tMusicFormat;
+ tMusicFormat = packed record
+ proc :tReadFormatProc;
+ ext :array [0..7] of AnsiChar;
+ flags:cardinal;
+ end;
+
+const
+{
+ wParam: action
+ lParam: pointer to tMusicFormat if wParam = WAT_ACT_REGISTER,
+ else - pointer to extension string (ANSI)
+ returns: see result codes
+}
+ MS_WAT_FORMAT:PAnsiChar = 'WATrack/Format';
+
+{
+ wParam: pointer to SongInfo structure (plwind field must be initialized)
+ lParam: flags
+ Affects: trying to fill SongInfo using Winamp API
+}
+ MS_WAT_WINAMPINFO:PAnsiChar = 'WATrack/WinampInfo';
+
+{
+ wParam: window
+ lParam: LoWord - command; HiWord - value
+}
+ MS_WAT_WINAMPCOMMAND:PAnsiChar = 'WATrack/WinampCommand';
+
+type
+ tInitProc = function():integer;cdecl;
+ tDeInitProc = function():integer;cdecl;
+ tStatusProc = function(wnd:HWND):integer;cdecl;
+ tNameProc = function(wnd:HWND;flags:integer):pWideChar;cdecl;
+ tCheckProc = function(wnd:HWND;flags:integer):HWND;cdecl;
+ tInfoProc = function(var SongInfo:tSongInfo;flags:integer):integer;cdecl;
+ tCommandProc = function(wnd:HWND;command:integer;value:integer):integer;cdecl;
+
+ pPlayerCell = ^tPlayerCell;
+ tPlayerCell = packed record
+ Desc :PAnsiChar; // Short player name
+ flags :cardinal;
+ Icon :HICON; // can be 0. for registration only
+ Init :pointer; // tInitProc; can be NIL. initialize any data
+ DeInit :pointer; // tDeInitProc; can be NIL. finalize player processing
+ Check :pointer; // tCheckProc; check player
+ GetStatus:pointer; // tStatusProc; can be NIL. get player status
+ GetName :pointer; // tNameProc; can be NIL. get media filename
+ GetInfo :pointer; // tInfoProc; can be NIL. get info from player
+ Command :pointer; // tCommandProc; can be NIL. send command to player
+ URL :PAnsiChar; // only if WAT_OPT_HASURL flag present
+ Notes :PWideChar; // any tips, notes etc for this player
+ end;
+
+const
+{
+ wParam: action
+ lParam: pointer to tPlayerCell if wParam = WAT_ACT_REGISTER,
+ else - pointer to player description string (ANSI)
+ returns: player window handle or value>0 if found
+ note: If you use GetName or GetInfo field, please, do not return empty
+ filename even when mediafile is remote!
+}
+ MS_WAT_PLAYER:PAnsiChar = 'WATrack/Player';
+
+// --------- Last FM ---------
+
+{
+ Toggle LastFM scrobbling status
+ wParam,lParam=0
+ Returns: previous state
+}
+const
+ MS_WAT_LASTFM:pAnsiChar = 'WATrack/LastFM';
+
+{
+ Get Info based on currently played song
+ wParam: pLastFMInfo
+ lParam: int language (first 2 bytes - 2-letters language code)
+}
+type
+ pLastFMInfo = ^tLastFMInfo;
+ tLastFMInfo = packed record
+ request:cardinal; // 0 - artist, 1 - album, 2 - track
+ artist :pWideChar; // artist
+ album :pWideChar; // album or similar artists for Artist info request
+ title :pWideChar; // track title
+ tags :pWideChar; // tags
+ info :pWideChar; // artist bio or wiki article
+ image :pAnsiChar; // photo/cover link
+ similar:pWideChar;
+ release:pWideChar;
+ trknum :cardinal;
+ end;
+const
+ MS_WAT_LASTFMINFO:pAnsiChar = 'WATrack/LastFMInfo';
+
+// --------- Templates ----------
+
+const
+{
+ wParam: 0 (standard Info) or pSongInfo
+ lParam: Unicode template
+ returns: New Unicode (replaced) string
+}
+ MS_WAT_REPLACETEXT:PAnsiChar = 'WATrack/ReplaceText';
+
+{
+ event types for History
+ Blob structure for EVENTTYPE_WAT_ANSWER:
+ Uniciode artist#0title#0album#0answer
+}
+const
+ EVENTTYPE_WAT_REQUEST = 9601;
+ EVENTTYPE_WAT_ANSWER = 9602;
+ EVENTTYPE_WAT_ERROR = 9603;
+ EVENTTYPE_WAT_MESSAGE = 9604;
+
+const
+{
+ wParam: 0 or parent window
+ lParam: 0
+ note: Shows Macro help window with edit aliases ability
+}
+ MS_WAT_MACROHELP:pAnsiChar = 'WATrack/MacroHelp';
+
+{$ENDIF M_MUSIC}
diff --git a/plugins/Watrack/docs/sampledll.dpr b/plugins/Watrack/docs/sampledll.dpr new file mode 100644 index 0000000000..908fe60597 --- /dev/null +++ b/plugins/Watrack/docs/sampledll.dpr @@ -0,0 +1,139 @@ +library testdll;
+
+uses m_api, Windows,common;
+
+{$include m_helpers.inc}
+{$include m_music.inc}
+
+const
+ PluginInfo:TPLUGININFOEX=(
+ cbSize :sizeof(TPLUGININFOEX);
+ shortName :'Plugin Template';
+ version :$00000001;
+ description:'The long description of your plugin, to go in the plugin options dialog';
+ author :'J. Random Hacker';
+ authorEmail:'noreply@sourceforge.net';
+ copyright :'(c) 2003 J. Random Hacker';
+ homepage :'http://miranda-icq.sourceforge.net/';
+ flags :UNICODE_AWARE;
+ replacesDefaultModule:0;
+ uuid:'{00000000-0000-0000-0000-000000000000}'
+ );
+var
+ PluginInterfaces:array [0..1] of MUUID;
+
+var
+ hook:integer;
+ oldproc:tReadFormatProc;
+
+// -------- format --------
+Function mp3proc(var dst:tSongInfo):boolean;cdecl;
+begin
+{
+ MP3 Handler here
+}
+//messagebox(0,'ok','',0);
+// Example for old handler
+ if (int(@oldproc)<>WAT_RES_OK) and (int(@oldproc)<>WAT_RES_ERROR) then
+ result:=oldproc(dst)
+ else
+ result:=true;
+end;
+
+// ---------- Player ----------
+var
+ plwnd:HWND;
+
+function Check(flags:integer):HWND;cdecl;
+begin
+ result:=1;
+ plwnd:=12;
+end;
+
+function GetFileName:pWideChar;cdecl;
+begin
+ result:=nil;
+end;
+
+function GetInfo(var SongInfo:tSongInfo;flags:integer):integer;cdecl;
+begin
+ PluginLink^.CallService(MS_WAT_WINAMPINFO,integer(@SongInfo),flags);
+ SongInfo.plyver:=$1234;
+ result:=0;
+end;
+
+function Command(command:integer;value:integer):integer;cdecl;
+begin
+ result:=PluginLink^.CallService(MS_WAT_WINAMPCOMMAND,plwnd,
+ command+(value shl 16));
+end;
+
+function OnWATLoaded(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+var
+ tmp:tMusicFormat;
+ tmp1:tPlayerCell;
+begin
+ PluginLink^.UnhookEvent(hook);
+
+ FillChar(tmp,SizeOf(tMusicFormat),0);
+ lstrcpy(tmp.ext,'MP3');
+ tmp.proc:=mp3proc;
+ oldproc:=tReadFormatProc(PluginLink^.CallService(MS_WAT_FORMAT,
+ WAT_ACT_REGISTER+WAT_ACT_REPLACE,dword(@tmp)));
+
+ FillChar(tmp1,SizeOf(tPlayerCell),0);
+ tmp1.desc :='Sampler';
+ tmp1.flags :=0;// WAT_OPT_WINAMPAPI
+ tmp1.Check :=@Check;
+ tmp1.GetInfo:=@GetInfo;
+ tmp1.Command:=@Command;
+ tmp1.GetName:=@GetFileName;
+ PluginLink^.CallService(MS_WAT_PLAYER,WAT_ACT_REGISTER+WAT_ACT_REPLACE,dword(@tmp1));
+ result:=0;
+end;
+
+function OnModuleLoaded(wParam:WPARAM;lParam:LPARAM):int;cdecl;
+begin
+ hook:=HookEvent(ME_WAT_MODULELOADED,@OnWATLoaded);
+ result:=0;
+end;
+
+function MirandaPluginInfo(mirandaVersion:DWORD):PPLUGININFO; cdecl;
+begin
+ result:=@PluginInfo;
+ PluginInfo.cbSize:=SizeOf(TPLUGININFO);
+end;
+
+function MirandaPluginInfoEx(mirandaVersion:DWORD):PPLUGININFOEX; cdecl;
+begin
+ result:=@PluginInfo;
+ PluginInfo.cbSize:=SizeOf(TPLUGININFOEX);
+end;
+
+function Load(link: PPLUGINLINK): int; cdecl;
+begin
+ PLUGINLINK := Pointer(link);
+ InitMMI;
+ Result:=0;
+ hook:=HookEvent(ME_SYSTEM_MODULESLOADED,@OnModuleLoaded);
+end;
+
+function Unload: int; cdecl;
+begin
+ Result:=0;
+end;
+
+function MirandaPluginInterfaces:PMUUID; cdecl;
+begin
+ PluginInterfaces[0]:=PluginInfo.uuid;
+ PluginInterfaces[1]:=MIID_LAST;
+ result:=@PluginInterfaces;
+end;
+
+exports
+ Load, Unload,
+ MirandaPluginInfo
+ ,MirandaPluginInterfaces,MirandaPluginInfoEx;
+
+begin
+end.
diff --git a/plugins/Watrack/docs/wat.php b/plugins/Watrack/docs/wat.php new file mode 100644 index 0000000000..d15049dd72 --- /dev/null +++ b/plugins/Watrack/docs/wat.php @@ -0,0 +1,28 @@ +<?php
+
+include_once 'const.php';
+
+function mbot_load()
+{
+ mb_SchReg("ex/1min","* * *",'every_1min',1,1);
+}
+
+function every_1min()
+{
+ $songinfo = 0;
+ if(mb_SysCallService(MS_WAT_GETMUSICINFO, WAT_INF_ANSI,
+ mb_SysGetPointer($songinfo))!=WAT_PLS_NORMAL)
+ return 0;
+
+ $artist_pos = mb_SysGetNumber($songinfo+wato_artist, 4);
+ $artist = mb_SysGetString($artist_pos);
+
+ $title_pos = mb_SysGetNumber($songinfo+wato_title, 4);
+ $title = mb_SysGetString($title_pos);
+
+ $newtext = "mp3: $artist - $title";
+
+ mb_MsgBox($newtext, "MBot", 4);
+ return 0;
+}
+?>
\ No newline at end of file diff --git a/plugins/Watrack/docs/watrack_history.txt b/plugins/Watrack/docs/watrack_history.txt new file mode 100644 index 0000000000..bea80d4e85 --- /dev/null +++ b/plugins/Watrack/docs/watrack_history.txt @@ -0,0 +1,519 @@ +0.0.6.12 (17 nov 2009)
+ Added Last.FM scrobbling support
+0.0.6.11 (14 sep 2009)
+ Added watrack parts admin page
+ Fixed cover reading from OGG files
+ Fixed mRadio work when no avatar plugin presents
+ Fixed wrong LastFM recognition
+0.0.6.10 (28 aug 2008)
+ Added basic LastFM support
+ Added hidden option 'xstatpause',ms (word type) to make pause between XStatus changing
+ Added option to emulate multimedia keys
+ Added avatar as cover for mRadio contacts support
+0.0.6.9 (28 jan 2008)
+ Fixes for FLV format
+ Added option to assign 'music' and 'video' xstatuses
+ Changed Handle checking (to avoid Thread handle leak)
+ First tab setting notes shows on mouse hover (not click)
+0.0.6.8 (29 oct 2007)
+ Added two options to alter filename search method
+ Fixed: mRadio track changing not catched
+0.0.6.7 (26 aug 2007)
+ Added lyric support for APev2 tags, WMA
+ Added cover support for APev2 tags, WMA, OGG, SPX and fLaC
+ Optimized APEv2, OGG, fLaC and WMA reading code
+ Fixed ID3v2.4 tag reading code
+ Optimized mediafile handle checking
+0.0.6.6 (9 aug 2007)
+ AIMP player support code changed
+ Fixed some memoryleaks
+0.0.6.5 (20 jun 2007)
+ 'Use existing XStatus' options changes only message text, not title
+ Optimized FLV reading code
+ Fixed and optimized MPG reading code
+0.0.6.4 (13 jun 2007)
+ Added AIMP control
+0.0.6.3 (10 jun 2007)
+ Added: mRadio %version% macro support
+ Fixed: in rare case covers can be renamed and deleted
+ Fixed: %cover% value can be wrong if cover not present
+ Fixed: %volume% value for mRadio not obtaining
+0.0.6.2 (9 jun 2007)
+ Small players code fixes
+ Commented some thread code (due to AIMP 1.77 changes)
+ Fixed version number
+ Added seek ability for local mediafiles
+0.0.6.1 (7 jun 2007)
+ Added extended control for mRadio Mod
+ Added compatibility with AIMP 1.77
+ Added service to obtain not only played file info
+ Fixed: frame not change cover picture obtained from mediafile tags
+(01 jun 2007)
+ Added %nstatus% macro (like %status% but w/o translation)
+(29 may 2007)
+ Very small fixes (for mRadio too)
+(25 may 2007)
+ Added ability to show popups only by request, not new track
+(20 may 2007)
+ Changed: added threads for popups and statistic
+ Changed: Music/player Info obtaining code
+ Fixed: QCD player recognizing and processing
+(16 may 2007)
+ Added actions support for Popup Plus 2.1.0.5
+(15 may 2007)
+ Added %playerhome% (Player homepage url) macro
+(11 may 2007)
+ Small fixes
+ Statistic code optimized for speed
+(09 may 2007)
+ Added two buttons to check player/format list
+ AIMP player now processed separately
+ Changed code for played filename obtaining
+0.0.6.0 (05 may 2007)
+ Many small codechanges and fixes
+ Music info request can be send by ASKWAT text sending (received as message)
+ Settings saved only in profile db now
+0.0.5.0 (18 feb 2007)
+ Fixed: cover is showed only when backround picture name is not empty
+ Cover files deleted at exit now
+ Added volume field (see readme) to SongInfo structure.
+ Fixed: Cover from ID3v2 tag saved incorrectly
+ Fixed: Miranda crashed when shutdowned
+ Code cleaning and optimization
+0.0.4.30 (24 dec.2006)
+ Changed internal code library
+ Fixed comment reading from ID3v2 tag
+0.0.4.29 (29 nov 2006)
+ Small Fixes
+ Changes for external icon support for player.ini file
+ Fixed: ini file modified constantly if player not found
+0.0.4.28 (16 nov 2006)
+ Other bugfixes
+ Fixed: Contact menu handler chain was broken
+0.0.4.27 (15 nov 2006)
+ Small player handles fixes
+ Fixed: crash with WAV file samplesize<8 bit
+ Added options to choose Music info sharing ability
+ Added context menu music info request
+ Fixed bug with Frame redraw/resizing
+ Added external player definition
+0.0.4.26 (7 nov 2006)
+ Added album sort mode to report
+ Fixed some report errors
+ Changes for old miranda versions (before 0.6) compatibility
+0.0.4.25 (31 oct 2006)
+ INI file (not database) used by default
+ Winamp video width and height recognizing returned (for test)
+ Fixed: log file rewrited always
+ Fixed: Report creating from Options tab was wrong
+ Fixed: "Export default" button on options tab not work
+0.0.4.24 (29 oct 2006)
+ Report code was rewritten to template support
+ Current settings saved when saving place changed (switch at last!)
+ Loading settings from profile database works now normally
+ Fixed: Player name case conversion was after WAT_EVENT_NEWTRACK sending
+ Width and Height recognition through Winamp API disables due to wrong return values
+0.0.4.23 (15 oct 2006)
+ Save in INI/profile base file option returned
+ API changes
+ ID3v2 tag reading code was changed
+ Rewritten and reorganized internal structure
+ mBot script sample added
+0.0.4.22 (17 sep 2006)
+ INI-file structure changes (frame, report and popup options is separated)
+ CyberLink PowerDVD recognizing added
+ ALSong player recognizing added
+ MediaInfo obtained at plugin start now (if refresh time is not 0)
+ First version of new Player API is finished
+ Underscore replaces by spaces only in text macros (not media filename)
+ Fixed: wrong action on "Use Frame" checkbox
+0.0.4.21 (28 aug 2006) (test)
+ Miranda memory manager used now
+ Fixed: ID3v2 tags cannot process Unicode strings with reverse byte order
+ Media format API rewrited, new service added
+ Added event notifier for plugin loading
+ Added event notifier for plugin/player status changing
+0.0.4.20 (20 aug 2006)
+ Only songs with known length are addings to log
+ Added frame text centering
+ Small bugfixes
+ Fixed: Mirada crashes while report creating changed from menu
+ Added mRadio plugin support (test)
+ Fixed: sometimes trackbar is hidden
+ Added SongBird player support
+0.0.4.19 (11 aug 2006)
+ XStatus 'Watching pro7 on TV' works like 'Listening to music' XStatus but for video
+ Show/hide trakbar option is separated now
+ Sources changed for delphi7_up compatibility
+ Fixed: Sometimes plugin show hotkey registration error
+ Fixed: Timer stopped when Options page is open
+ Added some additional settings for frame text scrolling
+ Fixed: iTunes volume control does not work
+ Added menu item and toolbar button to disable plugin
+ Fixed error with unknown format tag in the frame template
+ Added WiFiRadio player support
+ Added option to hide frame when player not found
+0.0.4.18 (14 jul 2006)
+ Added GOM player detection
+ {cf#nnnnnn} and {bg#nnnnnn} is define color with hex trucolor value 'nnnnnn'
+ Added frame text format support
+ Added pushed/hovered button status support if watrack_buttons.dll is used
+0.0.4.17 (10 jul 2006)
+ Fixed: frame button not unpress when pressed button mouse moves out of frame
+ Added option to use or not gap between frame buttons
+ Option tabs changed back to theme ability
+ Added "skin" trackbar ability
+0.0.4.16 (9 jul 2006)
+ Small interface changes
+ Volume buttons on the frame changed and can be hided now
+ '\t' combination (Tabulation) changed to '{tab}' tag format
+ Fixed avoid '\n' combination conflict in templates
+ Holding mouse button on volume control make continuous decremet/increment
+ Fixed some bugs
+ Added frame transparency
+0.0.4.15 (5 jul 2006)
+ Added right align frame picture option
+ Fixed: text insertion hotkey do not always register
+ Service for player control is created
+ Added "Next track" to popup click options
+ If timer value greater than 499, time signify as milliseconds
+0.0.4.14 (3 jul 2006)
+ Added bottom align frame picture option
+ Fixed: Miranda freezes on W2K when some radiobuttons clicked
+ Returned modified old code for Foobar recognize
+0.0.4.13 (29 jun 2006)
+ Updater data changed for new hosting compatibility
+ Added support \t in templates (expanded when used)
+ Frame text now can be edited
+ Frame background can be picture (with effects: center, tile, stretch)
+ Options saves in profile directory as default (if old settings not found)
+ Foobar2000 recognizing code changed
+ Jabber chat recognized now
+ Fixed: 'Try to use OLE interface' option not changed
+ Added frame bitmap background support
+ Fixed: control icons in IcoLib not shows then watrack_icons.dll is not found
+ Volume control added
+ New Frame options added
+0.0.4.12 (18 jun 2006)
+ Fixed (i hope) bug with info refresh while MediaMonkey finished
+ Added frame support with IcoLib support
+ Added control procedures for some players
+ Small speed optimization
+ Introduced option to enable/disable players OLE interface
+0.0.4.11 (14 jun 2006)
+ Fixed FLV bug
+ Added MPEG file support (only MPEG audio stream)
+0.0.4.10 test (11 jun 2006)
+ New macro %txtver% (text version number representation) was introduced
+ Small fixes
+ Imroved Foobar2000 support if foo_comserver2 plugin is present
+0.0.4.9 (06 jun 2006)
+ Added partial support for MOV and 3GP file formats
+ Added support for ID3v2 tag v.2
+ Added option to skip some plugin error messages (mainly for hotkeys)
+ INI file is not rewritten now if default player was not changed
+ Added QuickTime player support
+0.0.4.8 (31 may 2006)
+ Added New options to insert text in text field of other apps
+ Code compiled with KOL (smaller size)
+0.0.4.7
+ Version numeration changed for more Updater compatibility. Last number is for betas.
+ Trying to use XP theming in TABs
+ Changed XStatus recovery code
+0.0.4.6 (23 may 2006)
+ Variables and NewAwaySys works now with Unicode
+ Small interface changes
+ Added FLVPlayer support
+ Added option to check file date/time changes while playing
+ Added option to set XStatus regardless of ICQ status
+ Added option to replace underline with spaces
+ Fixed NAS service call
+ Added partial FLV format support
+ Fixed: some unicode named files can't be processed
+ Macro help removed from resource
+0.0.4.5 (11 may 2006)
+ Changed Macro help window - with localisation support now
+ Added NewAwaySys (unicode) support for status text changings
+ Added MPlayer support
+ Fixed MusikCube player code
+ Fixed template formatting in IRC channel
+ Added partial MKV, WMV and ASF formats support
+ Changed RM reading code to video info compatibility
+ Added AVI file support (test version)
+ Added OGM file support
+ %fps%, %width%, %height% and %codec% macro added
+ OGG file info reading changes
+ Fixes for large files
+ Finally fixed bug with Popup templates
+ Options dialog changed again (Templates and Protocols tabs is merged)
+0.0.4.4 (24 apr 2006)
+ Fixed: Template macro help not work
+ Changed WavPack reading code for v.4* compatibility
+ Fixed bug with INI file name processing
+ Status message now uses 'Status Text' template (was 'Status Title')
+ MediaMonkey player class now partially uses OLE interface
+ Music XStatus can be cleared when miranda starts without music
+ Watrack.ini used if private INI file is absent
+ Notes in first option tab is Unicode now
+ Changed work with statuses (normal and extended)
+ Changed plugin behaviour when Miranda started without played song
+ Default template texts changed
+ Fixed: unused strings was keeped in INI file.
+ Fixed: can crash when Variables plugin not exists
+ Fixed: protocols enabling-disabling not works properly
+ Fixed: Crashes when music played and templates changed
+ MediaMonkey recognized as separate player now, not Winamp clone
+ All settings now saved in INI-file
+ Template option dialog was totally rewrited
+0.0.4.3 (26 mar 2006)
+ Added option to return Variables value in ANSI
+ Small save-related changes
+ Added 'AudioPlayer' support
+ Player icons moved to separate file (must be in icons or plugins directory)
+ Added player window handle to SongInfo structure
+ Added popup option to activate player window
+ Fixed: wrong 'Total logged music time' value
+ Added Core Media Player support
+0.0.4.2 (03 mar 2006)
+ Fixed RM file reading
+ Fixed ID3v2 tag reading (UTF8 encoding)
+ Small option dialog interface changes
+ Localisation sample file included (russian)
+ psapi.dll included (needed when plugin can't get song filename)
+ Fixed WMA tag reading
+ Fixed LA player recognition (wrong player status was returned)
+ Old XStatus restored now if player not found
+ Changed: if XStatus title is empty, it is cleared now
+ Changed %music% command translation code
+0.0.4.1 (26 feb 2006)
+ Deleted ICQ XStatus old API code
+ Added Creative Media Source support
+ Added 'version' resource
+ Status and popup templates are separated now
+ Added Media Commander Express player support
+ Added IcoLib support
+ Added VLC player support
+ Added Helium Music Manager support
+ Added Musicmatch Jukebox player support
+ Added %music% command with BB-code formatting in message dialog
+ Added option for player title formatting
+ Fixed error with filename in File info called from popup
+ Added support for J.River Media Center
+ Fixed situation when player is stopped
+ Fixed: 511 byte per string only saved in INI-file
+ Fixed player status for unknown filetypes
+ Small fix for MP4/M4A reading
+ Added partial M4A file format tag support
+ Added option to get unknown music format info from player
+ Changed WMA tag reading code to obtain number-type values
+ All resource language is Neutral now
+ Changed MusicCubeOne and SAPS players recognition
+ When 'no-music text' is empty and player stopped status message cleared
+ When 'Keep Status' is 'on' status text cleared
+ Song time can show more than 99 hours now
+ Changed recognizing song filename when Apollo is 'stopped'
+ Added Pluton player support
+ Fixed: Clearing 'Music' XStatus doesn't work with new ICQ API
+0.0.4.0 (29 jan 2006)
+ Added option to disable log
+ Changed XStatus setting code to compatibles with new ICQ API
+ Fixed: Popup service function works only with TopToolBar
+ Vorbis comment tag names now case insensitive
+ Changed FLAC reading code. Now with Vorbis comments
+ Current music format saves and checks firstly
+ Fixed: 'Save settings in INI-file' option cleared if Options dialog opens
+ Nearby twin record in statistic file is ignored now
+ Relative report or statistic file path calculated now from Miranda directory
+ Corrected status changing when player stopped
+ Added %status% macro (works with not all players!!!)
+ Added option to save CSS file separately
+ Added automatic report file extension adding/changing
+ Added VBR/CBR text to File Info from pupup
+ Added %year% macro help (i just forgot)
+ Empty report file not created if log file is invalid
+ Added menu item and service function for report creating
+ Added support for SAPS player
+ Added support for Zoom player
+ Changed QCDPlayer code to support new QMPlayer
+0.0.3.8 (19 jan 2006)
+ Fixed MP3 VBR reading bug
+ Added simple statistic (UTF8 enc.) (just for fun)
+ Added %vbr% macro and option for it
+ Added template when player not found
+ Changed Options interface
+ Changed Service function interface (please, see comments!)
+ Fixed wrong %total% value when 'Variables' plugin used
+ Added MusicCube One player support
+ OGG tags now translated as UTF8
+ Fixed some ID3v2 tag reading issues and errors
+ Fixed track number recognize in APEv2 tag
+ Active Player places on first place (save in settings - AI! :) )
+ Now MP3 files checked firstly
+ Changed Foobar2000 main window search procedure
+ Deep code changes (translating to Unicode strings and other)
+0.0.3.7 (26 dec 2005)
+ Added file size text formatting
+ Corrected formatted text output
+ Fixed WMA reading code (again)
+ Fixed internal ANSI to Unicode transformation
+ Changed Options dialog
+0.0.3.6 (21 dec 2005)
+ Added Unicode support
+ Fixed wrong WMA tag reading
+ Advances PopUp settings
+ Toolbar button for popup window added
+ Small code optimisation
+ Fixed chat or message window recognition
+ Partially avoiding WMP10 playlist bug
+ Added XMPlayer support
+ Added macros %size% (file size) and %type% (file ext.)
+0.0.3.5 (05 dec 2005)
+ Now Status not processes and Popup not shows when player is stopped
+ Popup settings dialog created
+ Added BSPlayer support
+0.0.3.4 (28 nov 2005)
+ Some changes for Service function (mainly description, see header)
+ Fixed (i hope): Miranda crushes sometimes by pressing hotkey
+ 'No-music text' can processed by Variables plugin
+ Now Status changing works in separated protocols
+ Fixed: Popup shows not always
+ Status template now multiline
+ Added player icon in Popup window
+0.0.3.3 (24 nov 2005)
+ Changed Foobar2000 recognition for new versions
+ Remove elapsed time recongition within Foobar2000 (sorry!)
+ Now with player shutdown XStatus changes to 'none' and no sets anymore
+ Added simply PopUp support (Status Template value)
+ Added option to change XStatus only for existing Music xstatus
+ Added option to keep or not Music XStatus on player exit
+ Fixed: Miranda can crush while use Variables plugin
+0.0.3.2 (19 nov 2005)
+ File renamed for avoiding Updater plugin crash
+ Fixed: format tag at the end of template not translated
+ Fixed variables help
+ Added support for ViPlay3 player
+ Data for 'Variables' plugin updated by timer
+ Added ability to switch off some players
+ Added ability to change processed status mode
+ Added ability to save settings in INI-file
+ Settings saved only from Options dialog, not on exit
+ Some code changes
+0.0.3.0 (29 oct 2005)
+ Genre name table moved to resource
+ ICQ XStatus changes only for non-offline user mode
+ Fixed: 'new line' code inserted at the end
+0.0.2.9 (27 oct 2005)
+ Fixed: Stupid bug - text not inserted into CHAT window
+ Temporary: text formatting used in ordinal message window too (only for testing)
+0.0.2.8 (27 oct 2005)
+ Added support for RA/RM format (experimental)
+ Changed text formatting algorithm (test for Asian text, please!)
+ Created version archive on http://awkward.front.ru/archive/
+ Try to use simple Updater plugin compatibility
+0.0.2.7 (25 oct 2005)
+ Fixed: Status message not changed by timer
+ Added: experimental Chat window text formatting (see readme)
+0.0.2.6 (23 oct 2005)
+ Fixed some bugs.
+ Other small changes.
+0.0.2.5 (23 oct 2005)
+ Modified Option Dialog and added translation ability
+ Added partial support for AAC file format
+ Added support for MP4 with MP3-coding format
+ Added support for MusikCube player
+ Added alternative ID3v2 tag frames
+0.0.2.4 (19 oct 2005)
+ Changed hotkey processing (not global hook now)
+ Changed some players recognition
+ Changed Music info interface (see include file)
+ Added support for 'Variables' plugin (not fully tested)
+ Added support for MediaMonkey Player
+ Added support for RealPlayer
+ Added support for MPC file format (only 'MPC' extension)
+ Added partial support for SPX file format (not tested)
+ Added partial support for OFR file format (not tested)
+ Now Status sets only if changed
+0.0.2.2 (10 oct 2005)
+ (Not fully tested, save previous version!)
+ Now HotKey work only with own Miranda copy
+ New tag processing algorithm
+ Added WAV format support
+ Added experimental APE,TTA and FLAC formats support (not tested)
+ Added iTunes and PlayNow! players recognize
+ Some internal changes
+ Macro %samplerate% and %bitrate% (%khz% and %kbps% synonims) added
+ Fixed: unwanted XStatus changing to 'Music'
+0.0.1.8 (05 oct 2005)
+ Fixed: Sometime Foobar2000 main window not recognized properly
+ Small speed optimisation
+ Added LightAlloy recognize
+ Empty "No-Music text" keep original Miranda status messages now
+ Fixed: in Apollo and OGG-file Bitrate was Bps, not KBps,
+ Samplerate was Hz, not KHz
+0.0.1.7 (04 oct 2005)
+ Added automatic Music info refresh by timer
+ Added option to NOT insert music info into message window
+ Fixed: crash on some comments in ID3v2
+0.0.1.6 (03 oct 2005)
+ Changed Options dialog
+ Added simple Away-message support (only by Hotkey pressing)
+ Macro %year% now work
+0.0.1.5 (02 oct 2005)
+ Support for Unicode value in ID3v2
+ Add WMA tag support
+ Fixed: macro %genre% not translated
+ Fixed: Winamp window title processing
+0.0.1.4 (29 sep 2005)
+ Added JetAudio support
+ Fixed: VBR MP3 length not propely calculated
+ Fixed music file name recognition
+ Added APEv2+ID3v1 at one time tag support
+0.0.1.3 (28 sep 2005)
+ Now get music info from file on local network
+0.0.1.2 (27 sep 2005)
+ Changed 'year' field type in music info
+ Added APEv2 tag support for MP3
+ Remove Win98-code part
+ Other small changes
+0.0.1.1 (25 sep 2005)
+ Test version.
+ win2KXP-only compatible.
+ Service function added.
+ MP3 IDv2 tag data read fixed
+ Some other bugs fixed (sorry, not all!).
+0.0.1.0 (25 sep 2005)
+ Test version: new music file search algorithm (MP3 OGG WMA only)
+ Windows media player wrapper not needed now
+0.0.0.9 (24 sep 2005)
+ correct MP3 file processing with padding at start
+ cutting template strings tail fixed again :(
+ add %percent% macro
+ Modified source code uploaded
+0.0.0.8 (22 sep 2005)
+ cutting template strings tail (sometime) fixed
+ %wndtext% macro turn "on" again :)
+0.0.0.7 (19 sep 2005)
+ MP3 tag support extended
+ OGG file info (not length, sorry!) added
+ music info readed at one time now (for Winamp-like API - at request too)
+ Apollo samplerate show changed
+ %comment% macro added
+0.0.0.6 (18 sep 2005)
+ Macro %track% value changed
+ audio MPEG 2 & 2,5 and layer 1 & 2 file support added
+ Some code cleaning
+ Correct data view from MP3 Tag
+ Changed Artist-Title determination algorithm
+ Changed Winamp search algorithm
+0.0.0.5 (14 sep 2005)
+ Work improved, more players added
+ Default macro processing added
+ Fix some bugs
+ FooBar without Winamp wrapper supported (not full)
+ MP3 tag v1 partial support added
+0.0.0.3 (12 sep 2005)
+ New option interface
+ New engine for many player support
+ Macro support added
+0.0.0.1 (07 sep 2005)
+ First release
diff --git a/plugins/Watrack/docs/watrack_readme.txt b/plugins/Watrack/docs/watrack_readme.txt new file mode 100644 index 0000000000..ef2ec81e98 --- /dev/null +++ b/plugins/Watrack/docs/watrack_readme.txt @@ -0,0 +1,110 @@ +For what:
+ Insert Played music info in message window or Status text. ICQ extended
+ status supported.
+
+Requirements:
+ Windows 2K/XP (SP2 better)
+ Miranda 0.6.x
+
+Supported Players:
+ Winamp (http://www.winamp.com/)
+ Apollo (http://www.iki.fi/hy/apollo/)
+ 1by1 (http://www.mpesch3.de/)
+ Media Player Classic (http://gabest.org/)
+ Window Media Player (http://www.microsoft.com/windows/windowsmedia/players.aspx)
+ FooBar2000 (http://www.foobar2000.org/)
+ LightAlloy (http://www.softella.com/)
+ Cowon JetAudio (http://www.jetaudio.com/)
+ Quintessential Player (http://quinnware.com/)
+ iTunes (http://www.itunes.com/)
+ MediaMonkey (http://www.mediamonkey.com/)
+ Real Player (http://www.real.com/)
+ MusikCube (http://www.musikcube.com/)
+ BSPlayer (http://www.bsplayer.org/)
+ MusicCube One (http://www.rodi.dk/musiccubeone)
+ Zoom Player (http://www.inmatrix.com/)
+ Pluton (http://pluton.oss.ru/)
+ J. River Media Center (http://www.jrmediacenter.com/)
+ Musicmatch Jukebox (http://wwwp.musicmatch.com/)
+ VideoLAN media player (http://www.videolan.org/)
+ mRadio miranda plugin (http://miranda.kom.pl/dev/bankrut/)
+ ALSong&ALShow (http://www.altools.net/)
+
+ and others. List of other players see in player.ini
+
+Supported Formats:
+ MP3, OGG, WMA, WAV, APE, TTA, AAC, FLA/FLAC, MPC, OFR/OFS, SPX, MP4, M4A,
+ ASF, WMV, AVI, MKV, OGM, RA/RM/RAM, FLV, MOV, 3GP, MPEG/MPG
+
+In Chat (and maybe message) window, you can use text formatting:
+{b}text{/b} - 'bold' text
+{i}text{/i} - 'italic' text
+{u}text{/u} - 'undeline' text
+{cf##}text{/cf} - text with color ## (0-15)
+{bg##}text{/bg} - text with background color ## (0-15)
+Sample:/me {b}listen{/b} {cf5}{i}%artist%{/i}{/cf} - {bg10}{u}"%title%"{/u}{/bg}
+
+Macros:
+ %album% - album
+ %artist% - artist
+ %bitrate% - bitrate
+ %channels% - number of channels
+ %codec% - video codec like 0x30355844 (DX50)
+ %comment% - comment from tag
+ %cover% - cover file name
+ %file% - media file name
+ %fps% - 100*FPS (Frames Per Second) for video files
+ %height% - video height in pixels
+ %genre% - genre
+ %kbps% - bitrate
+ %khz% - samplerate
+ %length% - total song length (sec)
+ %lyric% - lyric text
+ %mono% - "mono"/"stereo"
+ %nstatus%' - player status (stopped,playing,paused) - nontranslated
+ %percent% - %time% / %total% * 100%
+ %player% - player
+ %samplerate% - samplerate
+ %size% - media file size
+ %status%' - player status (stopped,playing,paused)
+ %time% - current song position (sec)
+ %title% - song title
+ %total% - total song length (sec)
+ %track% - track number
+ %txtver% - player version in text format
+ %type% - media file type (extension)
+ %vbr% - 'VBR' if VBR :)
+ %version% - player version
+ %width% - video width in pixels
+ %wndtext% - title from player window (usually "artist" - "title")
+ %year% - song year (from tag)
+
+Notes:
+ - Volume field has a original volume value in hiword and scaled to 0-15 range
+ in loword. Not all players supported.
+ - Frame background picture transparence is not implemented
+ - To obtain more information from foobar2000 player, you must download plugin
+ http://foosion.foobar2000.org/0.9/foo_comserver2-0.7-setup.exe
+ or use foo_winampspam plugin
+ - FileInfo (called from popup) not shows Video file properties
+ - FPS saves as FPS*100
+ - Frame text output is Left-to-Right only now
+
+Known BUGs:
+ - if Frame text uses %time% macro, text can't scroll
+ - Foobar seeking with foo_winamp_spam may not work
+ - Miranda can freeze if Foobar OLE interface used
+ - Player can start again if OLE checks while it shutdown
+ - ICQLite and ICQ2003 users cannot see XStatus text changes
+ - in MP3 with VBR total song time sometime is not properly calculated
+ - default color of formated text is color of text at insert position
+ - some macros don't work with some players. Replaced by '' and 0
+ - 1by1 player can show wrong elapsed time value
+ - some players version not properly displayed
+ - bad MP3 headers not properly handled
+ - plugin can show wrong song when Player scans directory for music files
+
+PS. To compile plugin you must use something like this:
+ dcc32 -$A+ -$H+ watrack.dpr
+
+All comments, errors & wishes please send to awkward@land.ru or panda75@bk.ru
|