Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit 29bdab5

Browse files
committed
Merge remote-tracking branch 'origin/encoder-decoder' into encoder-decoder
1 parent 2cea380 commit 29bdab5

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

src/vsmetaCodec/vsmetaBase.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def _writePoster(self):
162162
image_str = self.b64encodeImage(episode_img.image, episode_img.b64LastCharIsNewLine)
163163
self.encContent.writeTag(int(index + 1).to_bytes(1, 'big'), image_str)
164164
self.encContent.writeTag(self.TAG_EPISODE_THUMB_MD5)
165-
self.encContent.writeTag(int(index + 1).to_bytes(1, 'big'), episode_img.calcHashMd5Hex())
165+
self.encContent.writeTag(int(index + 1).to_bytes(1, 'big'), episode_img.md5str)
166166

167167
def _writeGroup1(self):
168168
# group 1 payload
@@ -200,7 +200,7 @@ def _writeGroup2(self):
200200
image_bytes = None if img_info is None else img_info.image
201201
if image_bytes is not None and len(image_bytes) > 0:
202202
grp2_content.writeTag(self.TAG2_POSTER_DATA, self.b64encodeImage(image_bytes))
203-
grp2_content.writeTag(self.TAG2_POSTER_MD5, img_info.calcHashMd5Hex())
203+
grp2_content.writeTag(self.TAG2_POSTER_MD5, img_info.md5str)
204204

205205
if len(self.info.tvshowMetaJson) > 0:
206206
grp2_content.writeTag(self.TAG2_TVSHOW_META_JSON, self.info.tvshowMetaJson)
@@ -226,7 +226,7 @@ def _writeGroup3(self) -> VsMetaCode:
226226
# group 3 payload = backdrop_data, backdrop_MD5, timestamp
227227
image_str = self.b64encodeImage(img_info.image, img_info.b64LastCharIsNewLine)
228228
grp3_content.writeTag(self.TAG3_BACKDROP_DATA, image_str)
229-
grp3_content.writeTag(self.TAG3_BACKDROP_MD5, img_info.calcHashMd5Hex())
229+
grp3_content.writeTag(self.TAG3_BACKDROP_MD5, img_info.md5str)
230230
grp3_content.writeTag(self.TAG3_TIMESTAMP, int(self.info.timestamp))
231231

232232
return grp3_content # return the grp3_content (it might be empty!)

src/vsmetaCodec/vsmetaDecoder.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ def _readVsMetaEncoded(self, code: VsMetaCode) -> int:
6262
(episode_img.image,
6363
episode_img.b64LastCharIsNewLine) = code.readImage()
6464
elif tag == self.TAG_EPISODE_THUMB_MD5:
65-
if code.readInt(1) != 1: # index value, not used and not stored
66-
raise Exception("Index of episode_thumb_md5 is not \\x01 !")
67-
episode_img.md5str = code.readString()
65+
code.readInt(1) # index value, not used and not stored
66+
if code.readString() != episode_img.md5str:
67+
raise Exception("vsmeta md5-hash for episodeImage doesn't match with image byte-string!")
6868
self.info.episodeImageInfo.append(episode_img)
6969
else:
7070
code.dumpData(32)
@@ -111,7 +111,8 @@ def _readGroup2(self, code: VsMetaCode) -> int:
111111
(self.info.posterImageInfo.image,
112112
self.info.posterImageInfo.b64LastCharIsNewLine) = code.readImage()
113113
elif tag == self.TAG2_POSTER_MD5:
114-
self.info.posterImageInfo.md5str = code.readString()
114+
if code.readString() != self.info.posterImageInfo.md5str:
115+
raise Exception("vsmeta md5-hash for poster image doesn't match with image byte-string!")
115116
elif tag == self.TAG2_TVSHOW_META_JSON:
116117
self.info.tvshowMetaJson = code.readString()
117118
elif tag == self.TAG2_GROUP3:
@@ -131,7 +132,8 @@ def _readGroup3(self, code: VsMetaCode) -> int:
131132
(self.info.backdropImageInfo.image,
132133
self.info.backdropImageInfo.b64LastCharIsNewLine) = code.readImage()
133134
elif tag == self.TAG3_BACKDROP_MD5:
134-
self.info.backdropImageInfo.md5str = code.readString()
135+
if code.readString() != self.info.backdropImageInfo.md5str:
136+
raise Exception("vsmeta md5-hash for backdrop image doesn't match with image byte-string!")
135137
elif tag == self.TAG3_TIMESTAMP:
136138
self.info.timestamp = code.readTimeStamp()
137139
else:

src/vsmetaCodec/vsmetaInfo.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,18 @@
66

77
class VsMetaImageInfo:
88
def __init__(self):
9+
self.md5str = "" # assign before self.image is assigned, because of @image.setter assignment
910
self.image = bytes() # ByteString
10-
self.md5str = ""
1111
self.b64LastCharIsNewLine = False
1212

13-
def calcHashMd5Hex(self) -> str:
14-
self.md5str = hashlib.md5(self.image).hexdigest()
15-
return self.md5str
13+
@property
14+
def image(self) -> bytes:
15+
return self._image
16+
17+
@image.setter
18+
def image(self, new_image: bytes):
19+
self._image = new_image
20+
self.md5str = hashlib.md5(new_image).hexdigest()
1621

1722

1823
class VsMetaListInfo:

0 commit comments

Comments
 (0)