summaryrefslogtreecommitdiffstats
path: root/splitter.py
blob: 9bd45c95850df301c4f2626beeb94efb54440054 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
from sys import argv
from pyPdf import PdfFileWriter, PdfFileReader

songs = []
f = open(argv[1], "r")
for i in f:
	i = i.strip()
	a = i.split(" ")
	name = " ".join(a[0:-2])
	book = a[-2]
	try:
		page = int(a[-1])
	except:
		continue
	
	songs.append({
		'name': name,
		'page': page,
		'book': book
	})

bookmap = {
	'Colorado': {
		'file': 'COLORADO BOOK.PDF',
		'pages': 292,
		'offset': 3
	},
	'JazzLTD': {
		'file': 'JAZZ LTD BOOK.PDF',
		'pages': 402,
		'offset': 7
	},
	'RealBk3': {
		'file': 'REAL BOOK III.PDF',
		'pages': 366,
		'offset': 5
	},
	'JazzFake': {
		'file': 'JAZZ FAKE BOOK.PDF',
		'pages': 448,
		'offset': -1
	},
	'EvansBk': {
		'file': 'BILL EVANS FAKE BOOK.PDF',
		'pages': 106,
		'offset': 3
	},
	'Library': {
		'file': 'LIBRARY.PDF',
		'pages': 217,
		'offset': 4
	},
	'RealBk1': {
		'file': 'REAL BOOK I.PDF',
		'pages': 512,
		'offset': 13
	},
	'NewReal2': {
		'file': 'NEW REAL BOOK II.PDF',
		'pages': 497,
		'offset': 12
	},
	'NewReal3': {
		'file': 'NEW REAL BOOK III.PDF',
		'pages': 448,
		'offset': 10
	},
	'RealBk2': {
		'file': 'REAL BOOK II.PDF',
		'pages': 422,
		'offset': 7
	},
	'NewReal1': {
		'file': 'NEW REAL BOOK I.PDF',
		'pages': 453,
		'offset': 15
	}
}

def nice_name(name):
	if name[0] == "'":
		name = name[1:]
	return name.replace("/", "-")

prefix = "/mnt/multimedia/Books/Real Book/"
destination = "/home/zx2c4/Real Split/"

for book in bookmap.keys():
	input = PdfFileReader(file(prefix + bookmap[book]["file"], "rb"))
	for song in songs:
		if song["book"] != book:
			continue
		print song
		page = song["page"] + bookmap[song["book"]]["offset"] - 1
		span = 999999
		for song2 in songs:
			if song["book"] != song2["book"] or song == song2:
				continue
			page2 = song2["page"] + bookmap[song2["book"]]["offset"] - 1
			diff = page2 - page
			if diff <= 0:
				continue
			if diff < span:
				span = diff
		if page + span > bookmap[book]["pages"]:
			span = bookmap[book]["pages"] - page
		output = PdfFileWriter()
		for i in xrange(0, span):
			output.addPage(input.getPage(page + i))
		output_stream = file("%s%s [%s].pdf" % (destination, nice_name(song["name"]), song["book"]), "wb")
		output.write(output_stream)
		output_stream.close()