package
This commit is contained in:
parent
82f5290c18
commit
6afb15d260
2 changed files with 38 additions and 3 deletions
17
catalog.py
17
catalog.py
|
@ -1,8 +1,12 @@
|
||||||
import io
|
import io
|
||||||
|
import os
|
||||||
import tarfile
|
import tarfile
|
||||||
|
|
||||||
import package
|
import package
|
||||||
|
|
||||||
|
FILES = 'files'
|
||||||
|
PACKAGE = 'desc'
|
||||||
|
|
||||||
|
|
||||||
class Catalog:
|
class Catalog:
|
||||||
def __init__(self, binary):
|
def __init__(self, binary):
|
||||||
|
@ -12,6 +16,17 @@ class Catalog:
|
||||||
def load(self):
|
def load(self):
|
||||||
f = io.BytesIO(self.binary)
|
f = io.BytesIO(self.binary)
|
||||||
archive = tarfile.open(fileobj=f)
|
archive = tarfile.open(fileobj=f)
|
||||||
|
m = {}
|
||||||
|
packages = {}
|
||||||
for member in archive.getmembers():
|
for member in archive.getmembers():
|
||||||
print(member)
|
directory, *file = member.name.split(os.sep)
|
||||||
|
if file:
|
||||||
|
d = m[directory]
|
||||||
|
d[file[0]] = archive.extractfile(member).read()
|
||||||
|
if len(d) == 2:
|
||||||
|
p = package.Package(d[PACKAGE], d[FILES])
|
||||||
|
packages[p.name] = p
|
||||||
|
else:
|
||||||
|
m[directory] = {}
|
||||||
archive.close()
|
archive.close()
|
||||||
|
self.packages = packages
|
||||||
|
|
24
package.py
24
package.py
|
@ -1,3 +1,23 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
CHARSET = 'u8'
|
||||||
|
KEY = '%'
|
||||||
|
SEPARATOR = f'{os.linesep}{os.linesep}'
|
||||||
|
|
||||||
|
|
||||||
class Package:
|
class Package:
|
||||||
def __init__(self):
|
def __init__(self, package, files):
|
||||||
pass
|
p = package.decode(CHARSET).strip()
|
||||||
|
f = files.decode(CHARSET).strip()
|
||||||
|
text = f'{p}{SEPARATOR}{f}'
|
||||||
|
for item in text.split(SEPARATOR):
|
||||||
|
line, *lines = item.split(os.linesep)
|
||||||
|
key = line.split(KEY)[1].lower()
|
||||||
|
if len(lines) == 1:
|
||||||
|
value = lines[0]
|
||||||
|
else:
|
||||||
|
value = lines
|
||||||
|
setattr(self, key, value)
|
||||||
|
print()
|
||||||
|
print(key)
|
||||||
|
print(value)
|
||||||
|
|
Loading…
Reference in a new issue