创意安天

 找回密码
 注册创意安天

[精华] 用Python编写提取QQ表情的脚本

[复制链接]
发表于 2009-7-23 17:26 | 显示全部楼层 |阅读模式
不累的王

普通会员

发贴: 339
积分: 0
来自:
注册日期: 2006-05-26
  发表时间: 2006-10-19 05:43:55  

--------------------------------------------------------------------------------
用Python编写提取QQ表情的脚本

一般情况下不开官方的QQ客户端,而是用一些开源的QQ客户端,比如 Luma QQ 和 Gaim 等。最近看到一些QQ表情挺有意思的,可惜非官方的客户端上不能安装表情文件包,实在不想因为这些表情启动官方的客户端,于是写个脚本把里面的图片提出来,这样想在什么地方用都行了。



#
#        QQ表情Gif文件提取
#
#        搜索D盘根目录下的 eip 文件,
#        输出其中的 GIF 到 d:/tmpGif目录
#
#        AntiyLabs
#     不累的王
#        2006-10-18
#
import os
import glob

sum = 0

# gif 的文件头为 GIF87a, GIF89a
gHead = 'GIF8'
# gif 的结尾标志为 \x3b\x00
gFoot = '\x3b\x00'

for i in glob.glob('d:/*.eip'):
        print "processing\t" + i
        # 二进制方式打开文件
        # QQ的表情文件包啊,真是...连个压缩都没有...
        # 头部一堆填充数据,然后是一个XML,描述GIF文件名称和对应的BMP缩略图
        # 然后就是一个接一个的原始图片文件数据了
        #...别的俺也不关心,俺只想要里面的GIF。忽略XML部分,直接找GIF文件特征~
        content = open(i, 'rb').read()
        # 创建每个表情文件对应的子目录
        dirname = os.path.join(r'd:/tmpGif', os.path.split(i)[1])
        os.mkdir(dirname)
        gset = content.find(gHead)
        while True:
                glen = content[gset : ].find(gFoot) + len(gFoot)
                # 为啥要找第二个结束标志呢?gif那个官方文档啊...简直形同虚设么...
                # 有可能是什么"应用程序扩展"的结束符--"出现次数可能大于等于0"...不管了。
                glen += content[gset + glen:].find(gFoot) + len(gFoot)
                fname = os.path.join(dirname, os.tmpnam().strip('\\') + '.gif')
                print '%s:\ngset: %u\nglen: %u'%(fname, gset, glen)
                #a = raw_input()
                fo = open(fname, 'wb')
                fo.write(content[gset : gset+glen])
                fo.close()
                step = content[gset + glen : ].find(gHead)
                if step < 0:
                        break
                gset += glen + step
                sum += 1

print '%u Files Extract Complete!'%(sum)



此贴由不累的王在 2006-10-19 09:08 编辑过。
<---- 以上言论仅代表本人立场 ---->



__________________


  “……机器人罗诺,现在我要对你下达最新指令了。”
  “是,主人。我都等了三万年了呢。”
  “你还记得回地球的航路吧?”



   

不累的后
普通会员

发贴: 2
积分: 0
来自:
注册日期: 2006-10-19
  发表时间: 2006-10-19 23:53:27  

--------------------------------------------------------------------------------
有两把刷子啊!
<---- 以上言论仅代表本人立场 ---->
您需要登录后才可以回帖 登录 | 注册创意安天

本版积分规则

小黑屋|手机版|Archiver|创意安天 ( 京ICP备09068574,ICP证100468号。 )

GMT+8, 2024-5-18 12:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表