LIl things.
This commit is contained in:
parent
2e017d0df3
commit
8bd9d1519e
@ -14,7 +14,7 @@ def trim_base_custom(path, base):
|
|||||||
def trim_base(path):
|
def trim_base(path):
|
||||||
return trim_base_custom(path, trim_base.base)
|
return trim_base_custom(path, trim_base.base)
|
||||||
def cache_base(path):
|
def cache_base(path):
|
||||||
path = trim_base(path).replace('/', '-').replace(' ', '_').replace('(', '').replace(')', '').replace('#', '').replace('[', '').replace(']', '').replace('"', '').replace("'", '').replace('_-_', '-').lower()
|
path = trim_base(path).replace('/', '-').replace(' ', '_').replace('(', '').replace('&', '').replace(',', '').replace(')', '').replace('#', '').replace('[', '').replace(']', '').replace('"', '').replace("'", '').replace('_-_', '-').lower()
|
||||||
while path.find("--") != -1:
|
while path.find("--") != -1:
|
||||||
path = path.replace("--", "-")
|
path = path.replace("--", "-")
|
||||||
while path.find("__") != -1:
|
while path.find("__") != -1:
|
||||||
|
@ -52,6 +52,17 @@ class Album(object):
|
|||||||
if not self._albums_sorted:
|
if not self._albums_sorted:
|
||||||
self._albums.sort()
|
self._albums.sort()
|
||||||
self._albums_sorted = True
|
self._albums_sorted = True
|
||||||
|
@property
|
||||||
|
def empty(self):
|
||||||
|
if len(self._photos) != 0:
|
||||||
|
return False
|
||||||
|
if len(self._albums) == 0:
|
||||||
|
return True
|
||||||
|
for album in self._albums:
|
||||||
|
if not album.empty:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def cache(self, base_dir):
|
def cache(self, base_dir):
|
||||||
self._sort()
|
self._sort()
|
||||||
fp = open(os.path.join(base_dir, self.cache_path), 'w')
|
fp = open(os.path.join(base_dir, self.cache_path), 'w')
|
||||||
@ -75,10 +86,15 @@ class Album(object):
|
|||||||
return album
|
return album
|
||||||
def to_dict(self, cripple=True):
|
def to_dict(self, cripple=True):
|
||||||
self._sort()
|
self._sort()
|
||||||
|
subalbums = []
|
||||||
if cripple:
|
if cripple:
|
||||||
subalbums = [ { "path": trim_base_custom(sub.path, self._path), "date": sub.date } for sub in self._albums ]
|
for sub in self._albums:
|
||||||
|
if not sub.empty:
|
||||||
|
subalbums.append({ "path": trim_base_custom(sub.path, self._path), "date": sub.date })
|
||||||
else:
|
else:
|
||||||
subalbums = self._albums
|
for sub in self._albums:
|
||||||
|
if not sub.empty:
|
||||||
|
subalbums.append(sub)
|
||||||
return { "path": self.path, "date": self.date, "albums": subalbums, "photos": self._photos }
|
return { "path": self.path, "date": self.date, "albums": subalbums, "photos": self._photos }
|
||||||
def photo_from_path(self, path):
|
def photo_from_path(self, path):
|
||||||
for photo in self._photos:
|
for photo in self._photos:
|
||||||
|
@ -49,9 +49,12 @@ class TreeWalker:
|
|||||||
if photo.is_valid:
|
if photo.is_valid:
|
||||||
self.all_photos.append(photo)
|
self.all_photos.append(photo)
|
||||||
album.add_photo(photo)
|
album.add_photo(photo)
|
||||||
print "Writing cache of %s" % album.cache_path
|
if not album.empty:
|
||||||
album.cache(self.cache_path)
|
print "Writing cache of %s" % album.cache_path
|
||||||
self.all_albums.append(album)
|
album.cache(self.cache_path)
|
||||||
|
self.all_albums.append(album)
|
||||||
|
else:
|
||||||
|
print "Not writing cache of %s because it's empty" % album.cache_path
|
||||||
return album
|
return album
|
||||||
def big_lists(self):
|
def big_lists(self):
|
||||||
photo_list = []
|
photo_list = []
|
||||||
@ -69,19 +72,15 @@ class TreeWalker:
|
|||||||
fp.close()
|
fp.close()
|
||||||
|
|
||||||
def remove_stale(self):
|
def remove_stale(self):
|
||||||
print "Removing stale cache entries."
|
print "Building list of all cache entries."
|
||||||
|
all_cache_entries = { "all_photos.json": True, "latest_photos.json": True }
|
||||||
|
for album in self.all_albums:
|
||||||
|
all_cache_entries[album.cache_path] = True
|
||||||
|
for photo in self.all_photos:
|
||||||
|
for entry in photo.image_caches:
|
||||||
|
all_cache_entries[entry] = True
|
||||||
|
print "Searching stale cache entries."
|
||||||
for cache in os.listdir(self.cache_path):
|
for cache in os.listdir(self.cache_path):
|
||||||
match = False
|
if cache not in all_cache_entries:
|
||||||
for album in self.all_albums:
|
|
||||||
if cache == album.cache_path:
|
|
||||||
match = True
|
|
||||||
break
|
|
||||||
if match:
|
|
||||||
continue
|
|
||||||
for photo in self.all_photos:
|
|
||||||
if cache in photo.image_caches:
|
|
||||||
match = True
|
|
||||||
break
|
|
||||||
if not match:
|
|
||||||
print "Removing stale cache %s" % cache
|
print "Removing stale cache %s" % cache
|
||||||
os.unlink(os.path.join(self.cache_path, cache))
|
os.unlink(os.path.join(self.cache_path, cache))
|
@ -17,7 +17,7 @@ a:hover {
|
|||||||
top: 0;
|
top: 0;
|
||||||
padding: 0.4em;
|
padding: 0.4em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 1.2em;
|
font-size: 1.15em;
|
||||||
}
|
}
|
||||||
#loading {
|
#loading {
|
||||||
display: none;
|
display: none;
|
||||||
@ -82,6 +82,33 @@ a:hover {
|
|||||||
right: 0;
|
right: 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
#photo-box {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
#photo-links {
|
||||||
|
background-color: #000000;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 10px;
|
||||||
|
font-size: 10px;
|
||||||
|
line-height: 7px;
|
||||||
|
padding-top: 3px;
|
||||||
|
padding-bottom: 3px;
|
||||||
|
padding-right: 10px;
|
||||||
|
padding-left: 10px;
|
||||||
|
display: none;
|
||||||
|
border-top-right-radius: 5px;
|
||||||
|
border-top-left-radius: 5px;
|
||||||
|
-moz-border-top-right-radius: 5px;
|
||||||
|
-moz-border-top-left-radius: 5px;
|
||||||
|
-webkit-border-top-right-radius: 5px;
|
||||||
|
-webkit-border-top-left-radius: 5px;
|
||||||
|
}
|
||||||
|
#photo-bar {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
.photo-view-container {
|
.photo-view-container {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
@ -94,3 +121,12 @@ a:hover {
|
|||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#error {
|
||||||
|
display: none;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 20%;
|
||||||
|
font-size: 4em;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
@ -3,12 +3,12 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<title>JasonDonenfeld.com – Colors</title>
|
<title>JasonDonenfeld.com – Photos</title>
|
||||||
<link href="css/styles.min.css" rel="stylesheet" type="text/css" />
|
<link href="css/styles.min.css" rel="stylesheet" type="text/css" />
|
||||||
<script type="text/javascript" src="js/scripts.min.js"></script>
|
<script type="text/javascript" src="js/scripts.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="title">Colors</div>
|
<div id="title">Photos</div>
|
||||||
<div id="album-view">
|
<div id="album-view">
|
||||||
<div id="thumbs">
|
<div id="thumbs">
|
||||||
<div id="loading">Loading...</div>
|
<div id="loading">Loading...</div>
|
||||||
@ -16,10 +16,20 @@
|
|||||||
<div id="subalbums"></div>
|
<div id="subalbums"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="photo-view">
|
<div id="photo-view">
|
||||||
<a id="next-photo"><img id="photo" /></a>
|
<div id="photo-box">
|
||||||
|
<a id="next-photo"><img id="photo" /></a>
|
||||||
|
<div id="photo-bar">
|
||||||
|
<div id="photo-links">
|
||||||
|
<a id="metadata-link">metadata</a> | <a id="original-link" target="_blank">download original</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<a id="back">←</a>
|
<a id="back">←</a>
|
||||||
<a id="next">→</a>
|
<a id="next">→</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="error">Forgot my camera...</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -10,6 +10,8 @@ $(document).ready(function() {
|
|||||||
.replace(/\(/g, "")
|
.replace(/\(/g, "")
|
||||||
.replace(/\)/g, "")
|
.replace(/\)/g, "")
|
||||||
.replace(/#/g, "")
|
.replace(/#/g, "")
|
||||||
|
.replace(/&/g, "")
|
||||||
|
.replace(/,/g, "")
|
||||||
.replace(/\[/g, "")
|
.replace(/\[/g, "")
|
||||||
.replace(/\]/g, "")
|
.replace(/\]/g, "")
|
||||||
.replace(/"/g, "")
|
.replace(/"/g, "")
|
||||||
@ -42,7 +44,7 @@ $(document).ready(function() {
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: "cache/" + current_album_cache + ".json",
|
url: "cache/" + current_album_cache + ".json",
|
||||||
error: function() { $(document.body).html("Couldn't fetch it."); },
|
error: die,
|
||||||
success: albumLoaded
|
success: albumLoaded
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -147,6 +149,8 @@ $(document).ready(function() {
|
|||||||
$("#back").attr("href", "#" + current_album_cache + "/" + cachePath(current_album.photos[
|
$("#back").attr("href", "#" + current_album_cache + "/" + cachePath(current_album.photos[
|
||||||
(current_photo_index - 1 < 0) ? (current_album.photos.length - 1) : (current_photo_index - 1)
|
(current_photo_index - 1 < 0) ? (current_album.photos.length - 1) : (current_photo_index - 1)
|
||||||
].name));
|
].name));
|
||||||
|
$("#original-link").attr("target", "_blank").attr("href", "albums/" + current_album.path + "/" + current_photo.name);
|
||||||
|
$("#metadata-link").attr("href", "javascript:alert('Coming soon...')");
|
||||||
|
|
||||||
$("#album-view").addClass("photo-view-container");
|
$("#album-view").addClass("photo-view-container");
|
||||||
$("#subalbums").hide();
|
$("#subalbums").hide();
|
||||||
@ -188,13 +192,19 @@ $(document).ready(function() {
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: "cache/" + album + ".json",
|
url: "cache/" + album + ".json",
|
||||||
error: function() { $(document.body).html("Couldn't fetch it."); },
|
error: die,
|
||||||
success: callback
|
success: callback
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function albumThumbFinder(album, callback) {
|
function albumThumbFinder(album, callback) {
|
||||||
fetchAlbumForThumb(album, function(fetchedAlbum) { albumForThumbIteration(fetchedAlbum, callback); });
|
fetchAlbumForThumb(album, function(fetchedAlbum) { albumForThumbIteration(fetchedAlbum, callback); });
|
||||||
}
|
}
|
||||||
|
function die() {
|
||||||
|
$("#album-view").hide();
|
||||||
|
$("#photo-view").hide();
|
||||||
|
$("#title").hide();
|
||||||
|
$("#error").fadeIn(5000);
|
||||||
|
}
|
||||||
|
|
||||||
var current_album_cache = null;
|
var current_album_cache = null;
|
||||||
var current_photo_cache = null;
|
var current_photo_cache = null;
|
||||||
@ -237,4 +247,10 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
$("#photo-box").mouseenter(function() {
|
||||||
|
$("#photo-links").stop().fadeTo("slow", 0.50).css("display", "inline");
|
||||||
|
});
|
||||||
|
$("#photo-box").mouseleave(function() {
|
||||||
|
$("#photo-links").stop().fadeOut("slow");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -4,7 +4,7 @@ function cachePath($path) {
|
|||||||
$path = substr($path, 1);
|
$path = substr($path, 1);
|
||||||
if ($path[strlen($path) - 1] == '/')
|
if ($path[strlen($path) - 1] == '/')
|
||||||
$path = substr($path, 0, strlen($path) - 1);
|
$path = substr($path, 0, strlen($path) - 1);
|
||||||
$path = str_replace('_-_', '-', str_replace('/', '-', str_replace(' ', '_', str_replace('(', '', str_replace(')', '', str_replace('#', '', str_replace('[', '', str_replace(']', '', str_replace('"', '', str_replace("'", '', strtolower($path)))))))))));
|
$path = str_replace('_-_', '-', str_replace('/', '-', str_replace(' ', '_', str_replace('(', '', str_replace(')', '', str_replace('#', '', str_replace('[', '', str_replace(']', '', str_replace('&', '', str_replace(',', '', str_replace('"', '', str_replace("'", '', strtolower($path)))))))))))));
|
||||||
while (strpos($path, "--") !== false)
|
while (strpos($path, "--") !== false)
|
||||||
$path = str_replace("--", "-", $path);
|
$path = str_replace("--", "-", $path);
|
||||||
while (strpos($path, "__") !== false)
|
while (strpos($path, "__") !== false)
|
||||||
@ -23,9 +23,13 @@ if (strpos(strtolower($url), ".php") == strlen($url) - 4) {
|
|||||||
$url = substr($url, 0, strlen($url) - 4);
|
$url = substr($url, 0, strlen($url) - 4);
|
||||||
$index = strrpos($url, "/");
|
$index = strrpos($url, "/");
|
||||||
$redirect = "/#".cachePath(substr($url, 0, $index))."/".cachePath(substr($url, $index));
|
$redirect = "/#".cachePath(substr($url, 0, $index))."/".cachePath(substr($url, $index));
|
||||||
|
} else if (strpos($url, "/cache/") === 0 || strpos($url, "/albums/") === 0 || strpos($url, "/img/") === 0 || strpos($url, "/img/") === 0 || strpos($url, "/js/") === 0 || strpos($url, "/css/") === 0) {
|
||||||
|
header("HTTP/1.1 404 Not Found");
|
||||||
|
exit();
|
||||||
} else
|
} else
|
||||||
$redirect = "/#".cachePath($url);
|
$redirect = "/#".cachePath($url);
|
||||||
|
|
||||||
|
header("HTTP/1.1 301 Moved Permanently");
|
||||||
header("Location: $redirect");
|
header("Location: $redirect");
|
||||||
|
|
||||||
?>
|
?>
|
Loading…
Reference in New Issue
Block a user