ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Tool_Box/iTunesDirSync.py
Revision: 8
Committed: Sat May 5 04:21:19 2012 UTC (13 years, 10 months ago) by ninoborges
Content type: text/x-python
File size: 3379 byte(s)
Log Message:
Initial Import

File Contents

# Content
1 """
2
3 iTunesDirSync.py
4
5 Created by:
6 Emanuel Borges
7 03.30.209
8
9
10 """
11
12 import os, NinoGenTools
13
14 class DirDictionary:
15 def __init__ (self, reportType = 'Simple'):
16 self.reportType = reportType
17 if reportType == 'Complex':
18 self.hasher = NinoGenTools.HashFileContents('md5')
19
20 def CreateDictionary(self, topLevelDir):
21 self.matrix = {}
22 self.hashMatrix = {}
23 for contents in os.walk(topLevelDir):
24 (currentDir, dirNames, listOfFiles) = contents
25 for file in listOfFiles:
26 if self.reportType == 'Complex':
27 hashVal = self.hasher.HashFile(os.path.join(currentDir, file))
28 self.hashMatrix[os.path.join(currentDir, file)] = hashVal
29 if file in self.matrix.keys():
30 self.matrix[file].append(os.path.join(currentDir, file))
31 else:
32 self.matrix[file] = [os.path.join(currentDir, file)]
33 def DuplicateReport(self):
34 dupCount = NinoGenTools.Counter()
35
36 for i in self.matrix.keys():
37 instanceCount = len(self.matrix[i])
38 ## Query these "Dups" against the hash table and remove them if they're not.
39
40 if instanceCount > 1:
41 dupCount.inc()
42 print "-"*25
43 print "You have %d versions of %s" %(instanceCount, i)
44 for dir in self.matrix[i]:
45 print dir
46 print "-"*25
47 print
48 print "*"*25
49 print "You have a total of %d duplicates" %dupCount.count
50
51
52 class DirDictionaryComparisonTool:
53 def __init__(self):
54 """Tools for comparing two DirDictionary objects. Dont forget that they're objects
55 not just dicts"""
56 pass
57 def FindDifferences(self,localComputer, otherComputer):
58 """(localComputer DirDictionary, otherComputer DirDictionary)
59 Finds the differences between 2 DirDictionaries"""
60 localComputerMissingCount = NinoGenTools.Counter()
61 otherComputerMissingCount = NinoGenTools.Counter()
62 localMissingFileList =[]
63 otherMissingFileList =[]
64 for i in localComputer.matrix.keys():
65 if i in otherComputer.matrix.keys():
66 pass
67 else:
68 otherMissingFileList.append(i)
69 for x in otherComputer.matrix.keys():
70 if x in localComputer.matrix.keys():
71 pass
72 else:
73 localMissingFileList.append(x)
74
75 print "*"*25
76 print "You are missing %d files, that the other computer has."%len(localMissingFileList)
77 print
78 raw_input("Press any key to see a list:")
79 print "-"*25
80 for fileName in localMissingFileList:
81 for absFilePath in otherComputer.matrix[fileName]:
82 print absFilePath
83 print "-"*25
84 print "*"*25
85 print "The other computer is missing %d files, that you have."%len(otherMissingFileList)
86 print
87 raw_input("Press any key to see a list:")
88 print "-"*25
89 for fileName in otherMissingFileList:
90 for absFilePath in localComputer.matrix[fileName]:
91 print absFilePath
92 print "-"*25
93