From ad9243988366d846bbe50162a6ed39ab2907d4e8 Mon Sep 17 00:00:00 2001 From: Jascha Paris Date: Sun, 3 Jul 2022 11:33:37 +0200 Subject: [PATCH 1/3] FIX available tests pass, ADD test files for poster case --- src/tests/Testimage.jpg | Bin 0 -> 1280 bytes src/tests/template4_poster.vsmeta | Bin 0 -> 1508 bytes src/tests/template_movie5_poster.vsmeta | Bin 0 -> 796 bytes src/vsmetaEncoder/vsmetaBase.py | 3 ++- src/vsmetaEncoder/vsmetaMovieEncoder.py | 1 + 5 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 src/tests/Testimage.jpg create mode 100755 src/tests/template4_poster.vsmeta create mode 100755 src/tests/template_movie5_poster.vsmeta diff --git a/src/tests/Testimage.jpg b/src/tests/Testimage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c2757a26b07e8ca87d1563671adc44e652be9f5 GIT binary patch literal 1280 zcmb7DO=uHA6#iy5+oZ{EvfFNI5DzOw79E`MP(J9dWH0AF2n+*;r$;8yBh zK9jO1r>5=TCj`OKizs3Rr&c|c%Z;IkHA;Ss0m)d|lK zKDkn_N_?BJ<;)jKgdY<=;!%NwH>AJV#GfUe^D!p~%bUojX>Ar^du|6V?!eBx=Mv`x zaRy6nh4S;sCN4>QO=5R(nQHS*u23siE?uPeAl(O$K^Ei4!A23wSimCc7@~KDJT>Gg zp6a0A@9T4Ud< zwjTh>JK$NRtzTLNhQE=&(e@4A17g>Kwe_~Icnf%X14wLE3tqvWN1-R5odv!;0`w`M z|0NK<-0U00WE>CQ029=!u@}IdyTIW&%6+B7x34*JAq;16HEXid!-XQ%Dm~dsVg9(j&U{ z-zJ{J3}FN#3Nyh?rkG5uBkrFe*@u<|$vr^lkhMHM;Hr2FO<~}MV$k+&oFD$1(E3VJ z0?YVEjv11NC@E99oY*pVCn$_1SvLZ25jsxMlWb1Wk-(A%*`L+;yTI6T*LEFyRBG&1 MX_L^U5F%{;0+)r-GXMYp literal 0 HcmV?d00001 diff --git a/src/tests/template4_poster.vsmeta b/src/tests/template4_poster.vsmeta new file mode 100755 index 0000000000000000000000000000000000000000..9ee8d63f45b32395234dacfcc254bc91d796b348 GIT binary patch literal 1508 zcmeHGO>5gg5Vb-AsUT3=OX+E8FFs|B6_8x$;q7W=%SI$C*)7Vcsx4XmNH#=v}jS4kLNq01x zrqzmLu-DQ2vv;fN+c>FU8;$RLF4V8R1sZmRv; zyZ@4mQQDY%yfeta$_@tohE=O&N%l3fEW2N~6MJCSQrmLu?3?j@XV-XXys1=;`ulD^ uDu_M_DW1eW%TqGDAjRsF?0W|O8R=q4?ao{Vji^mC;jru_%v(Lb!) zmO{Z^^ybSBGweL`4!f7yl^)8s;h;TSP6jteb>%uPqD=Bkp8=u^2UI@)WQ#4>rlH70XvY za+V=8Wym_R6_57jqNfa{G7MWPq_5_cv)qP$D1M(uqy!=c1_W>sap)*G#hO#%2zX-q zOq@_g);y&XW+qEmV#DNwp 0: + group2Content += self.TAG2_TVSHOW_SUMMARY + self._writeStr(self.info.tvshowSummary) if self.info.images.tvshowPoster: group2Content += self.TAG2_POSTER_DATA + self._writeImage(self.info.images.tvshowPoster) diff --git a/src/vsmetaEncoder/vsmetaMovieEncoder.py b/src/vsmetaEncoder/vsmetaMovieEncoder.py index cb90ebb..e7073e1 100644 --- a/src/vsmetaEncoder/vsmetaMovieEncoder.py +++ b/src/vsmetaEncoder/vsmetaMovieEncoder.py @@ -17,6 +17,7 @@ def _writeEncodedContent(self): self._writeEpisodeMetaJSON() self._writeClassification() self._writeRating() + self._writePoster() def _writeFileHeader(self): self._writeTag(self.TAG_FILE_HEADER_MOVIE) From 04e1187ed8fd1f2a73a478f5ed758cb23c316a70 Mon Sep 17 00:00:00 2001 From: Jascha Paris Date: Sun, 3 Jul 2022 16:57:23 +0200 Subject: [PATCH 2/3] ADD movie poster test --- src/tests/Testimage.jpg | Bin 1280 -> 0 bytes src/tests/template4_poster.vsmeta | Bin 1508 -> 0 bytes src/tests/template_movie5_poster.vsmeta | Bin 796 -> 728 bytes src/tests/testHelpers.py | 30 ++++++++++++++++++- src/tests/testVsMetaMovieEncoder.py | 38 ++++++++++++++++++++++-- 5 files changed, 65 insertions(+), 3 deletions(-) delete mode 100644 src/tests/Testimage.jpg delete mode 100755 src/tests/template4_poster.vsmeta diff --git a/src/tests/Testimage.jpg b/src/tests/Testimage.jpg deleted file mode 100644 index 1c2757a26b07e8ca87d1563671adc44e652be9f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1280 zcmb7DO=uHA6#iy5+oZ{EvfFNI5DzOw79E`MP(J9dWH0AF2n+*;r$;8yBh zK9jO1r>5=TCj`OKizs3Rr&c|c%Z;IkHA;Ss0m)d|lK zKDkn_N_?BJ<;)jKgdY<=;!%NwH>AJV#GfUe^D!p~%bUojX>Ar^du|6V?!eBx=Mv`x zaRy6nh4S;sCN4>QO=5R(nQHS*u23siE?uPeAl(O$K^Ei4!A23wSimCc7@~KDJT>Gg zp6a0A@9T4Ud< zwjTh>JK$NRtzTLNhQE=&(e@4A17g>Kwe_~Icnf%X14wLE3tqvWN1-R5odv!;0`w`M z|0NK<-0U00WE>CQ029=!u@}IdyTIW&%6+B7x34*JAq;16HEXid!-XQ%Dm~dsVg9(j&U{ z-zJ{J3}FN#3Nyh?rkG5uBkrFe*@u<|$vr^lkhMHM;Hr2FO<~}MV$k+&oFD$1(E3VJ z0?YVEjv11NC@E99oY*pVCn$_1SvLZ25jsxMlWb1Wk-(A%*`L+;yTI6T*LEFyRBG&1 MX_L^U5F%{;0+)r-GXMYp diff --git a/src/tests/template4_poster.vsmeta b/src/tests/template4_poster.vsmeta deleted file mode 100755 index 9ee8d63f45b32395234dacfcc254bc91d796b348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1508 zcmeHGO>5gg5Vb-AsUT3=OX+E8FFs|B6_8x$;q7W=%SI$C*)7Vcsx4XmNH#=v}jS4kLNq01x zrqzmLu-DQ2vv;fN+c>FU8;$RLF4V8R1sZmRv; zyZ@4mQQDY%yfeta$_@tohE=O&N%l3fEW2N~6MJCSQrmLu?3?j@XV-XXys1=;`ulD^ uDu_M_DW1eW%TqGDAjRsF?0 Date: Sun, 3 Jul 2022 17:31:24 +0200 Subject: [PATCH 3/3] ADD test for series and movie with poster --- src/tests/template5_poster.vsmeta | Bin 0 -> 1373 bytes src/tests/testHelpers.py | 8 +++- src/tests/testVsMetaMovieEncoder.py | 4 +- src/tests/testvsmetaSeriesEncoder.py | 54 ++++++++++++++++++++++++++- src/vsmetaEncoder/vsmetaBase.py | 11 +++--- 5 files changed, 66 insertions(+), 11 deletions(-) create mode 100755 src/tests/template5_poster.vsmeta diff --git a/src/tests/template5_poster.vsmeta b/src/tests/template5_poster.vsmeta new file mode 100755 index 0000000000000000000000000000000000000000..ee92036bc751175f8f2799d58bf543d548b17aa6 GIT binary patch literal 1373 zcmeHF%TC)s6s-|R)DjBns_M#Ol?|D}fyAlA;?8)Smn;}NDKe`%#*aM6AROdGh%F12 zEcp@sh~I!oqKF_;Rb|l?M>D!t_i?V~&e>f1_O%*(T;PlJy z=LM8I<#8QVdT1YjyZzIK69WOxzy(qVFp-`S6ToAHdlmt&Ds7EqUY#b;q;bDN6Mkf7 z8Mnqii@gajBJX9P1~aB_U7a~kc2`K+D&;y zRrX6}F}>=-`FGnx8Gu890$8yL4g(buMqtbcGB{X#`b=1X2#o>S4A_bsz^pfBM4j&F zJ(x8sAac+u93vkfGv#2)xb1*xK%d$|T~+(h*#96S2vz!r_lmYx@^PnwgU~p@xL7_b z8DXVjl%h_#9O(fL9+caSO=Vm8{*>EU(rjMQbM8#$3#}G@e#-F8kAKQ=X&ryi^jwDI LuPSV;UEjO_H}Q+; literal 0 HcmV?d00001 diff --git a/src/tests/testHelpers.py b/src/tests/testHelpers.py index d604747..c360658 100644 --- a/src/tests/testHelpers.py +++ b/src/tests/testHelpers.py @@ -88,6 +88,7 @@ def readPosterVsMetaFile(filename: str, filename_out_image: str, START_BYTE, END image_bytes = bytes() read_img = False read_img_other = False + last_byte = b"" with BytesIO(filename) as f: byte = f.read(1) @@ -96,16 +97,19 @@ def readPosterVsMetaFile(filename: str, filename_out_image: str, START_BYTE, END if byte == START_BYTE: read_img=True - if byte == END_BYTE: + if byte == END_BYTE and last_byte == b"=": read_img=False if read_img and not byte == START_BYTE: if not byte == b'\n': image_bytes += byte + last_byte = byte byte = f.read(1) - + f = open(filename_out_image, "wb") f.write(base64.b64decode((image_bytes))) f.close() + + \ No newline at end of file diff --git a/src/tests/testVsMetaMovieEncoder.py b/src/tests/testVsMetaMovieEncoder.py index a4c2a86..a03ab8b 100644 --- a/src/tests/testVsMetaMovieEncoder.py +++ b/src/tests/testVsMetaMovieEncoder.py @@ -83,8 +83,8 @@ def test_encodeTemplate5Poster(self): testimage = os.path.join(os.path.dirname(os.path.realpath(__file__)),"Testposter.jpg") - start_byte = VsMetaMovieEncoder.TAG_EPISODE_THUMB_DATA = b'\x8a' - end_byte = VsMetaMovieEncoder.TAG_EPISODE_THUMB_MD5 = b'\x92' + start_byte = VsMetaMovieEncoder.TAG_EPISODE_THUMB_DATA + end_byte = VsMetaMovieEncoder.TAG_EPISODE_THUMB_MD5 readPosterVsMetaFile(template, testimage, start_byte, end_byte) diff --git a/src/tests/testvsmetaSeriesEncoder.py b/src/tests/testvsmetaSeriesEncoder.py index 5f68c53..7eda35a 100644 --- a/src/tests/testvsmetaSeriesEncoder.py +++ b/src/tests/testvsmetaSeriesEncoder.py @@ -3,9 +3,8 @@ import os from vsmetaEncoder.vsmetaSeriesEncoder import VsMetaSeriesEncoder -from vsmetaEncoder.vsmetaMovieEncoder import VsMetaMovieEncoder from vsmetaEncoder.vsmetaInfo import VsMetaInfo -from testHelpers import readTemplateFile, compareBytesBitByBit, compareBytesLength, writeVsMetaFile +from testHelpers import readPosterVsMetaFile, readTemplateFile, compareBytesBitByBit, compareBytesLength, writeVsMetaFile class TestVsMetaEncoder(unittest.TestCase): @@ -78,6 +77,57 @@ def test_encodeTemplate4(self): compareBytesBitByBit(self, template, testData) compareBytesLength(self, template, testData) + def test_encodeTemplate5Poster(self): + # setup class under test + + template = readTemplateFile(os.path.join(os.path.dirname(os.path.realpath(__file__)),"template5_poster.vsmeta")) + tvimage = os.path.join(os.path.dirname(os.path.realpath(__file__)),"Testtvimage.jpg") + posterimage = os.path.join(os.path.dirname(os.path.realpath(__file__)),"Testposter.jpg") + + readPosterVsMetaFile(template, posterimage, + VsMetaSeriesEncoder.TAG_EPISODE_THUMB_DATA, + VsMetaSeriesEncoder.TAG_EPISODE_THUMB_MD5) + + readPosterVsMetaFile(template, tvimage, + VsMetaSeriesEncoder.TAG2_POSTER_DATA, + VsMetaSeriesEncoder.TAG2_POSTER_MD5) + + info = VsMetaInfo() + + + info.showTitle = 'TV series' + info.tvshowLocked = True + info.tvshowSummary = 'Series summary.' + info.season = 1 + info.setShowDate(date(2022, 7, 3)) + info.tvshowMetaJson = '{}' + + with open(tvimage, "rb") as image2string: + info.images.tvshowPoster = image2string.read() + + info.episodeTitle = 'Episode Title' + info.setEpisodeDate(date(2022, 7, 3)) + info.episodeLocked = True + info.episode = 1 + info.chapterSummary = 'This is a long summary of a the episode.' + info.episodeMetaJson = 'null' + + with open(posterimage, "rb") as image2string: + info.images.episodeImage = image2string.read() + + os.remove(tvimage) + os.remove(posterimage) + + # execute, prepare result + writer = VsMetaSeriesEncoder() + testData = writer.encode(info) + + #writeVsMetaFile(os.path.join(os.path.dirname(os.path.realpath(__file__)),'template_movie4-reconstructed.vsmeta'), testData) + + # compare + compareBytesBitByBit(self, template, testData) + compareBytesLength(self, template, testData) + if __name__ == "__main__": unittest.main() \ No newline at end of file diff --git a/src/vsmetaEncoder/vsmetaBase.py b/src/vsmetaEncoder/vsmetaBase.py index e503733..9211a42 100644 --- a/src/vsmetaEncoder/vsmetaBase.py +++ b/src/vsmetaEncoder/vsmetaBase.py @@ -127,17 +127,18 @@ def _writeGroup2(self): else: group2Content += self.TAG2_TV_SHOW_YEAR + self._writeInt(0, 1, True) if self.info.tvshowLocked: group2Content += self.TAG2_LOCKED + self._writeBool(True) - if len(self.info.tvshowMetaJson) > 0: - group2Content += self.TAG2_TVSHOW_META_JSON - group2Content += self._writeStr(self.info.tvshowMetaJson) - + if len(self.info.tvshowSummary) > 0: group2Content += self.TAG2_TVSHOW_SUMMARY + self._writeStr(self.info.tvshowSummary) if self.info.images.tvshowPoster: group2Content += self.TAG2_POSTER_DATA + self._writeImage(self.info.images.tvshowPoster) group2Content += self.TAG2_POSTER_MD5 + self._writeMD5(self.info.images.tvshowPoster) - + + if len(self.info.tvshowMetaJson) > 0: + group2Content += self.TAG2_TVSHOW_META_JSON + group2Content += self._writeStr(self.info.tvshowMetaJson) + self._writeTag(self.TAG_GROUP2) self._writeTag(b'\x01') # group 2 - occurence no. 1? self.encodedContent += self._writeSpecialInt(len(group2Content))