Add indexing and meta system
This commit is contained in:
parent
af96c6aa59
commit
9e07054277
2 changed files with 125 additions and 8 deletions
|
|
@ -115,6 +115,7 @@ def write_index(args,index, html, html_head, html_footer):
|
||||||
def distribusify(args, directory): # noqa
|
def distribusify(args, directory): # noqa
|
||||||
|
|
||||||
freg = fregments.Fregments()
|
freg = fregments.Fregments()
|
||||||
|
freg.preindex(directory)
|
||||||
|
|
||||||
for root, dirs, files in os.walk(directory):
|
for root, dirs, files in os.walk(directory):
|
||||||
|
|
||||||
|
|
@ -204,9 +205,9 @@ def distribusify(args, directory): # noqa
|
||||||
# fregments index
|
# fregments index
|
||||||
# 작가 폴더 내부의 파일인 경우 조각 추가
|
# 작가 폴더 내부의 파일인 경우 조각 추가
|
||||||
#
|
#
|
||||||
if len(path) == 3 and artist:
|
#if len(path) == 3 and artist:
|
||||||
id_name = name.split('.')[0].replace(' ', '_')
|
# id_name = name.split('.')[0].replace(' ', '_')
|
||||||
freg.add(artist, id_name)
|
# freg.add(artist, id_name)
|
||||||
|
|
||||||
|
|
||||||
if root != directory:
|
if root != directory:
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,133 @@
|
||||||
|
import os
|
||||||
|
import platform
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
||||||
|
|
||||||
|
class Fregment:
|
||||||
|
def __init__(self, index, update, directory, artist, file):
|
||||||
|
self.index = index
|
||||||
|
self.update = update
|
||||||
|
self.directory = directory
|
||||||
|
self.artist = artist
|
||||||
|
self.file = file
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return repr((self.index, self.update, self.directory, self.artist, self.file))
|
||||||
|
|
||||||
|
|
||||||
class Fregments:
|
class Fregments:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.file = 'fregments_index.json';
|
self.index = {}
|
||||||
with open(self.file) as json_file:
|
self.indextable = []
|
||||||
|
self.timetable = []
|
||||||
|
self.events_dir = './events/'
|
||||||
|
self.config_file = 'config.json'
|
||||||
|
self.index_file = 'fregments_index.json'
|
||||||
|
|
||||||
|
with open(self.index_file) as json_file:
|
||||||
self.json_data = json.load(json_file)
|
self.json_data = json.load(json_file)
|
||||||
print(json.dumps(self.json_data))
|
|
||||||
|
|
||||||
self.temp_data = {"fregments":[]}
|
self.temp_data = {"fregments":[]}
|
||||||
self.count = len(self.json_data["fregments"])
|
self.count = len(self.json_data["fregments"])
|
||||||
|
|
||||||
|
def creation_date(self, path_to_file):
|
||||||
|
"""
|
||||||
|
Try to get the date that a file was created, falling back to when it was
|
||||||
|
last modified if that isn't possible.
|
||||||
|
See http://stackoverflow.com/a/39501288/1709587 for explanation.
|
||||||
|
"""
|
||||||
|
if platform.system() == 'Windows':
|
||||||
|
return os.path.getctime(path_to_file)
|
||||||
|
else:
|
||||||
|
stat = os.stat(path_to_file)
|
||||||
|
try:
|
||||||
|
return stat.st_mtime
|
||||||
|
except AttributeError:
|
||||||
|
return stat.st_birthtime
|
||||||
|
|
||||||
|
def occupancy(self, directory, file):
|
||||||
|
f = file + ".meta"
|
||||||
|
meta_path = os.path.join(directory, f)
|
||||||
|
with open(meta_path) as json_file:
|
||||||
|
meta = json.load(json_file)
|
||||||
|
occupation = meta["occupation"]
|
||||||
|
if occupation > -1:
|
||||||
|
origin_path = os.path.join(directory, file)
|
||||||
|
date = self.creation_date(origin_path)
|
||||||
|
artist = directory.split("/")[2]
|
||||||
|
self.index[occupation] = Fregment(occupation, date, directory, artist, file)
|
||||||
|
|
||||||
|
def is_meta(self, file):
|
||||||
|
fa = file.split(".")
|
||||||
|
i = len(fa)-1
|
||||||
|
if i>0 and fa[i] == "meta":
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def has_meta(self, directory, file):
|
||||||
|
f = file+".meta"
|
||||||
|
meta_path = os.path.join(directory, f)
|
||||||
|
if os.path.isfile(meta_path):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def preindex(self, directory):
|
||||||
|
for root, dirs, files in os.walk(directory):
|
||||||
|
if root == directory:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
# files index
|
||||||
|
for f in files:
|
||||||
|
if self.is_meta(f):
|
||||||
|
pass
|
||||||
|
elif f == "index.html":
|
||||||
|
pass
|
||||||
|
elif self.has_meta(root, f):
|
||||||
|
self.occupancy(root, f)
|
||||||
|
else:
|
||||||
|
self.add_timetable(root, f)
|
||||||
|
# dirs index
|
||||||
|
for d in dirs:
|
||||||
|
if self.has_meta(root, d):
|
||||||
|
self.occupancy(root, d)
|
||||||
|
else:
|
||||||
|
self.add_timetable(root, d)
|
||||||
|
|
||||||
|
self.timetable = sorted(self.timetable, key=lambda fregment: fregment.update)
|
||||||
|
print("----------- INDEXING ------------")
|
||||||
|
# indexing
|
||||||
|
for f in self.timetable:
|
||||||
|
f.index = self.get_lastindex()
|
||||||
|
self.index[f.index] = f
|
||||||
|
|
||||||
|
self.update_indextable()
|
||||||
|
print(self.indextable)
|
||||||
|
|
||||||
|
def update_indextable(self):
|
||||||
|
self.indextable = []
|
||||||
|
for f in self.index:
|
||||||
|
self.indextable.append(self.index[f])
|
||||||
|
self.indextable = sorted(self.indextable, key=lambda fregment: fregment.index)
|
||||||
|
|
||||||
|
def get_lastindex(self):
|
||||||
|
last = 0
|
||||||
|
self.update_indextable()
|
||||||
|
for f in self.indextable:
|
||||||
|
if f.index == last:
|
||||||
|
last = last + 1
|
||||||
|
return last
|
||||||
|
|
||||||
|
def add_timetable(self, directory, file):
|
||||||
|
path = os.path.join(directory, file)
|
||||||
|
date = self.creation_date(path)
|
||||||
|
artist = directory.split("/")[2]
|
||||||
|
self.timetable.append(Fregment(-1, date, directory, artist, file))
|
||||||
|
|
||||||
def add(self, artist, fregment):
|
def add(self, artist, fregment):
|
||||||
|
|
||||||
temp = {
|
temp = {
|
||||||
"index" : 0,
|
"index" : 0,
|
||||||
"update" : 0,
|
"update" : 0,
|
||||||
|
|
@ -43,7 +156,7 @@ class Fregments:
|
||||||
print(json.dumps(self.temp_data))
|
print(json.dumps(self.temp_data))
|
||||||
for f in self.temp_data['fregments']:
|
for f in self.temp_data['fregments']:
|
||||||
self.json_data['fregments'].append(f)
|
self.json_data['fregments'].append(f)
|
||||||
with open(self.file, 'w') as outfile:
|
with open(self.index_file, 'w') as outfile:
|
||||||
json.dump(self.json_data, outfile, indent=4)
|
json.dump(self.json_data, outfile, indent=4)
|
||||||
self.count = len(self.json_data["fregments"])
|
self.count = len(self.json_data["fregments"])
|
||||||
|
|
||||||
|
|
@ -56,6 +169,9 @@ class Fregments:
|
||||||
def get_count(self):
|
def get_count(self):
|
||||||
return self.count
|
return self.count
|
||||||
|
|
||||||
|
def get_index(self):
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue