修改版Adium, 可显示群内用户名及群内图片 (基于1.3.7版, 3网盘下载)

主要是吧/showname在我这里不好用了, 所以只能重新编译了
在网上找到了一个pidgin的msn群内名字补丁, 照抄, 然后编译, 就好了

不过很奇怪, 编译出来比官方发布的大了35MB, 不知是我拿弄错了还是怎么了. 但用应该还是没问题的.

我改过的只有这一个地方了, 有兴趣的或不想用我编的可以自己弄, 反正也不是太麻烦

编译方法
1. 首先从http://trac.adium.im/wiki/PreviousReleases下载源代码, 当然, 也可以参考http://trac.adium.im/wiki/GettingNewestAdiumSource通过源码管理工具Mercurial来获得最新版本的. 我是用的PreviousReleases内的1.3.7
2. 找个目录, 解压开, 后面大量的操作需要在terminal内进行, 请在Applications/Utilities内找到并运行
3. 假设adium-1.3.7是解压后的目录名, 那么就在terminal内进入adium-1.3.7/Utilities/dep-build-scripts
4. 打开这个里面的README, 然后按照说明一步步的往下做.
5. 在确保没有改动的自编译版Adium可以运行并登录msn后, 修改一个文件
找到adium-1.3.7/Utilities/dep-build-scripts/source/im.pidgin.adium/libpurple/protocols/msn/msg.c

在800多行的位置找到msn_plain_msg这个函数

#if 0
	if ((value = msn_message_get_attr(msg, "User-Agent")) != NULL)
	{
		purple_debug_misc("msn", "User-Agent = '%s'\n", value);
	}
#endif

	if ((value = msn_message_get_attr(msg, "X-MMS-IM-Format")) != NULL)

之间增加

	if ((value = msn_message_get_attr(msg, "P4-Context")) != NULL)
	{
		char *body_enc2;
		body_enc2 = g_strdup_printf("<b>***%s***</b>  %s", value,
				body_enc ? body_enc : "");
		g_free(body_enc);
		body_enc = body_enc2;
	}

最终变成

#if 0
	if ((value = msn_message_get_attr(msg, "User-Agent")) != NULL)
	{
		purple_debug_misc("msn", "User-Agent = '%s'\n", value);
	}
#endif

	if ((value = msn_message_get_attr(msg, "P4-Context")) != NULL)
	{
		char *body_enc2;
		body_enc2 = g_strdup_printf("<b>***%s***</b>  %s", value,
		body_enc ? body_enc : "");
		g_free(body_enc);
		body_enc = body_enc2;
	}

	if ((value = msn_message_get_attr(msg, "X-MMS-IM-Format")) != NULL)

保存

6. 从README内, === LIBPURPLE ===这步, 也就是执行./purple_make.sh的这一步开始一直做到结束.

然后你编译出的adium也就支持群内显示用户名了
效果大致如下, (这个, 请两位朋友宽恕我使用了你们的对话)

m群-cocoachina (groupxxxxxx@msnzone.cn) 下午07:03
***kyo***  …
04:02
【系统提示】kyo将昵称更改为kyo 树上的青蛙
04:09
***kyo 树上的青蛙***  …
04:36
***炘***  知道怎么改了
04:38
***炘***  不错,不错
04:54
***kyo 树上的青蛙***  我这边显示没变…
07:35
***炘***  我这里显示也没有变

2009.09,08
增加了显示群内发的图的功能
同样是修改msn_plain_msg这个函数

	body = msn_message_get_bin_data(msg, &body_len);
	body_str = g_strndup(body, body_len);
	body_enc = g_markup_escape_text(body_str, -1);
	g_free(body_str);

	passport = msg->remote_user;

之间增加

	imgURL = strstr(body_enc, "(accept)http://msngroup.cn");
	if(imgURL) {
		//http://msngroup.cn/2zi7qv5prj8w.html
		//http://d.msngroup.cn/2zi7qv5prj8w.jpg?x-image=raw&redirect=1
		char *body_enc2;

		body_enc2 = g_strdup_printf("%s\n<img src=\"http://d.%s?x-image=raw\"></img>", body_enc, imgURL+ 15);
		g_free(body_enc);
		body_enc = body_enc2;
	}

也就是说查找(accept)http://msngroup.cn后, 增加img标签

对自己发的图和别人发的图同样有效.

当然 要记得在函数开头的地方声明imgURL这个char *的变量呀

带群内发图显示功能的版本(1.3.5), 大米盘
https://www.damipan.com/file/3zhHV3L.html

带群内发图显示功能的版本(1.3.7 DMG)
http://www.dmpan.com/file/4EWRK9H.html
http://ifile.it/ncpqjg3
http://cid-902020950ae7c0fb.skydrive.live.com/sendlink.aspx/.Public/Adium%5E_1.3.7%5E_transparentmask.dmg.zip?ref=3

暂时就这样吧

《修改版Adium, 可显示群内用户名及群内图片 (基于1.3.7版, 3网盘下载)》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注