EXtremeZip 2021.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/exuz +12 -0
- data/bin/exz +12 -0
- data/lib/extremeunzip.zzaqsu.rb +156 -0
- metadata +81 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 6d8b532725ca8997ac89e9e2474d6470519599990f46df267f3d8ee4b947475c
|
|
4
|
+
data.tar.gz: 64396057023279e0c32aed5939b4426f993bb22a541ddba869f74eac11390852
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 2338e30f71b1fb13f66100134196e10bb36ae1469b81b17c6103bf7cadfbc654af57862eb6340c49a6686df96cfde3b75d961c6791a8be3843a697622f49daba
|
|
7
|
+
data.tar.gz: 6962e359806dd2e1471a1bafcf5d0f6753ff0d3938950028ffbc29886c8c725cf298c6e68506f0602e935cd445ea26d5774eed5c4f849099285caa5721385ddb
|
data/bin/exuz
ADDED
data/bin/exz
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# require 'pathname'
|
|
4
|
+
# require File.dirname(__FILE__)+'/filemessage.pb.rb'
|
|
5
|
+
require 'victoriafresh'
|
|
6
|
+
require 'cbor'
|
|
7
|
+
require 'lzma'
|
|
8
|
+
require 'get_process_mem'
|
|
9
|
+
|
|
10
|
+
def checkMemoryUsage(lineNumber)
|
|
11
|
+
mem= GetProcessMem.new
|
|
12
|
+
|
|
13
|
+
puts("#{lineNumber} , Memory: #{mem.mb}"); #Debug
|
|
14
|
+
|
|
15
|
+
end #def checkMemoryUsage
|
|
16
|
+
|
|
17
|
+
#根据版本号,提取VFS数据内容
|
|
18
|
+
def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion)
|
|
19
|
+
victoriaFreshData='' #解压后的数据块整体
|
|
20
|
+
dataFileName='victoriafreshdata.w' #数据文件名
|
|
21
|
+
dataFile={} #数据文件对象
|
|
22
|
+
|
|
23
|
+
if (fileVersion==14) #14版本
|
|
24
|
+
compressedVfsData=wholeCbor['vfsData'] #获取压缩后的数据内容
|
|
25
|
+
|
|
26
|
+
victoriaFreshData=LZMA.decompress(compressedVfsData) #解压缩数据内容
|
|
27
|
+
|
|
28
|
+
dataFile=File.open(dataFileName, 'wb') #打开文件
|
|
29
|
+
|
|
30
|
+
dataFile.syswrite(victoriaFreshData) #写入内容
|
|
31
|
+
|
|
32
|
+
dataFile.close #关闭文件
|
|
33
|
+
elsif (fileVersion>=30) #30以上版本
|
|
34
|
+
compressedVfsDataList=wholeCbor['vfsDataList'] #获取压缩后的数据块列表
|
|
35
|
+
|
|
36
|
+
puts("data block amont: #{compressedVfsDataList.length}") #Debug
|
|
37
|
+
|
|
38
|
+
dataBlockCounter=0 #Data block counter
|
|
39
|
+
|
|
40
|
+
dataFile=File.open(dataFileName, 'wb') #打开文件
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
compressedVfsDataList.each do |currentCompressed| #一块块地解压
|
|
44
|
+
puts("data block counter: #{dataBlockCounter}") #Debug
|
|
45
|
+
checkMemoryUsage(34)
|
|
46
|
+
|
|
47
|
+
currentRawData=LZMA.decompress(currentCompressed) #解压这一块
|
|
48
|
+
|
|
49
|
+
dataFile.syswrite(currentRawData) #写入内容
|
|
50
|
+
|
|
51
|
+
# victoriaFreshData=victoriaFreshData+currentRawData #追加
|
|
52
|
+
# victoriaFreshData << currentRawData #追加
|
|
53
|
+
|
|
54
|
+
puts("byte size: #{victoriaFreshData.bytesize}") #debug.
|
|
55
|
+
|
|
56
|
+
dataBlockCounter=dataBlockCounter+1 #count
|
|
57
|
+
end #compressedVfsDataList.each do |currentCompressed|
|
|
58
|
+
|
|
59
|
+
dataFile.close #关闭文件
|
|
60
|
+
end #if (fileVersion==14) #14版本
|
|
61
|
+
|
|
62
|
+
return dataFileName #返回解压后的数据块整体
|
|
63
|
+
end #def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
|
|
64
|
+
|
|
65
|
+
def extractVfsDataWithVersion(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
|
|
66
|
+
victoriaFreshData='' #解压后的数据块整体
|
|
67
|
+
|
|
68
|
+
if (fileVersion==14) #14版本
|
|
69
|
+
compressedVfsData=wholeCbor['vfsData'] #获取压缩后的数据内容
|
|
70
|
+
|
|
71
|
+
victoriaFreshData=LZMA.decompress(compressedVfsData) #解压缩数据内容
|
|
72
|
+
elsif (fileVersion>=30) #30以上版本
|
|
73
|
+
compressedVfsDataList=wholeCbor['vfsDataList'] #获取压缩后的数据块列表
|
|
74
|
+
|
|
75
|
+
puts("data block amont: #{compressedVfsDataList.length}") #Debug
|
|
76
|
+
|
|
77
|
+
dataBlockCounter=0 #Data block counter
|
|
78
|
+
|
|
79
|
+
compressedVfsDataList.each do |currentCompressed| #一块块地解压
|
|
80
|
+
puts("data block counter: #{dataBlockCounter}") #Debug
|
|
81
|
+
checkMemoryUsage(34)
|
|
82
|
+
|
|
83
|
+
currentRawData=LZMA.decompress(currentCompressed) #解压这一块
|
|
84
|
+
|
|
85
|
+
# victoriaFreshData=victoriaFreshData+currentRawData #追加
|
|
86
|
+
victoriaFreshData << currentRawData #追加
|
|
87
|
+
|
|
88
|
+
puts("byte size: #{victoriaFreshData.bytesize}") #debug.
|
|
89
|
+
|
|
90
|
+
dataBlockCounter=dataBlockCounter+1 #count
|
|
91
|
+
end #compressedVfsDataList.each do |currentCompressed|
|
|
92
|
+
end #if (fileVersion==14) #14版本
|
|
93
|
+
|
|
94
|
+
return victoriaFreshData #返回解压后的数据块整体
|
|
95
|
+
end # extractVfsDataWithVersion(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
|
|
96
|
+
|
|
97
|
+
class ExtremeUnZip
|
|
98
|
+
#解压
|
|
99
|
+
def exuz(rootPath)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
wholeFileContent=File.read(rootPath) #最终文件内容
|
|
103
|
+
|
|
104
|
+
# puts wholeFileContent #Debug.
|
|
105
|
+
checkMemoryUsage(60)
|
|
106
|
+
|
|
107
|
+
puts wholeFileContent.class #debug
|
|
108
|
+
|
|
109
|
+
wholeCborByteArray=wholeFileContent[4..-1] #从第5个到末尾
|
|
110
|
+
checkMemoryUsage(65)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
# puts wholeCborByteArray #Debug.
|
|
114
|
+
|
|
115
|
+
checkMemoryUsage(70)
|
|
116
|
+
wholeCbor=CBOR.decode(wholeCborByteArray) #解码
|
|
117
|
+
# wholeCbor=wholeCborByteArray.from_cbor #解码CBOR
|
|
118
|
+
|
|
119
|
+
# puts wholeCbor #Debug.
|
|
120
|
+
checkMemoryUsage(75)
|
|
121
|
+
|
|
122
|
+
fileVersion=wholeCbor['version'] #获取版本号
|
|
123
|
+
|
|
124
|
+
puts 'fileVersion:' #Debug
|
|
125
|
+
checkMemoryUsage(80)
|
|
126
|
+
puts fileVersion #Debug.
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
if (fileVersion<14) #版本号过小
|
|
130
|
+
checkMemoryUsage(85)
|
|
131
|
+
puts 'file version too old' #报告错误
|
|
132
|
+
else #版本号够大
|
|
133
|
+
compressedVfsMenu=wholeCbor['vfsMenu'] #获取压缩后的目录内容
|
|
134
|
+
|
|
135
|
+
checkMemoryUsage(90)
|
|
136
|
+
replyByteArray=LZMA.decompress(compressedVfsMenu) #解码目录VFS字节数组内容
|
|
137
|
+
|
|
138
|
+
# puts replyByteArray #Debug
|
|
139
|
+
|
|
140
|
+
checkMemoryUsage(95)
|
|
141
|
+
# victoriaFreshData=extractVfsDataWithVersion(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
|
|
142
|
+
victoriaFreshDataFile=extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
|
|
143
|
+
|
|
144
|
+
# puts victoriaFreshData #Debug
|
|
145
|
+
|
|
146
|
+
checkMemoryUsage(100)
|
|
147
|
+
$clipDownloader=VictoriaFresh.new #创建下载器。
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
$clipDownloader.releaseFilesExternalDataFile(replyByteArray, victoriaFreshDataFile) #释放各个文件
|
|
151
|
+
checkMemoryUsage(105)
|
|
152
|
+
end #if (fileVersion<14) #版本号过小
|
|
153
|
+
|
|
154
|
+
end #def exuz(rootPath)
|
|
155
|
+
end #class ExtremeUnZip
|
|
156
|
+
|
metadata
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: EXtremeZip
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 2021.5.6
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Hxcan Cai
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2021-05-06 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: VictoriaFreSh
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 2021.5.6
|
|
20
|
+
- - "~>"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: 2021.5.6
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 2021.5.6
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 2021.5.6
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: ruby-lzma
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 0.4.3
|
|
40
|
+
type: :runtime
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 0.4.3
|
|
47
|
+
description: Extreme zip.
|
|
48
|
+
email: caihuosheng@gmail.com
|
|
49
|
+
executables:
|
|
50
|
+
- exz
|
|
51
|
+
- exuz
|
|
52
|
+
extensions: []
|
|
53
|
+
extra_rdoc_files: []
|
|
54
|
+
files:
|
|
55
|
+
- bin/exuz
|
|
56
|
+
- bin/exz
|
|
57
|
+
- lib/extremeunzip.zzaqsu.rb
|
|
58
|
+
homepage: http://rubygems.org/gems/EXtremeZip
|
|
59
|
+
licenses:
|
|
60
|
+
- MIT
|
|
61
|
+
metadata: {}
|
|
62
|
+
post_install_message:
|
|
63
|
+
rdoc_options: []
|
|
64
|
+
require_paths:
|
|
65
|
+
- lib
|
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
|
+
requirements:
|
|
68
|
+
- - ">="
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '0'
|
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
requirements: []
|
|
77
|
+
rubygems_version: 3.0.3
|
|
78
|
+
signing_key:
|
|
79
|
+
specification_version: 4
|
|
80
|
+
summary: EXtremeZip
|
|
81
|
+
test_files: []
|