From 6b4c402e8d8d87e99a11a10240fb93e7b3861944 Mon Sep 17 00:00:00 2001 From: WORD559 Date: Wed, 30 May 2018 10:55:34 +0100 Subject: [PATCH] Added a function to search with RegEx --- PPM.py | 71 +++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 23 deletions(-) mode change 100644 => 100755 PPM.py diff --git a/PPM.py b/PPM.py old mode 100644 new mode 100755 index 7e254bb..2042e69 --- a/PPM.py +++ b/PPM.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python #PPM.py by pbsds for python 2.7 #AGPL3 licensed # @@ -11,10 +12,10 @@ # - Jsafive for supplying .tmb files # - Austin Burk, Midmad on hatena haiku and WDLmaster on hcs64.com for determining the sound codec # -import sys, wave, audioop#needs os and time aswell in CMD mode +import sys, wave, audioop, re#needs os and time aswell in CMD mode import numpy as np try: - import Image + from PIL import Image hasPIL = True except ImportError: print "Warning: PIL not found, image extraction won't work!" @@ -590,6 +591,27 @@ def WriteImage(image, outputPath): return True +def get_metadata(flipnote): + meta = { + u"Current filename":flipnote.CurrentFilename[:-3]+filetype, + u"Original filename":flipnote.OriginalFilename[:-3]+filetype, + u"Number of frames":flipnote.FrameCount, + u"Locked":flipnote.Locked, + u"Thumbnail frame index":(flipnote.ThumbnailFrameIndex+1), + u"Original author":flipnote.OriginalAuthorName, + u"Editor author":flipnote.EditorAuthorName, + u"Username":flipnote.Username, + u"Original author ID":flipnote.OriginalAuthorID, + u"Editor author ID":flipnote.EditorAuthorID, + u"Date(seconds since 1'st Jan 2000)":flipnote.Date, + u"Date":time.strftime("%H:%M %d/%m-%Y (faulty)", time.gmtime(epoch+flipnote.Date)), + } + if filetype == "ppm": + meta[u"Frame speed"]=flipnote.Framespeed + meta[u"Frame speed"]=flipnote.BGMFramespeed + meta[u"Looped"]=flipnote.Looped + + return meta if __name__ == '__main__': @@ -609,6 +631,7 @@ if __name__ == '__main__': print " -S: Same as mode -s, but will also dump the raw sound data files" print " -m: Prints out the metadata. Can also write it to which also" print " supports unicode charactes." + print " -oa: Seach a directory for an original author that matches the RegEx" print " Mode -t and -m supports TMB files aswell" print " " print " Only used in mode -f" @@ -730,33 +753,35 @@ if __name__ == '__main__': f.close() sys.exit() - meta = [] - meta.append(u"Current filename: %s" % flipnote.CurrentFilename[:-3]+filetype) - meta.append(u"Original filename: %s" % flipnote.OriginalFilename[:-3]+filetype) - meta.append(u"Number of frames: %s" % flipnote.FrameCount) - meta.append(u"Locked: %s" % flipnote.Locked) - if filetype == "ppm": - meta.append(u"Frame speed: %s" % flipnote.Framespeed) - meta.append(u"Frame speed: %s" % flipnote.BGMFramespeed) - meta.append(u"Looped: %s" % flipnote.Looped) - meta.append(u"Thumbnail frame index: %i" % (flipnote.ThumbnailFrameIndex+1)) - meta.append(u"Original author: %s" % flipnote.OriginalAuthorName) - meta.append(u"Editor author: %s" % flipnote.EditorAuthorName) - meta.append(u"Username: %s" % flipnote.Username) - meta.append(u"Original author ID: %s" % flipnote.OriginalAuthorID) - meta.append(u"Editor author ID: %s" % flipnote.EditorAuthorID) - meta.append(u"Date(seconds since 1'st Jan 2000): %s" % flipnote.Date) - meta.append(time.strftime(u"Date: %H:%M %d/%m-%Y", time.gmtime(epoch+flipnote.Date)) + " (faulty)") - + meta = get_metadata(flipnote) newline = "\n" if sys.platform in ("win32", "cygwin"): newline = "\r\n" elif sys.platform in ("darwin"): newline = "\r" - - print newline.join(meta).encode('ascii', 'ignore') + + print newline.join(["\t".join([unicode(char) for char in line]) for line in meta.items()]).encode('ascii', 'ignore') if len(sys.argv) >= 4: f = open(sys.argv[3], "wb") f.write(newline.join(meta).encode("UTF-8")) f.close() + elif sys.argv[1] == "-oa": + regex = re.compile(sys.argv[2]) + os.chdir(sys.argv[3]) + for filename in os.listdir("."): + epoch = time.mktime(time.struct_time([2000, 1, 1, 0, 0, 0, 5, 1, -1])) + + if not os.path.isfile(filename): + print "Error!\nSpecified file doesn't exist!" + sys.exit() + + filetype = "ppm" if filename[-3:] == "ppm" else "tmb" + flipnote = TMB().ReadFile(filename) if filetype == "tmb" else PPM().ReadFile(filename, ReadFrames=False) + if not flipnote: + continue + + meta = get_metadata(flipnote) + if regex.match(meta["Original author"]): + print filename + else: - print "Error!\nThere's no such mode." \ No newline at end of file + print "Error!\nThere's no such mode."