mirror of
https://github.com/simon987/Simple-Incremental-Search-Tool.git
synced 2025-04-10 14:06:41 +00:00
More or less working search. I may or may not have broken everything
This commit is contained in:
parent
f8251f86f9
commit
410261da41
12
indexer.py
12
indexer.py
@ -61,15 +61,17 @@ class Indexer:
|
||||
self.es.indices.create(index=self.index_name)
|
||||
self.es.indices.close(index=self.index_name)
|
||||
|
||||
self.es.indices.put_settings(body='{"analysis": {"analyzer": {"path_analyser": {'
|
||||
'"tokenizer": "path_tokenizer"}}, "tokenizer": {"path_tokenizer": {'
|
||||
'"type": "path_hierarchy"}}}}', index=self.index_name)
|
||||
self.es.indices.put_settings(body='{"analysis":{"tokenizer":{"path_tokenizer":{"type":"path_hierarchy"}}}}', index=self.index_name)
|
||||
self.es.indices.put_settings(body='{"analysis":{"tokenizer":{"my_nGram_tokenizer":{"type":"nGram","min_gram":3,"max_gram":4}}}}')
|
||||
self.es.indices.put_settings(body='{"analysis":{"analyzer":{"path_analyser":{"tokenizer":"path_tokenizer"}}}}')
|
||||
self.es.indices.put_settings(body='{"analysis":{"analyzer":{"my_nGram":{"tokenizer":"my_nGram_tokenizer"}}}}')
|
||||
|
||||
self.es.indices.put_mapping(body='{"properties": {'
|
||||
'"name": {"type": "text", "analyzer": "path_analyser", "copy_to": "suggest-path"},'
|
||||
'"path": {"type": "text", "analyzer": "path_analyser", "copy_to": "suggest-path"},'
|
||||
'"suggest-path": {"type": "completion", "analyzer": "keyword"},'
|
||||
'"mime": {"type": "keyword"},'
|
||||
'"directory": {"type": "keyword"}'
|
||||
'"directory": {"type": "keyword"},'
|
||||
'"name": {"analyzer": "my_nGram", "type": "text"}'
|
||||
'}}', doc_type="file", index=self.index_name)
|
||||
|
||||
self.es.indices.open(index=self.index_name)
|
||||
|
18
parsing.py
18
parsing.py
@ -127,10 +127,12 @@ class GenericFileParser(FileParser):
|
||||
|
||||
file_stat = os.stat(full_path)
|
||||
path, name = os.path.split(full_path)
|
||||
name, extension = os.path.splitext(name)
|
||||
|
||||
info["size"] = file_stat.st_size
|
||||
info["path"] = path # todo save relative path
|
||||
info["name"] = name
|
||||
info["extension"] = extension[1:]
|
||||
info["mtime"] = file_stat.st_mtime
|
||||
|
||||
for calculator in self.checksum_calculators:
|
||||
@ -264,13 +266,17 @@ class PictureFileParser(GenericFileParser):
|
||||
|
||||
print("picture")
|
||||
|
||||
with open(full_path, "rb") as image_file:
|
||||
with Image.open(image_file) as image:
|
||||
try:
|
||||
with open(full_path, "rb") as image_file:
|
||||
with Image.open(image_file) as image:
|
||||
|
||||
info["mode"] = image.mode
|
||||
info["format"] = image.format
|
||||
info["width"] = image.width
|
||||
info["height"] = image.height
|
||||
info["mode"] = image.mode
|
||||
info["format"] = image.format
|
||||
info["width"] = image.width
|
||||
info["height"] = image.height
|
||||
except OSError as e:
|
||||
print(e.strerror)
|
||||
pass
|
||||
|
||||
return info
|
||||
|
||||
|
@ -4,10 +4,4 @@ flask_bcrypt
|
||||
elasticsearch
|
||||
python-magic
|
||||
requests
|
||||
apscheduler
|
||||
ffmpeg-python
|
||||
fonttools
|
||||
chardet
|
||||
exifread
|
||||
humanfriendly
|
||||
Pillow
|
||||
apscheduler
|
44
run.py
44
run.py
@ -6,6 +6,8 @@ import json
|
||||
import os
|
||||
import humanfriendly
|
||||
from search import Search
|
||||
from PIL import Image
|
||||
from io import BytesIO
|
||||
|
||||
app = Flask(__name__)
|
||||
app.secret_key = "A very secret key"
|
||||
@ -15,6 +17,8 @@ tm = TaskManager(storage)
|
||||
search = Search("changeme")
|
||||
|
||||
|
||||
|
||||
|
||||
def get_dir_size(path):
|
||||
|
||||
size = 0
|
||||
@ -45,7 +49,8 @@ def file(doc_id):
|
||||
doc = search.get_doc(doc_id)["_source"]
|
||||
directory = storage.dirs()[doc["directory"]]
|
||||
|
||||
full_path = os.path.join(directory.path, doc["path"], doc["name"])
|
||||
extension = "" if doc["extension"] is None or doc["extension"] == "" else "." + doc["extension"]
|
||||
full_path = os.path.join(directory.path, doc["path"], doc["name"] + extension)
|
||||
|
||||
return send_file(full_path, mimetype=doc["mime"], as_attachment=True, attachment_filename=doc["name"])
|
||||
|
||||
@ -55,32 +60,53 @@ def download(doc_id):
|
||||
|
||||
doc = search.get_doc(doc_id)["_source"]
|
||||
directory = storage.dirs()[doc["directory"]]
|
||||
|
||||
full_path = os.path.join(directory.path, doc["path"], doc["name"])
|
||||
extension = "" if doc["extension"] is None or doc["extension"] == "" else "." + doc["extension"]
|
||||
full_path = os.path.join(directory.path, doc["path"], doc["name"] + extension)
|
||||
|
||||
return send_file(full_path)
|
||||
|
||||
|
||||
@app.route("/thumb/<int:dir_id>/<doc_id>")
|
||||
def thumb(dir_id, doc_id):
|
||||
@app.route("/thumb/<doc_id>")
|
||||
def thumb(doc_id):
|
||||
|
||||
if dir_id in storage.dirs():
|
||||
doc = search.get_doc(doc_id)
|
||||
|
||||
return app.send_static_file(os.path.join("thumbnails/", str(dir_id), doc_id))
|
||||
if doc is not None:
|
||||
|
||||
tn_path = os.path.join("static/thumbnails/", str(doc["_source"]["directory"]), doc_id)
|
||||
print(tn_path)
|
||||
if os.path.isfile(tn_path):
|
||||
return send_file(tn_path)
|
||||
else:
|
||||
print("tn not found")
|
||||
default_thumbnail = BytesIO()
|
||||
Image.new("RGB", (255, 128), (0, 0, 0)).save(default_thumbnail, "JPEG")
|
||||
default_thumbnail.seek(0)
|
||||
return send_file(default_thumbnail, "image/jpeg")
|
||||
|
||||
else:
|
||||
abort(404)
|
||||
print("doc is none")
|
||||
default_thumbnail = BytesIO()
|
||||
Image.new("RGB", (255, 128), (0, 0, 0)).save(default_thumbnail, "JPEG")
|
||||
default_thumbnail.seek(0)
|
||||
return send_file(default_thumbnail, "image/jpeg")
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def search_page():
|
||||
return render_template("search.html")
|
||||
|
||||
@app.route("/list")
|
||||
def search_liste_page():
|
||||
return render_template("searchList.html")
|
||||
|
||||
|
||||
@app.route("/search")
|
||||
def search_route():
|
||||
|
||||
page = search.search()
|
||||
query = request.args.get("q")
|
||||
query = "" if query is None else query
|
||||
page = search.search(query)
|
||||
|
||||
return json.dumps(page)
|
||||
|
||||
|
43
search.py
43
search.py
@ -1,8 +1,9 @@
|
||||
import elasticsearch
|
||||
from elasticsearch import helpers
|
||||
import requests
|
||||
import json
|
||||
|
||||
import elasticsearch
|
||||
import requests
|
||||
from elasticsearch import helpers
|
||||
|
||||
|
||||
class Search:
|
||||
|
||||
@ -50,9 +51,34 @@ class Search:
|
||||
except:
|
||||
return 0
|
||||
|
||||
def search(self):
|
||||
page = self.es.search(body={"query": {"term": {"directory": 1}}, "size": 40},
|
||||
index=self.index_name, scroll="3m")
|
||||
def search(self, query):
|
||||
|
||||
print(query)
|
||||
|
||||
page = self.es.search(body={"query":
|
||||
{"multi_match": {
|
||||
"query": query,
|
||||
"fields": ["name", "content"]
|
||||
}},
|
||||
"sort": [
|
||||
"_score"
|
||||
],
|
||||
"highlight": {
|
||||
"fields": {
|
||||
"content": {"pre_tags": ["<span class='hl'>"], "post_tags": ["</span>"]},
|
||||
"name": {"pre_tags": ["<span class='hl'>"], "post_tags": ["</span>"]},
|
||||
}
|
||||
},
|
||||
"suggest": {
|
||||
"path": {
|
||||
"prefix": query,
|
||||
"completion": {
|
||||
"field": "suggest-path",
|
||||
"skip_duplicates": True
|
||||
}
|
||||
}
|
||||
},
|
||||
"size": 40}, index=self.index_name, scroll="3m")
|
||||
|
||||
return page
|
||||
|
||||
@ -64,4 +90,7 @@ class Search:
|
||||
|
||||
def get_doc(self, doc_id):
|
||||
|
||||
return self.es.get(index=self.index_name, id=doc_id, doc_type="file")
|
||||
try:
|
||||
return self.es.get(index=self.index_name, id=doc_id, doc_type="file")
|
||||
except elasticsearch.exceptions.NotFoundError:
|
||||
return None
|
||||
|
@ -29,7 +29,12 @@ class GenericFileParserTest(TestCase):
|
||||
def test_parse_name(self):
|
||||
result = self.parser.parse("test_parse.txt")
|
||||
|
||||
self.assertEqual(result["name"], "test_parse.txt")
|
||||
self.assertEqual(result["name"], "test_parse")
|
||||
|
||||
def test_parse_ext(self):
|
||||
result = self.parser.parse("test_parse.txt")
|
||||
|
||||
self.assertEqual(result["extension"], "txt")
|
||||
|
||||
def test_parse_md5(self):
|
||||
result = self.parser.parse("test_parse.txt")
|
||||
|
0
spec/test_files/Sound sample licence
Normal file
0
spec/test_files/Sound sample licence
Normal file
2
spec/test_files/Sound sample licence.txt
Normal file
2
spec/test_files/Sound sample licence.txt
Normal file
@ -0,0 +1,2 @@
|
||||
cat1.wav https://archive.org/details/BoulangerColette
|
||||
vid1.mp4 https://archive.org/details/electricsheep-flock-244-32500-1/
|
242
spec/test_files/fix.csv
Normal file
242
spec/test_files/fix.csv
Normal file
@ -0,0 +1,242 @@
|
||||
rosbagTimestamp,header,seq,stamp,secs,nsecs,frame_id,status,status,service,latitude,longitude,altitude,position_covariance,position_covariance_type
|
||||
1497155692699200530,,7,,1491157579,160773992,/imu,,0,1,39.5369442,-122.3383189,70.212,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155692944880129,,8,,1491157579,405828952,/imu,,0,1,39.5369442,-122.3383189,70.214,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155693205080145,,9,,1491157579,662808895,/imu,,0,1,39.5369442,-122.338319,70.217,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155693448665182,,10,,1491157579,910070896,/imu,,0,1,39.5369442,-122.338319,70.22,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155693701357896,,11,,1491157580,160749912,/imu,,0,1,39.5369442,-122.338319,70.224,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155693948406723,,12,,1491157580,410056114,/imu,,0,1,39.5369443,-122.3383191,70.222,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155694199249441,,13,,1491157580,660702943,/imu,,0,1,39.5369443,-122.3383191,70.224,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155694450031554,,14,,1491157580,910502910,/imu,,0,1,39.5369442,-122.3383192,70.228,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155694698414318,,15,,1491157581,159912109,/imu,,0,1,39.5369442,-122.3383192,70.232,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155694950937611,,16,,1491157581,410650968,/imu,,0,1,39.5369442,-122.3383192,70.234,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155695200456558,,17,,1491157581,661637067,/imu,,0,1,39.5369442,-122.3383192,70.236,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155695449647452,,18,,1491157581,910274028,/imu,,0,1,39.5369442,-122.3383193,70.241,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155695696654172,,19,,1491157582,156757116,/imu,,0,1,39.5369442,-122.3383193,70.246,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155695950408543,,20,,1491157582,411731958,/imu,,0,1,39.5369441,-122.3383193,70.248,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155696198959694,,21,,1491157582,660002946,/imu,,0,1,39.5369441,-122.3383193,70.253,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155696450044493,,22,,1491157582,910267114,/imu,,0,1,39.5369441,-122.3383193,70.26,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155696698862343,,23,,1491157583,159172058,/imu,,0,1,39.536944,-122.3383193,70.264,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155696949976702,,24,,1491157583,411098003,/imu,,0,1,39.536944,-122.3383193,70.265,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155697196047935,,25,,1491157583,657394886,/imu,,0,1,39.536944,-122.3383193,70.268,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155697449888530,,26,,1491157583,911263942,/imu,,0,1,39.536944,-122.3383193,70.273,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155697702363698,,27,,1491157584,160381078,/imu,,0,1,39.536944,-122.3383193,70.275,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155697951978681,,28,,1491157584,412154912,/imu,,0,1,39.536944,-122.3383193,70.277,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155698198757549,,29,,1491157584,660244941,/imu,,0,1,39.536944,-122.3383193,70.282,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155698449013208,,30,,1491157584,907248020,/imu,,0,1,39.536944,-122.3383193,70.283,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155698698816621,,31,,1491157585,160113096,/imu,,0,1,39.536944,-122.3383193,70.286,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155698951458599,,32,,1491157585,410294055,/imu,,0,1,39.536944,-122.3383193,70.29,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155699201636690,,33,,1491157585,660209894,/imu,,0,1,39.536944,-122.3383193,70.292,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155699450118119,,34,,1491157585,910845041,/imu,,0,1,39.536944,-122.3383193,70.29,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155699701400647,,35,,1491157586,162636995,/imu,,0,1,39.5369439,-122.3383193,70.293,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155699944604249,,36,,1491157586,405736923,/imu,,0,1,39.5369439,-122.3383193,70.297,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155700198733961,,37,,1491157586,660314083,/imu,,0,1,39.5369439,-122.3383193,70.3,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155700448780955,,38,,1491157586,910307884,/imu,,0,1,39.5369439,-122.3383193,70.299,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155700699622454,,39,,1491157587,160471916,/imu,,0,1,39.5369439,-122.3383193,70.302,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155700948941462,,40,,1491157587,410373926,/imu,,0,1,39.5369439,-122.3383192,70.303,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155701194175133,,41,,1491157587,655395030,/imu,,0,1,39.5369439,-122.338319,70.311,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155701450504697,,42,,1491157587,911648988,/imu,,0,1,39.5369439,-122.3383188,70.307,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155701698065310,,43,,1491157588,159014940,/imu,,0,1,39.5369439,-122.3383186,70.306,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155701949455364,,44,,1491157588,410485029,/imu,,0,1,39.5369439,-122.3383184,70.303,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155702199158214,,45,,1491157588,660476922,/imu,,0,1,39.5369438,-122.3383179,70.305,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155702448983975,,46,,1491157588,910530090,/imu,,0,1,39.5369438,-122.3383174,70.301,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155702695878475,,47,,1491157589,155520915,/imu,,0,1,39.5369439,-122.3383166,70.299,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155702949338529,,48,,1491157589,410665035,/imu,,0,1,39.536944,-122.3383156,70.302,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155703199315450,,49,,1491157589,659708023,/imu,,0,1,39.5369441,-122.338314,70.291,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155703449223652,,50,,1491157589,910044908,/imu,,0,1,39.5369443,-122.3383119,70.296,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155703699304461,,51,,1491157590,160664081,/imu,,0,1,39.5369446,-122.3383092,70.304,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155703947999966,,52,,1491157590,408267974,/imu,,0,1,39.536945,-122.3383059,70.307,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155704199853653,,53,,1491157590,659373998,/imu,,0,1,39.5369455,-122.338302,70.313,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155704449923828,,54,,1491157590,910463094,/imu,,0,1,39.5369461,-122.3382978,70.319,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155704699914812,,55,,1491157591,160336017,/imu,,0,1,39.5369469,-122.3382933,70.331,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155704949678326,,56,,1491157591,410551071,/imu,,0,1,39.5369476,-122.3382886,70.342,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155705198275100,,57,,1491157591,659427881,/imu,,0,1,39.5369484,-122.3382839,70.346,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155705444401125,,58,,1491157591,905611038,/imu,,0,1,39.5369493,-122.338279,70.36,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155705697950603,,59,,1491157592,159246921,/imu,,0,1,39.5369501,-122.3382739,70.364,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155705947898569,,60,,1491157592,409276008,/imu,,0,1,39.5369509,-122.3382685,70.373,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155706201433941,,61,,1491157592,662067890,/imu,,0,1,39.5369517,-122.338263,70.384,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155706448094672,,62,,1491157592,909292936,/imu,,0,1,39.5369524,-122.3382572,70.394,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155706697164634,,63,,1491157593,158289909,/imu,,0,1,39.5369529,-122.3382512,70.409,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155706949400478,,64,,1491157593,410562038,/imu,,0,1,39.5369532,-122.3382449,70.431,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155707197712675,,65,,1491157593,659317970,/imu,,0,1,39.5369534,-122.3382385,70.439,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155707449055767,,66,,1491157593,909921884,/imu,,0,1,39.5369533,-122.3382317,70.451,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155707699543833,,67,,1491157594,161025047,/imu,,0,1,39.5369529,-122.3382246,70.466,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155707961802428,,68,,1491157594,423089027,/imu,,0,1,39.5369518,-122.338217,70.474,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155708194211324,,69,,1491157594,654262065,/imu,,0,1,39.5369504,-122.3382094,70.483,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155708448727185,,70,,1491157594,910130023,/imu,,0,1,39.5369486,-122.3382016,70.496,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155708697043657,,71,,1491157595,158277034,/imu,,0,1,39.5369461,-122.3381937,70.499,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155708948969008,,72,,1491157595,409624099,/imu,,0,1,39.5369429,-122.3381858,70.507,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155709197035651,,73,,1491157595,658170938,/imu,,0,1,39.536939,-122.3381781,70.515,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155709447997402,,74,,1491157595,908169031,/imu,,0,1,39.5369342,-122.3381705,70.519,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155709697805161,,75,,1491157596,158976078,/imu,,0,1,39.5369286,-122.3381634,70.518,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155709946710876,,76,,1491157596,408154964,/imu,,0,1,39.5369223,-122.3381568,70.513,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155710198099025,,77,,1491157596,659354925,/imu,,0,1,39.5369152,-122.3381508,70.509,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155710461332047,,78,,1491157596,908322095,/imu,,0,1,39.5369073,-122.3381455,70.5,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155710696766355,,79,,1491157597,157232999,/imu,,0,1,39.5368988,-122.3381409,70.5,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155710945343303,,80,,1491157597,405055046,/imu,,0,1,39.5368897,-122.338137,70.488,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155711195932659,,81,,1491157597,657205104,/imu,,0,1,39.5368799,-122.3381338,70.478,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155711449236169,,82,,1491157597,910403966,/imu,,0,1,39.5368697,-122.3381311,70.457,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155711698383488,,83,,1491157598,159436941,/imu,,0,1,39.536859,-122.3381288,70.442,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155711949212672,,84,,1491157598,409419059,/imu,,0,1,39.5368479,-122.338127,70.425,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155712198051260,,85,,1491157598,658176898,/imu,,0,1,39.5368365,-122.3381256,70.399,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155712447853905,,86,,1491157598,909332036,/imu,,0,1,39.5368248,-122.3381244,70.371,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155712696731825,,87,,1491157599,157332897,/imu,,0,1,39.5368128,-122.3381235,70.343,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155712946995774,,88,,1491157599,408145904,/imu,,0,1,39.5368005,-122.3381226,70.311,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155713198037946,,89,,1491157599,659293889,/imu,,0,1,39.536788,-122.3381218,70.282,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155713449059897,,90,,1491157599,908636093,/imu,,0,1,39.5367753,-122.3381209,70.252,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155713696473516,,91,,1491157600,155035018,/imu,,0,1,39.5367625,-122.33812,70.214,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155713947725083,,92,,1491157600,409291982,/imu,,0,1,39.5367494,-122.3381191,70.186,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155714198662068,,93,,1491157600,659518003,/imu,,0,1,39.5367362,-122.338118,70.148,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155714449562923,,94,,1491157600,910015106,/imu,,0,1,39.536723,-122.3381169,70.11,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155714697863656,,95,,1491157601,157715082,/imu,,0,1,39.5367096,-122.3381157,70.072,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155714948745712,,96,,1491157601,408838033,/imu,,0,1,39.5366958,-122.3381144,70.027,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155715195767761,,97,,1491157601,657129049,/imu,,0,1,39.536682,-122.3381131,69.99,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155715447829133,,98,,1491157601,908929109,/imu,,0,1,39.5366681,-122.3381119,69.978,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155715695767183,,99,,1491157602,157166957,/imu,,0,1,39.5366541,-122.3381105,69.96,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155715946697363,,100,,1491157602,408101081,/imu,,0,1,39.5366399,-122.3381089,69.927,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155716202546429,,101,,1491157602,663192987,/imu,,0,1,39.5366256,-122.3381071,69.874,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155716443188249,,102,,1491157602,903445005,/imu,,0,1,39.5366112,-122.3381053,69.828,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155716700709390,,103,,1491157603,159765958,/imu,,0,1,39.5365969,-122.3381034,69.787,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155716947885611,,104,,1491157603,408421993,/imu,,0,1,39.5365826,-122.3381016,69.76,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155717198205716,,105,,1491157603,659338951,/imu,,0,1,39.5365682,-122.3380997,69.734,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155717449897379,,106,,1491157603,910563945,/imu,,0,1,39.5365539,-122.3380977,69.697,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155717699204075,,107,,1491157604,160567998,/imu,,0,1,39.5365395,-122.3380958,69.663,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155717948976167,,108,,1491157604,410216093,/imu,,0,1,39.5365252,-122.3380938,69.632,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155718199116389,,109,,1491157604,660048007,/imu,,0,1,39.5365109,-122.3380919,69.597,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155718448483108,,110,,1491157604,909468889,/imu,,0,1,39.5364967,-122.3380899,69.567,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155718696669528,,111,,1491157605,158133029,/imu,,0,1,39.5364825,-122.338088,69.529,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155718949947850,,112,,1491157605,409681081,/imu,,0,1,39.5364684,-122.338086,69.502,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155719194649958,,113,,1491157605,654079914,/imu,,0,1,39.5364544,-122.3380841,69.475,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155719447786542,,114,,1491157605,909197092,/imu,,0,1,39.5364404,-122.3380821,69.443,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155719698886630,,115,,1491157606,159821987,/imu,,0,1,39.5364264,-122.3380801,69.418,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155719949318966,,116,,1491157606,410510063,/imu,,0,1,39.5364126,-122.3380781,69.391,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155720199181745,,117,,1491157606,660552978,/imu,,0,1,39.5363988,-122.3380761,69.361,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155720450661321,,118,,1491157606,910518884,/imu,,0,1,39.5363849,-122.3380741,69.335,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155720697685441,,119,,1491157607,157399892,/imu,,0,1,39.5363712,-122.3380721,69.301,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155720949137584,,120,,1491157607,410551071,/imu,,0,1,39.5363575,-122.33807,69.259,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155721196739895,,121,,1491157607,658086061,/imu,,0,1,39.5363438,-122.3380679,69.223,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155721450502865,,122,,1491157607,911902904,/imu,,0,1,39.5363301,-122.3380659,69.182,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155721698386959,,123,,1491157608,159539937,/imu,,0,1,39.5363164,-122.3380638,69.148,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155721948297985,,124,,1491157608,406718969,/imu,,0,1,39.5363027,-122.3380617,69.113,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155722198180314,,125,,1491157608,659586906,/imu,,0,1,39.5362891,-122.3380596,69.072,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155722455147462,,126,,1491157608,909884929,/imu,,0,1,39.5362755,-122.3380574,69.035,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155722696254636,,127,,1491157609,157794952,/imu,,0,1,39.5362621,-122.3380553,69.001,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155722948033178,,128,,1491157609,409248113,/imu,,0,1,39.5362489,-122.3380532,68.973,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155723200398236,,129,,1491157609,660497903,/imu,,0,1,39.5362359,-122.3380512,68.944,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155723449069302,,130,,1491157609,910171985,/imu,,0,1,39.5362232,-122.3380492,68.918,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155723699161031,,131,,1491157610,160501003,/imu,,0,1,39.5362108,-122.3380472,68.891,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155723949209172,,132,,1491157610,410502910,/imu,,0,1,39.5361988,-122.3380453,68.867,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155724199154816,,133,,1491157610,660494089,/imu,,0,1,39.5361869,-122.3380434,68.841,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155724447510129,,134,,1491157610,908545970,/imu,,0,1,39.5361751,-122.3380415,68.821,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155724694232025,,135,,1491157611,155545949,/imu,,0,1,39.5361635,-122.3380396,68.796,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155724948094596,,136,,1491157611,407845973,/imu,,0,1,39.5361521,-122.3380378,68.766,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155725197259839,,137,,1491157611,658011913,/imu,,0,1,39.5361408,-122.3380359,68.743,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155725449143011,,138,,1491157611,910495042,/imu,,0,1,39.5361297,-122.3380341,68.716,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155725702664448,,139,,1491157612,160501003,/imu,,0,1,39.5361187,-122.3380324,68.693,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155725949242269,,140,,1491157612,410589933,/imu,,0,1,39.536108,-122.3380306,68.661,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155726201790455,,141,,1491157612,662151098,/imu,,0,1,39.5360974,-122.3380289,68.632,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155726449120790,,142,,1491157612,910515069,/imu,,0,1,39.536087,-122.3380272,68.604,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155726696834146,,143,,1491157613,157763004,/imu,,0,1,39.5360769,-122.3380256,68.571,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155726949004947,,144,,1491157613,410432100,/imu,,0,1,39.536067,-122.338024,68.546,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155727195714645,,145,,1491157613,656830072,/imu,,0,1,39.5360573,-122.3380225,68.516,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155727441578678,,146,,1491157613,903002977,/imu,,0,1,39.5360477,-122.338021,68.486,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155727696844359,,147,,1491157614,157660961,/imu,,0,1,39.5360383,-122.3380195,68.457,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155727951494080,,148,,1491157614,409310102,/imu,,0,1,39.5360291,-122.3380181,68.428,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155728201405196,,149,,1491157614,659255981,/imu,,0,1,39.5360201,-122.3380167,68.388,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155728447835451,,150,,1491157614,908274888,/imu,,0,1,39.5360113,-122.3380154,68.372,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155728702189170,,151,,1491157615,160244941,/imu,,0,1,39.5360029,-122.3380143,68.344,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155728946960581,,152,,1491157615,408008098,/imu,,0,1,39.5359949,-122.3380134,68.332,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155729196049151,,153,,1491157615,657421112,/imu,,0,1,39.5359874,-122.3380125,68.316,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155729449922543,,154,,1491157615,910732984,/imu,,0,1,39.5359803,-122.3380119,68.301,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155729698325415,,155,,1491157616,159256935,/imu,,0,1,39.5359737,-122.3380113,68.281,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155729948856084,,156,,1491157616,410342931,/imu,,0,1,39.5359676,-122.338011,68.269,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155730194486192,,157,,1491157616,655848026,/imu,,0,1,39.5359621,-122.3380107,68.26,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155730446842166,,158,,1491157616,907995939,/imu,,0,1,39.5359571,-122.3380106,68.247,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155730697257945,,159,,1491157617,157727956,/imu,,0,1,39.5359526,-122.3380106,68.237,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155730952850137,,160,,1491157617,411092042,/imu,,0,1,39.5359487,-122.3380106,68.225,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155731196498380,,161,,1491157617,657931089,/imu,,0,1,39.5359453,-122.3380106,68.225,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155731447867577,,162,,1491157617,908143997,/imu,,0,1,39.5359424,-122.3380106,68.216,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155731693388263,,163,,1491157618,154478073,/imu,,0,1,39.5359401,-122.3380106,68.208,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155731947994725,,164,,1491157618,409207105,/imu,,0,1,39.5359382,-122.3380107,68.2,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155732198637774,,165,,1491157618,657967090,/imu,,0,1,39.5359368,-122.3380108,68.19,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155732447386476,,166,,1491157618,908008098,/imu,,0,1,39.5359359,-122.3380108,68.177,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155732697234084,,167,,1491157619,157946109,/imu,,0,1,39.5359355,-122.3380108,68.172,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155732944366471,,168,,1491157619,402901887,/imu,,0,1,39.5359356,-122.3380108,68.166,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155733198443881,,169,,1491157619,659679889,/imu,,0,1,39.5359356,-122.3380108,68.163,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155733448418093,,170,,1491157619,909205913,/imu,,0,1,39.5359356,-122.3380107,68.159,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155733698090175,,171,,1491157620,158154964,/imu,,0,1,39.5359356,-122.3380107,68.157,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155733952346150,,172,,1491157620,410418987,/imu,,0,1,39.5359357,-122.3380107,68.155,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155734198171923,,173,,1491157620,659285068,/imu,,0,1,39.5359357,-122.3380107,68.153,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155734443804338,,174,,1491157620,904732942,/imu,,0,1,39.5359357,-122.3380107,68.153,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155734697406375,,175,,1491157621,157968997,/imu,,0,1,39.5359358,-122.3380107,68.152,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155734947537291,,176,,1491157621,408992052,/imu,,0,1,39.5359358,-122.3380107,68.154,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155735196415897,,177,,1491157621,657907009,/imu,,0,1,39.5359359,-122.3380107,68.156,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155735447672921,,178,,1491157621,909153938,/imu,,0,1,39.5359359,-122.3380107,68.156,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155735691811886,,179,,1491157622,152919054,/imu,,0,1,39.5359359,-122.3380107,68.158,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155735947751414,,180,,1491157622,409225940,/imu,,0,1,39.535936,-122.3380107,68.157,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155736199884738,,181,,1491157622,661108970,/imu,,0,1,39.5359361,-122.3380107,68.158,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155736447374439,,182,,1491157622,909032106,/imu,,0,1,39.5359361,-122.3380107,68.157,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155736701032643,,183,,1491157623,159367084,/imu,,0,1,39.5359362,-122.3380107,68.156,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155736952718626,,184,,1491157623,414052963,/imu,,0,1,39.5359362,-122.3380107,68.156,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155737194257429,,185,,1491157623,655292987,/imu,,0,1,39.5359362,-122.3380107,68.158,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155737447683346,,186,,1491157623,909085035,/imu,,0,1,39.5359363,-122.3380107,68.162,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155737696680498,,187,,1491157624,157902002,/imu,,0,1,39.5359363,-122.3380106,68.164,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155737948464321,,188,,1491157624,409212112,/imu,,0,1,39.5359363,-122.3380106,68.166,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155738199651371,,189,,1491157624,659838914,/imu,,0,1,39.5359363,-122.3380106,68.173,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155738444798391,,190,,1491157624,906227111,/imu,,0,1,39.5359363,-122.3380106,68.176,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155738696943204,,191,,1491157625,157941102,/imu,,0,1,39.5359364,-122.3380106,68.181,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155738948926610,,192,,1491157625,409712076,/imu,,0,1,39.5359364,-122.3380106,68.188,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155739195596695,,193,,1491157625,656975030,/imu,,0,1,39.5359364,-122.3380106,68.195,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155739447778936,,194,,1491157625,907885074,/imu,,0,1,39.5359364,-122.3380106,68.198,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155739701050572,,195,,1491157626,158618927,/imu,,0,1,39.5359365,-122.3380106,68.207,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155739941907268,,196,,1491157626,402844905,/imu,,0,1,39.5359365,-122.3380107,68.212,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155740204060764,,197,,1491157626,657048940,/imu,,0,1,39.5359366,-122.3380107,68.218,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155740445747036,,198,,1491157626,907058954,/imu,,0,1,39.5359366,-122.3380107,68.224,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155740695534180,,199,,1491157627,157113075,/imu,,0,1,39.5359366,-122.3380108,68.233,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155740950635644,,200,,1491157627,409611940,/imu,,0,1,39.5359366,-122.3380108,68.238,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155741195706305,,201,,1491157627,656493902,/imu,,0,1,39.5359367,-122.3380108,68.247,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155741448978653,,202,,1491157627,910146951,/imu,,0,1,39.5359367,-122.3380108,68.256,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155741697159340,,203,,1491157628,157885074,/imu,,0,1,39.5359367,-122.3380108,68.262,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155741945685140,,204,,1491157628,406941890,/imu,,0,1,39.5359367,-122.3380108,68.272,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155742198062351,,205,,1491157628,659518003,/imu,,0,1,39.5359367,-122.3380108,68.279,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155742447214777,,206,,1491157628,907263994,/imu,,0,1,39.5359367,-122.3380108,68.285,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155742692417228,,207,,1491157629,152875900,/imu,,0,1,39.5359367,-122.3380108,68.296,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155742945377934,,208,,1491157629,406910896,/imu,,0,1,39.5359367,-122.3380108,68.3,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155743196856056,,209,,1491157629,658334016,/imu,,0,1,39.5359367,-122.3380108,68.307,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155743447716525,,210,,1491157629,909028053,/imu,,0,1,39.5359367,-122.3380108,68.317,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155743695461308,,211,,1491157630,156981945,/imu,,0,1,39.5359367,-122.3380108,68.322,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155743945862817,,212,,1491157630,407001018,/imu,,0,1,39.5359366,-122.3380108,68.33,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155744200256486,,213,,1491157630,657071113,/imu,,0,1,39.5359366,-122.3380108,68.338,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155744446631301,,214,,1491157630,906867980,/imu,,0,1,39.5359366,-122.3380108,68.345,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155744697576850,,215,,1491157631,156963109,/imu,,0,1,39.5359365,-122.3380108,68.352,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155744949039484,,216,,1491157631,410414934,/imu,,0,1,39.5359365,-122.3380108,68.359,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155745197472728,,217,,1491157631,658984899,/imu,,0,1,39.5359364,-122.3380108,68.367,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155745445158027,,218,,1491157631,904109001,/imu,,0,1,39.5359364,-122.3380108,68.38,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155745695522866,,219,,1491157632,157011032,/imu,,0,1,39.5359364,-122.3380108,68.393,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155745952775530,,220,,1491157632,407785892,/imu,,0,1,39.5359363,-122.3380108,68.402,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155746199169863,,221,,1491157632,660240888,/imu,,0,1,39.5359363,-122.3380108,68.412,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155746445926295,,222,,1491157632,907088994,/imu,,0,1,39.5359362,-122.3380108,68.424,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155746696670470,,223,,1491157633,157870054,/imu,,0,1,39.5359361,-122.3380109,68.436,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155746946947692,,224,,1491157633,407990932,/imu,,0,1,39.5359361,-122.3380109,68.449,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155747195884782,,225,,1491157633,657109022,/imu,,0,1,39.535936,-122.3380109,68.459,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155747450513696,,226,,1491157633,909704923,/imu,,0,1,39.535936,-122.3380109,68.47,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155747696332549,,227,,1491157634,157325983,/imu,,0,1,39.5359359,-122.3380109,68.477,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155747945577446,,228,,1491157634,407183885,/imu,,0,1,39.5359358,-122.3380109,68.485,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155748193006721,,229,,1491157634,653882026,/imu,,0,1,39.5359357,-122.3380109,68.491,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155748448162210,,230,,1491157634,909323930,/imu,,0,1,39.5359357,-122.3380109,68.502,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155748696751922,,231,,1491157635,157892942,/imu,,0,1,39.5359357,-122.338011,68.511,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155748947535713,,232,,1491157635,408888101,/imu,,0,1,39.5359356,-122.3380109,68.517,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155749201393009,,233,,1491157635,662369012,/imu,,0,1,39.5359355,-122.338011,68.527,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155749445983993,,234,,1491157635,907316923,/imu,,0,1,39.5359355,-122.338011,68.536,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155749699176870,,235,,1491157636,159857988,/imu,,0,1,39.5359354,-122.338011,68.547,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155749946452996,,236,,1491157636,407423973,/imu,,0,1,39.5359354,-122.338011,68.561,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155750197486026,,237,,1491157636,657428979,/imu,,0,1,39.5359353,-122.338011,68.573,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155750446607040,,238,,1491157636,907505035,/imu,,0,1,39.5359353,-122.338011,68.585,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155750696678877,,239,,1491157637,158029079,/imu,,0,1,39.5359352,-122.338011,68.598,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155750943246128,,240,,1491157637,404588937,/imu,,0,1,39.5359351,-122.338011,68.614,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155751198753064,,241,,1491157637,660267114,/imu,,0,1,39.5359351,-122.338011,68.627,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155751448949737,,242,,1491157637,910247087,/imu,,0,1,39.535935,-122.338011,68.637,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155751710305542,,243,,1491157638,158471107,/imu,,0,1,39.535935,-122.338011,68.642,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155751949756491,,244,,1491157638,410789012,/imu,,0,1,39.5359349,-122.3380111,68.654,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155752202861277,,245,,1491157638,661005973,/imu,,0,1,39.5359348,-122.338011,68.664,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155752449210439,,246,,1491157638,910099983,/imu,,0,1,39.5359347,-122.3380111,68.672,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
||||
1497155752699561822,,247,,1491157639,161111116,/imu,,0,1,39.5359347,-122.338011,68.678,"[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]",0
|
|
BIN
spec/test_files/ls
Executable file
BIN
spec/test_files/ls
Executable file
Binary file not shown.
BIN
spec/test_files/vid2.mov
Normal file
BIN
spec/test_files/vid2.mov
Normal file
Binary file not shown.
BIN
spec/test_files/vid3.mp4
Normal file
BIN
spec/test_files/vid3.mp4
Normal file
Binary file not shown.
BIN
spec/test_files/vid4.ogv
Normal file
BIN
spec/test_files/vid4.ogv
Normal file
Binary file not shown.
13
static/css/fa-brands.css
Normal file
13
static/css/fa-brands.css
Normal file
@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* Font Awesome Free 5.0.8 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: url("../webfonts/fa-brands-400.eot");
|
||||
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
|
||||
|
||||
.fab {
|
||||
font-family: 'Font Awesome 5 Brands'; }
|
14
static/css/fa-regular.css
Normal file
14
static/css/fa-regular.css
Normal file
@ -0,0 +1,14 @@
|
||||
/*!
|
||||
* Font Awesome Free 5.0.8 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-regular-400.eot");
|
||||
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
|
||||
|
||||
.far {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-weight: 400; }
|
15
static/css/fa-solid.css
Normal file
15
static/css/fa-solid.css
Normal file
@ -0,0 +1,15 @@
|
||||
/*!
|
||||
* Font Awesome Free 5.0.8 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: url("../webfonts/fa-solid-900.eot");
|
||||
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
|
||||
|
||||
.fa,
|
||||
.fas {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-weight: 900; }
|
2696
static/css/fontawesome.css
vendored
Normal file
2696
static/css/fontawesome.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@ -11,23 +11,39 @@
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
.document p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.document:hover p {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.badge-video {
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
background-color: #F27761;
|
||||
}
|
||||
|
||||
.badge-image {
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
background-color: #AA99C9;
|
||||
}
|
||||
|
||||
.badge-resolution {
|
||||
color: #212529;
|
||||
background-color: #ffc107;
|
||||
background-color: #FFC107;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.card-img-top {
|
||||
display: block;
|
||||
min-width: 64px;
|
||||
max-width: 100%;
|
||||
max-height: 256px;
|
||||
width: unset;
|
||||
margin: 0 auto 0;
|
||||
padding: 3px 3px 0 3px;
|
||||
}
|
||||
|
||||
.card-img-overlay {
|
||||
@ -54,6 +70,8 @@
|
||||
.fit {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin-top: 3px;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
@ -62,7 +80,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1500px){
|
||||
@media (min-width: 1500px) {
|
||||
.container {
|
||||
max-width: 1440px;
|
||||
}
|
||||
@ -71,7 +89,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.hl {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
@ -79,8 +99,14 @@
|
||||
<div class="card">
|
||||
{# <div class="card-header">An excellent form</div>#}
|
||||
<div class="card-body">
|
||||
<form action=""></form>
|
||||
<input id="searchBar" type="search" class="form-control" placeholder="Search">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text"></div>
|
||||
</div>
|
||||
<input id="searchBar" type="search" class="form-control" placeholder="Search">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -103,7 +129,7 @@
|
||||
statsCardBody.setAttribute("class", "card-body");
|
||||
|
||||
var stat = document.createElement("p");
|
||||
stat.appendChild(document.createTextNode(searchResult["hits"]["total"] + " results"));
|
||||
stat.appendChild(document.createTextNode(searchResult["hits"]["total"] + " results in " + searchResult["took"] + "ms"));
|
||||
statsCardBody.appendChild(stat);
|
||||
statsCard.appendChild(statsCardBody);
|
||||
|
||||
@ -156,6 +182,7 @@
|
||||
* @param documentId
|
||||
*/
|
||||
function gifOver(thumbnail, documentId) {
|
||||
var callee = arguments.callee;
|
||||
|
||||
thumbnail.addEventListener("mouseover", function () {
|
||||
|
||||
@ -163,25 +190,10 @@
|
||||
|
||||
window.setTimeout(function() {
|
||||
if (thumbnail.mouseStayedOver) {
|
||||
thumbnail.removeEventListener('mouseover', arguments.callee, false);
|
||||
thumbnail.removeEventListener('mouseover', callee, false);
|
||||
|
||||
//Load gif
|
||||
var gifImage = document.createElement("img");
|
||||
gifImage.setAttribute("src", "/file/" + documentId);
|
||||
gifImage.setAttribute("class", "fit");
|
||||
thumbnail.parentNode.appendChild(gifImage);
|
||||
|
||||
thumbnail.setAttribute("style", "display: none");
|
||||
|
||||
//Toggle gif/thumbnail on hover
|
||||
gifImage.addEventListener("mouseout", function() {
|
||||
gifImage.setAttribute("style", "display: none");
|
||||
thumbnail.setAttribute("style", "");
|
||||
});
|
||||
thumbnail.addEventListener("mouseover", function () {
|
||||
gifImage.setAttribute("style", "");
|
||||
thumbnail.setAttribute("style", "display: none");
|
||||
});
|
||||
thumbnail.setAttribute("src", "/file/" + documentId);
|
||||
}
|
||||
}, 750); //todo grab hover time from config
|
||||
|
||||
@ -190,6 +202,8 @@
|
||||
thumbnail.addEventListener("mouseout", function() {
|
||||
//Reset timer
|
||||
thumbnail.mouseStayedOver = false;
|
||||
thumbnail.setAttribute("src", "/thumb/" + documentId);
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
@ -210,6 +224,7 @@
|
||||
vidSource.setAttribute("type", "video/webm");
|
||||
video.appendChild(vidSource);
|
||||
video.setAttribute("class", "fit");
|
||||
video.setAttribute("poster", "/thumb/" + documentId);
|
||||
imgWrapper.appendChild(video);
|
||||
|
||||
//Video hover
|
||||
@ -247,6 +262,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
var counter = 0;
|
||||
/**
|
||||
*
|
||||
* @param hit
|
||||
@ -265,16 +281,18 @@
|
||||
link.setAttribute("href", "/document/" + hit["_id"]);
|
||||
link.setAttribute("target", "_blank");
|
||||
|
||||
//Title
|
||||
var title = document.createElement("p");
|
||||
title.setAttribute("class", "file-title");
|
||||
title.appendChild(document.createTextNode(hit["_source"]["name"]));
|
||||
title.setAttribute("title", hit["_source"]["name"]);
|
||||
var extention = hit["_source"].hasOwnProperty("extension") && hit["_source"]["extension"] !== null ? "." + hit["_source"]["extension"] : "";
|
||||
title.insertAdjacentHTML('afterbegin', hit["highlight"]["name"] + extention);
|
||||
title.setAttribute("title", hit["_source"]["path"]);
|
||||
docCard.appendChild(title);
|
||||
|
||||
var tagContainer = document.createElement("div");
|
||||
tagContainer.setAttribute("class", "card-text");
|
||||
|
||||
if (hit["_source"].hasOwnProperty("mime")) {
|
||||
if (hit["_source"].hasOwnProperty("mime") && hit["_source"]["mime"] !== null) {
|
||||
|
||||
var tags = [];
|
||||
var thumbnail = null;
|
||||
@ -291,9 +309,8 @@
|
||||
case "image":
|
||||
thumbnail = document.createElement("img");
|
||||
thumbnail.setAttribute("class", "card-img-top");
|
||||
thumbnail.setAttribute("src", "/thumb/" + hit["_source"]["directory"] + "/" + hit["_id"]);
|
||||
thumbnail.setAttribute("src", "/thumb/" + hit["_id"]);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
//Thumbnail overlay
|
||||
@ -351,6 +368,14 @@
|
||||
break;
|
||||
}
|
||||
|
||||
//Content
|
||||
if (hit.hasOwnProperty("highlight") && hit["highlight"].hasOwnProperty("content")) {
|
||||
|
||||
var contentDiv = document.createElement("div");
|
||||
contentDiv.innerHTML = hit["highlight"]["content"][0];
|
||||
docCard.appendChild(contentDiv);
|
||||
}
|
||||
|
||||
//Size tag
|
||||
var sizeTag = document.createElement("small");
|
||||
sizeTag.appendChild(document.createTextNode(humanFileSize(hit["_source"]["size"])));
|
||||
@ -387,6 +412,7 @@
|
||||
function makePageIndicator(searchResult) {
|
||||
var pageIndicator = document.createElement("div");
|
||||
pageIndicator.appendChild(document.createTextNode(docCount + " / " +searchResult["hits"]["total"]));
|
||||
return pageIndicator;
|
||||
}
|
||||
|
||||
|
||||
@ -437,7 +463,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
searchBar.addEventListener("keydown", function () {
|
||||
searchBar.addEventListener("keyup", function () {
|
||||
|
||||
//Clear old search results
|
||||
var searchResults = document.getElementById("searchResults");
|
||||
@ -446,6 +472,7 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
var query = searchBar.value;
|
||||
|
||||
console.log("query: " + query);
|
||||
@ -471,7 +498,7 @@
|
||||
initPopover();
|
||||
}
|
||||
};
|
||||
xhttp.open("GET", "/search", true);
|
||||
xhttp.open("GET", "/search?q=" + query, true);
|
||||
xhttp.send();
|
||||
|
||||
});
|
||||
|
348
templates/searchList.html
Normal file
348
templates/searchList.html
Normal file
@ -0,0 +1,348 @@
|
||||
{% extends "layout.html" %}
|
||||
|
||||
{% set active_page = "search" %}
|
||||
|
||||
{% block title %}Search{% endblock title %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<style>
|
||||
.document {
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
.document p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.document:hover p {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.badge-video {
|
||||
color: #FFFFFF;
|
||||
background-color: #F27761;
|
||||
margin-right: 3px;
|
||||
|
||||
}
|
||||
|
||||
.badge-image {
|
||||
color: #FFFFFF;
|
||||
background-color: #AA99C9;
|
||||
margin-right: 3px;
|
||||
|
||||
}
|
||||
|
||||
.badge-resolution {
|
||||
color: #212529;
|
||||
background-color: #FFC107;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.card-img-top {
|
||||
display: block;
|
||||
min-width: 64px;
|
||||
max-width: 100%;
|
||||
max-height: 256px;
|
||||
width: unset;
|
||||
margin: 0 auto 0;
|
||||
padding: 3px 3px 0 3px;
|
||||
}
|
||||
|
||||
.card-img-overlay {
|
||||
pointer-events: none;
|
||||
padding: 0.75rem;
|
||||
|
||||
bottom: 0;
|
||||
top: unset;
|
||||
left: unset;
|
||||
right: unset;
|
||||
}
|
||||
|
||||
.file-title {
|
||||
font-size: 10pt;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.badge {
|
||||
}
|
||||
|
||||
.fit {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin-top: 3px;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.icon-thumbnail {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.card-columns {
|
||||
column-count: 4;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1500px) {
|
||||
.container {
|
||||
max-width: 1440px;
|
||||
}
|
||||
.card-columns {
|
||||
column-count: 5;
|
||||
}
|
||||
}
|
||||
|
||||
.doc-list-title {
|
||||
margin-right: 1em;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="card">
|
||||
{# <div class="card-header">An excellent form</div>#}
|
||||
<div class="card-body">
|
||||
<form action=""></form>
|
||||
<input id="searchBar" type="search" class="form-control" placeholder="Search">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="searchResults">
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
var searchBar = document.getElementById("searchBar");
|
||||
var scroll_id = null;
|
||||
var coolingDown = false;
|
||||
var docCount = 0;
|
||||
|
||||
function createDocItem(hit) {
|
||||
|
||||
var docItem = document.createElement("li");
|
||||
docItem.setAttribute("class", "list-group-item list-group-item-action d-flex");
|
||||
|
||||
//Thumbnail
|
||||
var thumbnail = null;
|
||||
|
||||
if (hit["_source"].hasOwnProperty("mime") && hit["_source"]["mime"] != null) {
|
||||
var mimeCategory = hit["_source"]["mime"].split("/")[0];
|
||||
|
||||
switch (mimeCategory) {
|
||||
|
||||
case "video":
|
||||
case "image":
|
||||
thumbnail = document.createElement("img");
|
||||
thumbnail.setAttribute("class", "icon-thumbnail");
|
||||
thumbnail.setAttribute("src", "/thumb/" + hit["_id"]);
|
||||
thumbnail.setAttribute("data-content", '<img src="/thumb/'+ hit["_id"] + ' ">');
|
||||
thumbnail.setAttribute("data-toggle", "popover");
|
||||
docItem.appendChild(thumbnail);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Text
|
||||
var docText = document.createElement("p");
|
||||
docText.setAttribute("class", "doc-list-title");
|
||||
docText.appendChild(document.createTextNode(hit["_source"]["name"]));
|
||||
docItem.appendChild(docText);
|
||||
|
||||
|
||||
//Tag list
|
||||
var tagContainer = document.createElement("div");
|
||||
var tags = [];
|
||||
switch (mimeCategory) {
|
||||
|
||||
case "video":
|
||||
var formatTag = document.createElement("span");
|
||||
formatTag.setAttribute("class", "badge badge-pill badge-video");
|
||||
formatTag.appendChild(document.createTextNode(hit["_source"]["format_long_name"].replace(" ", "")));
|
||||
tags.push(formatTag);
|
||||
|
||||
break;
|
||||
case "image":
|
||||
formatTag = document.createElement("span");
|
||||
formatTag.setAttribute("class", "badge badge-pill badge-image");
|
||||
formatTag.appendChild(document.createTextNode(hit["_source"]["format"]));
|
||||
tags.push(formatTag);
|
||||
|
||||
break;
|
||||
}
|
||||
for (var i = 0; i < tags.length; i++) {
|
||||
tagContainer.appendChild(tags[i]);
|
||||
}
|
||||
docItem.appendChild(tagContainer);
|
||||
|
||||
//Download
|
||||
var dlIcon = document.createElement("i");
|
||||
dlIcon.setAttribute("class", "fas fa-download");
|
||||
|
||||
var dlButton = document.createElement("a");
|
||||
dlButton.setAttribute("class", "ml-auto btn btn-primary");
|
||||
dlButton.setAttribute("tabindex", "-1");
|
||||
dlButton.appendChild(dlIcon);
|
||||
dlButton.appendChild(document.createTextNode(" " + humanFileSize(hit["_source"]["size"])));
|
||||
docItem.appendChild(dlButton);
|
||||
|
||||
//View
|
||||
var eyeIcon = document.createElement("i");
|
||||
eyeIcon.setAttribute("class", "fas fa-eye");
|
||||
|
||||
var viewButton = document.createElement("a");
|
||||
viewButton.setAttribute("class", "btn btn-success");
|
||||
viewButton.setAttribute("style", "margin-left: 1em");
|
||||
viewButton.setAttribute("tabindex", "-1");
|
||||
viewButton.appendChild(eyeIcon);
|
||||
|
||||
docItem.appendChild(viewButton);
|
||||
|
||||
return docItem;
|
||||
}
|
||||
|
||||
function makeResultContainer() {
|
||||
var resultContainer = document.createElement("ul");
|
||||
resultContainer.setAttribute("class", "list-group list-group-flush");
|
||||
|
||||
return resultContainer;
|
||||
}
|
||||
|
||||
/**
|
||||
* https://stackoverflow.com/questions/10420352
|
||||
*/
|
||||
function humanFileSize(bytes) {
|
||||
|
||||
if(bytes === 0) {
|
||||
return "? B"
|
||||
}
|
||||
|
||||
var thresh = 1000;
|
||||
if(Math.abs(bytes) < thresh) {
|
||||
return bytes + ' B';
|
||||
}
|
||||
var units = ['kB','MB','GB','TB','PB','EB','ZB','YB'];
|
||||
var u = -1;
|
||||
do {
|
||||
bytes /= thresh;
|
||||
++u;
|
||||
} while(Math.abs(bytes) >= thresh && u < units.length - 1);
|
||||
|
||||
return bytes.toFixed(1) + ' ' + units[u];
|
||||
}
|
||||
|
||||
function makePageIndicator(searchResult) {
|
||||
var pageIndicator = document.createElement("li");
|
||||
pageIndicator.appendChild(document.createTextNode(docCount + " / " +searchResult["hits"]["total"]));
|
||||
return pageIndicator;
|
||||
}
|
||||
|
||||
|
||||
function insertHits(resultContainer, hits) {
|
||||
for (var i = 0 ; i < hits.length; i++) {
|
||||
resultContainer.appendChild(createDocItem(hits[i]));
|
||||
docCount++;
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener("scroll", function () {
|
||||
|
||||
if (!coolingDown) {
|
||||
var threshold = 200;
|
||||
|
||||
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight - threshold) {
|
||||
//load next page
|
||||
|
||||
var xhttp = new XMLHttpRequest();
|
||||
xhttp.onreadystatechange = function() {
|
||||
if (this.readyState === 4 && this.status === 200) {
|
||||
|
||||
var searchResult = JSON.parse(this.responseText);
|
||||
var searchResults = document.getElementById("searchResults");
|
||||
var hits = searchResult["hits"]["hits"];
|
||||
|
||||
//Page indicator
|
||||
var pageIndicator = makePageIndicator(searchResult);
|
||||
searchResults.appendChild(pageIndicator);
|
||||
|
||||
//Result container
|
||||
var resultContainer = makeResultContainer();
|
||||
searchResults.appendChild(resultContainer);
|
||||
|
||||
insertHits(resultContainer, hits);
|
||||
|
||||
initPopover();
|
||||
|
||||
|
||||
if(hits.length !== 0) {
|
||||
coolingDown = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
xhttp.open("GET", "/scroll?scroll_id=" + scroll_id, true);
|
||||
xhttp.send();
|
||||
coolingDown = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
searchBar.addEventListener("keydown", function () {
|
||||
|
||||
//Clear old search results
|
||||
var searchResults = document.getElementById("searchResults");
|
||||
while (searchResults.firstChild) {
|
||||
searchResults.removeChild(searchResults.firstChild);
|
||||
}
|
||||
|
||||
|
||||
var query = searchBar.value;
|
||||
|
||||
console.log("query: " + query);
|
||||
|
||||
var xhttp = new XMLHttpRequest();
|
||||
xhttp.onreadystatechange = function() {
|
||||
if (this.readyState === 4 && this.status === 200) {
|
||||
|
||||
var searchResult = JSON.parse(this.responseText);
|
||||
scroll_id = searchResult["_scroll_id"];
|
||||
|
||||
//Search stats
|
||||
{#searchResults.appendChild(makeStatsCard(searchResult));#}
|
||||
|
||||
//Setup page
|
||||
var resultContainer = makeResultContainer();
|
||||
searchResults.appendChild(resultContainer);
|
||||
|
||||
//Insert search results (hits)
|
||||
insertHits(resultContainer, searchResult["hits"]["hits"]);
|
||||
|
||||
initPopover();
|
||||
}
|
||||
};
|
||||
xhttp.open("GET", "/search", true);
|
||||
xhttp.send();
|
||||
|
||||
});
|
||||
|
||||
function initPopover() {
|
||||
$('[data-toggle="popover"]').popover({
|
||||
trigger: "hover",
|
||||
delay: { "show": 0, "hide": 400 },
|
||||
placement: "right",
|
||||
html: true
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
{% endblock body %}
|
56
tmp.py
Normal file
56
tmp.py
Normal file
@ -0,0 +1,56 @@
|
||||
from elasticsearch import Elasticsearch
|
||||
from indexer import Indexer
|
||||
import json
|
||||
from crawler import Crawler
|
||||
from indexer import Indexer
|
||||
from parsing import GenericFileParser, Sha256CheckSumCalculator, ExtensionMimeGuesser
|
||||
|
||||
es = Elasticsearch()
|
||||
1
|
||||
|
||||
# reset
|
||||
es.indices.delete(index="test")
|
||||
es.indices.create(index="test")
|
||||
es.indices.close(index="test")
|
||||
|
||||
|
||||
# # config
|
||||
es.indices.put_settings(body='{"analysis": {"analyzer": {"path_analyser": {'
|
||||
'"tokenizer": "path_tokenizer"}}, "tokenizer": {"path_tokenizer": {'
|
||||
'"type": "path_hierarchy"}}}}', index="test")
|
||||
|
||||
es.indices.put_mapping(body='{"properties": {'
|
||||
'"name": {"type": "text", "analyzer": "path_analyser", "copy_to": "suggest-path"},'
|
||||
'"suggest-path": {"type": "completion", "analyzer": "keyword"},'
|
||||
'"mime": {"type": "keyword"}'
|
||||
'}}', index="test",doc_type="file" )
|
||||
|
||||
es.indices.open(index="test")
|
||||
|
||||
|
||||
# add docs
|
||||
|
||||
# crawler = Crawler([GenericFileParser([Sha256CheckSumCalculator()], ExtensionMimeGuesser())])
|
||||
# crawler.crawl("spec/test_folder")
|
||||
#
|
||||
# indexer = Indexer("test")
|
||||
#
|
||||
# indexer.index(crawler.documents)
|
||||
|
||||
# search
|
||||
# print(es.search("test", "file", '{"query": {"term": {"name": "spec/test_folder/sub2/"}}}'))
|
||||
# print(es.search("test", "file", '{"query": {"match_all": {}}, "aggs": {"test": {"terms": {"field": "mime"}}}}'))
|
||||
# suggest = es.search("test", "file", '{"suggest": {"path-suggest": {"prefix": "spec/test_folder/sub", "completion": {"field": "suggest-path"}}}}')
|
||||
#
|
||||
# print(suggest["suggest"]["path-suggest"])
|
||||
#
|
||||
# for hit in suggest["suggest"]["path-suggest"][0]["options"]:
|
||||
# print(hit["text"])
|
||||
|
||||
# indexer = Indexer("test")
|
||||
|
||||
# import time
|
||||
# time.sleep(10)
|
||||
|
||||
c = Crawler([])
|
||||
c.countFiles("/")
|
Loading…
x
Reference in New Issue
Block a user