Mercurial > hg > purlService
annotate harvestToPurl.py @ 40:671dd1e4bd09 default tip
minor bug
author | dwinter |
---|---|
date | Wed, 05 Mar 2014 10:20:54 +0100 |
parents | a33fa2377075 |
children |
rev | line source |
---|---|
36 | 1 # -*- coding: utf-8 -*- |
0 | 2 ''' |
36 | 3 |
0 | 4 Created on 31.10.2012 |
5 | |
6 @author: dwinter | |
36 | 7 |
8 wesentlich hier ist: harvestIndexMeta | |
0 | 9 ''' |
10 | |
36 | 11 |
12 | |
10 | 13 import managePurls.manageIndexMetaPURLs as manageIndexMetaPURLs |
39 | 14 from addDriToIndexMeta import getDRIfromIndexMeta |
0 | 15 |
16 | |
17 import os | |
18 from os.path import join, getsize | |
19 import sys | |
20 import re | |
3 | 21 from lxml import etree |
0 | 22 |
3 | 23 def harvestIndexMeta(path,user,delpath="",replacepath="", update=False): |
36 | 24 """ |
25 Sucht in path und allen unterordnern nach index.meta dateien und schaut dann nach ob es dort schon ein index meta gibt. Wenn ja wird geschaut, ob die | |
26 dort enthaltenenn dris mit denen Übereinstimmen, die in der Datenbank gespeichert sind. | |
0 | 27 |
36 | 28 delpath ist ein optionaler Parameter, der angibt wird welcher Teil des Pfades in pfad aus dem Pfad zur Überprüfung gelöscht werden soll, d.h. |
29 angenommen path="/mpiwg/online/permanent" und delpath="/mpiwg/online" dann wird in der Datenbank nach Pfaden gesucht die mit /permanent beginnen. | |
30 | |
31 Ist replacepath gesetzt wird der mit delpath geloeschte Teil durch replacepath ersetzt, dh.h | |
32 path="/Volumes/online_permanent/library" und delpath="/Volumes/online_permanent", replacepath="/permanent" ann wird in der Datenbank nach Pfaden gesucht die mit /permanent beginnen. | |
33 | |
34 | |
35 Falls es keine DRI gibt, wird eine PURL in der Datenbank erzeugt. Diese wird NICHT in den index.meta gespeichert, dazu muss ein anderes Script "addDriToIndexMeta" aufgerufen werden! | |
36 | |
37 Falls es eine gibt und das update Flag gesetzt ist, wird die Dri aus den Index.meta in die Datenbank zu dem Pfad geschrieben. | |
38 """ | |
0 | 39 md = manageIndexMetaPURLs.IndexMetaPURLManager() |
40 | |
41 for root, dirs, files in os.walk(path): | |
42 | |
43 | |
44 for name in files: | |
45 if name.endswith(".meta"): | |
46 fl=join(root, name) | |
36 | 47 |
39 | 48 parseErrorFile = file("/tmp/HarvestToPurlParseErrors.txt","w") |
49 driIndexMeta=getDRIfromIndexMeta(fl,parseErrorFile=parseErrorFile) | |
36 | 50 |
3 | 51 imagePath=createImagePath(fl,root) |
36 | 52 |
3 | 53 imagePath=re.sub("^"+delpath,replacepath,imagePath) |
54 | |
0 | 55 fl=re.sub("^"+delpath,replacepath,fl) #loesche den teil vom path der mir delpath beginnt |
56 | |
36 | 57 |
58 | |
59 val,purl = md.register(fl, True, user=user,imagePath=imagePath,driIndexMeta=driIndexMeta,update=update) | |
4 | 60 try: |
61 if val==manageIndexMetaPURLs.ALREADY_EXISTS: | |
62 print "found %s -> %s"%(fl,purl) | |
3 | 63 |
4 | 64 elif val==manageIndexMetaPURLs.UPDATED: |
65 print "updated %s -> %s"%(fl,purl) | |
66 else: | |
67 print "added %s -> %s"%(fl,purl) | |
68 except: | |
69 print "cannot print: %s"%purl | |
70 | |
0 | 71 if 'pageimg' in dirs: |
72 dirs.remove('pageimg') # don't visit pageimf | |
73 for dir in dirs: | |
74 if dir== "pageimg": | |
75 dirs.remove('pageimg') | |
76 if dir.startswith("."): | |
77 dirs.remove(dir) | |
78 | |
4 | 79 if dir.startswith(":"): |
80 dirs.remove(dir) | |
81 | |
0 | 82 |
3 | 83 # erzeugt einen imagepath wenn kein texttooltag existiert |
84 def createImagePath(path,root): | |
4 | 85 print "parsing: %s"%path |
86 try: | |
87 tree= etree.parse(path) | |
88 except: | |
89 print "cannot parse %s"%path | |
90 return "" | |
91 | |
3 | 92 #teste ob texttool tag, dann kein imagePath |
93 tt =tree.xpath('//texttool') | |
94 if len(tt)>0: | |
95 return "" | |
0 | 96 |
3 | 97 |
98 #im anderen fall, heuristic | |
99 | |
100 imageFolders=["pageimg","pages"] | |
101 | |
102 for imageFolder in imageFolders: | |
103 fl=join(root, imageFolder) | |
104 if os.path.exists(fl): # gibt es einen der folder | |
105 return fl | |
106 | |
107 return "" | |
108 | |
109 | |
110 | |
0 | 111 |
112 if __name__ == '__main__': | |
113 args = sys.argv[1:] | |
114 if not (len(args)==2 or len(args)==3 or len(args)==4): | |
115 print "USAGE: python harvestToPurl.py path user (optional)pathPrefixToDelete (optional)replacedeleted" | |
116 sys.exit(2) | |
117 path=args[0] | |
118 user=args[1] | |
119 | |
120 delpath="" | |
121 replacepath="" | |
122 | |
123 if len(args)==3: | |
124 delpath=args[2] | |
125 elif len(args)==4: | |
126 delpath=args[2] | |
127 replacepath=args[3] | |
128 | |
129 | |
130 if not os.path.exists(path): | |
131 print "ERROR: path %s does not exist!"%path | |
132 sys.exit(2) | |
133 | |
37
6a0873a913c5
register updated die dri, wenn sie nicht gleich der gespeicherten dri ist, auch wenn update nicht gleich true ist.
dwinter
parents:
36
diff
changeset
|
134 harvestIndexMeta(path,user,delpath=delpath,replacepath=replacepath,update=False) |
0 | 135 |
4 | 136 |