您的位置:首页 > 编程语言 > Python开发

解压豆丁 V3 格式的 docin 文件的 Python 代码

2011-04-22 23:40 1346 查看
首先把豆丁文件下载下来,比如 http://file1.yimk.com/docin_147119313_2.docin
,然后下面代码就可以将这个 docin 文件解压成多个单页的 swf 文件,使用 FlashPlayer 就可以直接查看。

import zlib, struct
input_docin = r'E:/DOWNLOAD/docin_147119313_2.docin'
output_swf = r'r://'
docin = open(input_docin, 'rb')
width = struct.unpack('i', docin.read(4))[0]
height = struct.unpack('i', docin.read(4))[0]
pages = struct.unpack('i', docin.read(4))[0]
head_len = struct.unpack('i', docin.read(4))[0]
swf_header = docin.read(head_len)
print '%s, %s, %s, %s' % (width, height, pages, head_len)
part = 1
while 1:
part_len = docin.read(4)
if part_len:
part_len = struct.unpack('i', part_len)[0]
print part_len
part_cont = docin.read(part_len)

part_paper = zlib.decompress(swf_header) + zlib.decompress(part_cont)
part_swf = '%s%s%s%s%s%s' % (struct.pack('b', 70),
struct.pack('b', 87),
struct.pack('b', 83),
struct.pack('b', 9),
struct.pack('i', len(part_paper)),
part_paper)
swf_file = open(output_swf + '//%s.swf' % (part), 'wb')
swf_file.write(part_swf)
swf_file.close()
part += 1
else:
break
docin.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: