diff --git a/hatena.py b/hatena.py index f217fb8..9c4863c 100644 --- a/hatena.py +++ b/hatena.py @@ -1,5 +1,5 @@ from twisted.web import static, resource -import sys, os, glob, imp +import sys, os, imp from Hatenatools import *#UGO, PPM, TMB and NTFT #from DB import Database#flipnote handler @@ -163,27 +163,22 @@ class FolderResource(resource.Resource): path = "/".join(request.path.split("/")[3:]) Log(request, path) return "I am a folder, but I'm to lazy to list my contents..." -def LoadHatenadirStructure(Resource, path="hatenadir/ds/v2-xx", root = True): - for i in glob.glob("%s\*" % path): - if os.path.isfile(i): - filename = os.path.basename(i) +def LoadHatenadirStructure(Resource, path=os.path.join("hatenadir", "ds", "v2-xx")): + for root, dirs, files in os.walk(path): + if root <> path: continue#use recursion instead + for filename in files: filetype = filename.split(".")[-1].lower() + os.path.join(path, filename) if filetype == "ugoxml": - Resource.putChild(filename[:-3], UGOXMLResource(i)) + Resource.putChild(filename[:-3], UGOXMLResource(os.path.join(path, filename))) elif filetype == "py": try: - #sys.path.append(os.path.abspath(os.path.dirname(i))) - # #pyfile = __import__(filename[:-3]) - #pyfile = importlib.import_module(filename[:-3]) - #sys.path.pop(-1) - #pyfile = imp.load_module(i) - - pyfile = imp.load_source("pyfile", os.path.abspath(i)) + pyfile = imp.load_source("pyfile", os.path.abspath(os.path.join(path, filename))) except ImportError as err: pyfile = None print "Error!" - print "Failed to import the python file \"%s\"" % i + print "Failed to import the python file \"%s\"" % os.path.join(path, filename) print err if pyfile: @@ -192,11 +187,11 @@ def LoadHatenadirStructure(Resource, path="hatenadir/ds/v2-xx", root = True): pass#ignore else: Resource.putChild(filename, FileResource(os.path.join(path, filename))) - elif os.path.isdir(i): - if os.path.basename(i)[:2] <> "__": + for foldername in dirs:# os.path.isdir(i): + if foldername[:2] <> "__": folder = FolderResource() - LoadHatenadirStructure(folder, os.path.join(path, os.path.basename(i)), False) - Resource.putChild(os.path.basename(i), folder) + LoadHatenadirStructure(folder, os.path.join(path, foldername)) + Resource.putChild(foldername, folder) #when loading: def Setup(): diff --git a/hatenadir/ds/v2-xx/index.ugoxml b/hatenadir/ds/v2-xx/index.ugoxml index f7a3f5f..348465a 100644 --- a/hatenadir/ds/v2-xx/index.ugoxml +++ b/hatenadir/ds/v2-xx/index.ugoxml @@ -24,6 +24,6 @@ 0 0 - __ntfts\News.ntft + __ntfts/News.ntft diff --git a/server.py b/server.py index e5ce188..1c5c88f 100644 --- a/server.py +++ b/server.py @@ -11,6 +11,20 @@ if useWSGI: from twisted.application import internet, service import sys, time, os, atexit print "Done!" +#set working directory +if os.path.dirname(__file__): + os.chdir(os.path.dirname(__file__)) +else: + for i in sys.path: + path = os.path.split(i)[0] + if not os.path.exists(os.path.join(path, "server.py")): continue + if not os.path.exists(os.path.join(path, "hatena.py")): continue + if not os.path.exists(os.path.join(path, "DB.py")): continue + os.chdir(path) + break + else: + print "Can't force working directory, may fail crash!" + #Logging class Log: class filesplit:#a file object writing to two outputs