| Line | |
|---|
| 1 |
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 |
|
|---|
| 16 |
|
|---|
| 17 |
|
|---|
| 18 |
|
|---|
| 19 |
|
|---|
| 20 |
from eyeD3 import *; |
|---|
| 21 |
|
|---|
| 22 |
def versionsToConstant(v): |
|---|
| 23 |
major = v[0]; |
|---|
| 24 |
minor = v[1]; |
|---|
| 25 |
rev = v[2]; |
|---|
| 26 |
if major == 1: |
|---|
| 27 |
if minor == 0: |
|---|
| 28 |
return ID3_V1_0; |
|---|
| 29 |
elif minor == 1: |
|---|
| 30 |
return ID3_V1_1; |
|---|
| 31 |
elif major == 2: |
|---|
| 32 |
if minor == 2: |
|---|
| 33 |
return ID3_V2_2; |
|---|
| 34 |
if minor == 3: |
|---|
| 35 |
return ID3_V2_3; |
|---|
| 36 |
elif minor == 4: |
|---|
| 37 |
return ID3_V2_4; |
|---|
| 38 |
raise str("Invalid ID3 version: %s" % str(v)); |
|---|
| 39 |
|
|---|
| 40 |
def versionToString(v): |
|---|
| 41 |
if v & ID3_V1: |
|---|
| 42 |
if v == ID3_V1_0: |
|---|
| 43 |
return "v1.0"; |
|---|
| 44 |
elif v == ID3_V1_1: |
|---|
| 45 |
return "v1.1"; |
|---|
| 46 |
elif v == ID3_V1: |
|---|
| 47 |
return "v1.x"; |
|---|
| 48 |
elif v & ID3_V2: |
|---|
| 49 |
if v == ID3_V2_2: |
|---|
| 50 |
return "v2.2"; |
|---|
| 51 |
elif v == ID3_V2_3: |
|---|
| 52 |
return "v2.3"; |
|---|
| 53 |
elif v == ID3_V2_4: |
|---|
| 54 |
return "v2.4"; |
|---|
| 55 |
elif v == ID3_V2: |
|---|
| 56 |
return "v2.x"; |
|---|
| 57 |
|
|---|
| 58 |
if v == ID3_ANY_VERSION: |
|---|
| 59 |
return "v1.x/v2.x"; |
|---|
| 60 |
raise str("versionToString - Invalid ID3 version constant: %s" % hex(v)); |
|---|
| 61 |
|
|---|
| 62 |
def constantToVersions(v): |
|---|
| 63 |
if v & ID3_V1: |
|---|
| 64 |
if v == ID3_V1_0: |
|---|
| 65 |
return [1, 0, 0]; |
|---|
| 66 |
elif v == ID3_V1_1: |
|---|
| 67 |
return [1, 1, 0]; |
|---|
| 68 |
elif v == ID3_V1: |
|---|
| 69 |
return [1, 1, 0]; |
|---|
| 70 |
elif v & ID3_V2: |
|---|
| 71 |
if v == ID3_V2_2: |
|---|
| 72 |
return [2, 2, 0]; |
|---|
| 73 |
elif v == ID3_V2_3: |
|---|
| 74 |
return [2, 3, 0]; |
|---|
| 75 |
elif v == ID3_V2_4: |
|---|
| 76 |
return [2, 4, 0]; |
|---|
| 77 |
elif v == ID3_V2: |
|---|
| 78 |
return [2, 4, 0]; |
|---|
| 79 |
raise str("constantToVersions - Invalid ID3 version constant: %s" % hex(v)); |
|---|
| 80 |
|
|---|
| 81 |
|
|---|
| 82 |
TRACE = 0; |
|---|
| 83 |
prefix = "eyeD3 trace> "; |
|---|
| 84 |
def TRACE_MSG(msg): |
|---|
| 85 |
if TRACE: |
|---|
| 86 |
try: |
|---|
| 87 |
print prefix + msg; |
|---|
| 88 |
except UnicodeEncodeError: |
|---|
| 89 |
pass; |
|---|
| 90 |
|
|---|
| 91 |
STRICT_ID3 = 0; |
|---|
| 92 |
def strictID3(): |
|---|
| 93 |
return STRICT_ID3; |
|---|
| 94 |
|
|---|
| 95 |
|
|---|
| 96 |
import os; |
|---|
| 97 |
|
|---|
| 98 |
class FileHandler: |
|---|
| 99 |
R_CONT = 0; |
|---|
| 100 |
R_HALT = -1; |
|---|
| 101 |
|
|---|
| 102 |
|
|---|
| 103 |
def handleFile(self, f): |
|---|
| 104 |
pass |
|---|
| 105 |
|
|---|
| 106 |
|
|---|
| 107 |
|
|---|
| 108 |
def handleDone(self): |
|---|
| 109 |
pass |
|---|
| 110 |
|
|---|
| 111 |
class FileWalker: |
|---|
| 112 |
def __init__(self, handler, root, excludes = []): |
|---|
| 113 |
self._handler = handler; |
|---|
| 114 |
self._root = root; |
|---|
| 115 |
self._excludes = excludes; |
|---|
| 116 |
|
|---|
| 117 |
def go(self): |
|---|
| 118 |
for (root, dirs, files) in os.walk(self._root): |
|---|
| 119 |
for f in files: |
|---|
| 120 |
f = os.path.abspath(root + os.sep + f); |
|---|
| 121 |
if not self._isExcluded(f): |
|---|
| 122 |
if self._handler.handleFile(f) == FileHandler.R_HALT: |
|---|
| 123 |
return FileHandler.R_HALT; |
|---|
| 124 |
return self._handler.handleDone(); |
|---|
| 125 |
|
|---|
| 126 |
def _isExcluded(self, path): |
|---|
| 127 |
for ex in self._excludes: |
|---|
| 128 |
match = re.compile(exd).search(path); |
|---|
| 129 |
if match and match.start() == 0: |
|---|
| 130 |
return 1; |
|---|
| 131 |
return 0; |
|---|
| 132 |
|
|---|