def __init__(self,button=None): def getSize(): size = 0 for i in p._idb.images.keys(): size += p._idb.images[i][0] return size self.window = gtk.Window() self.window.connect("delete_event", self.delete_event) self.window.set_border_width(2) self.window.set_title("Image DB Stats") message = "Images in db: " + str(len(p.getImages())) + '\n' message += "Size of metadata: " + str(len(dumps(p._idb.images))) + '\n' message += "Number of tags: " + str(len(p.getTags())) + '\n' message += "Number of unsorted images: " + str(len(p.search('setMe'))) + '\n' message += "Theoretical size of DB: " + str(getSize()) + '\n' message += "Percent Sorted: " + str(100 - (((len(p.search('setMe')) * 1.0) / len(p.getImages())) * 100)) + '\n' self.message = gtk.Label(message) self.window.add(self.message) self.message.show() self.window.show() gtk.main()
# The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. import pictures as p from sys import argv,exit import os import os.path from hashlib import sha1 if len(argv) != 3: print("Usage: python clean.py idb directory") exit(1) p._idb = p.idb.db(argv[1]) # get a list of files in the directory for i in os.listdir(argv[2]): print("current path is: " + argv[2] + i) if os.path.isfile(argv[2] + i): Hash = sha1(open(argv[2] + i, 'rb').read()).hexdigest() if Hash in p.getImages(): print("match: " + Hash) os.remove(argv[2] + i)
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. import pictures as p from sys import argv,exit import os.path from subprocess import check_output from hashlib import sha1 if len(argv) != 3: print("Usage: python clean.py idb directory") exit(1) p._idbi = p.idb.db(argv[1]) # get a list of files in the directory images = p.getImages() p.close() del p for i in check_output(['find', argv[2], '-type', 'f']).split("\n"): print("current path is: " + i) if os.path.isfile(i): Hash = sha1(open(i, 'rb').read()).hexdigest() if Hash in images: print("match: " + Hash) os.remove(i)
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. from sys import exit,argv import pictures as p import os import os.path def genPath(Hash): image = p._idb.images[Hash] return Hash + ' - ' + ', '.join(image[2]) + '.' + image[1].split(' ')[0] if len(argv) != 3: print("usage: python mass_extract.py db.ksh directory") exit(0) if not os.path.isdir(argv[2]): print("error: pah given is dot a directory") exit(1) p._idb = p.idb.db(argv[1]) os.chdir(argv[2]) for picture in p.getImages(): try: open(genPath(picture), 'wb').write(p.extractImage(picture)) except TypeError: print(picture)
# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. import pictures as p from sys import argv,exit from pickle import dumps def getSize(): size = 0 for i in p._idb.images.keys(): size += p._idb.images[i][0] return size if len(argv) != 2: print("Usage: python addall.py idb") exit(1) p._idb = p.idb.db(argv[1]) print("Images in db: ", len(p.getImages())) print("Size of metadata: ", len(dumps(p._idb.images))) print("Number of tags: ", len(p.getTags())) print("Number of unsorted images: ", len(p.search('setMe'))) print("Theoretical size of DB: ", getSize()) print("Percent Sorted: ", 100 - (((len(p.search('setMe')) * 1.0) / len(p.getImages())) * 100))