Test new GIF mode for videos without sound
parent
7d3fc35a24
commit
7525744f82
|
@ -44,11 +44,14 @@ except FileNotFoundError:
|
||||||
JS_HASH = "none"
|
JS_HASH = "none"
|
||||||
try:
|
try:
|
||||||
# To keep things simple, we keep a single hash for the 2 files
|
# To keep things simple, we keep a single hash for the 2 files
|
||||||
js_data_common = (ROOT_DIR / "app" / "static" / "common-admin.js").read_bytes()
|
dat = b""
|
||||||
js_data_new = (ROOT_DIR / "app" / "static" / "new.js").read_bytes()
|
for j in [
|
||||||
JS_HASH = hashlib.md5(
|
ROOT_DIR / "app" / "static" / "common.js",
|
||||||
js_data_common + js_data_new, usedforsecurity=False
|
ROOT_DIR / "app" / "static" / "common-admin.js",
|
||||||
).hexdigest()
|
ROOT_DIR / "app" / "static" / "new.js",
|
||||||
|
]:
|
||||||
|
dat += j.read_bytes()
|
||||||
|
JS_HASH = hashlib.md5(dat, usedforsecurity=False).hexdigest()
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -551,3 +551,22 @@ a.label-btn {
|
||||||
.margin-top-20 {
|
.margin-top-20 {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.video-wrapper {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-gif-overlay {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-gif-mode + .video-gif-overlay {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: 5px;
|
||||||
|
padding: 0 3px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
background: rgba(0,0,0,.5);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
function hasAudio (video) {
|
||||||
|
return video.mozHasAudio ||
|
||||||
|
Boolean(video.webkitAudioDecodedByteCount) ||
|
||||||
|
Boolean(video.audioTracks && video.audioTracks.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
function setVideoInGIFMode(video) {
|
||||||
|
if (!hasAudio(video)) {
|
||||||
|
if (typeof video.loop == 'boolean' && video.duration < 3.0) {
|
||||||
|
video.classList.add("video-gif-mode");
|
||||||
|
video.loop = true;
|
||||||
|
video.controls = false;
|
||||||
|
video.addEventListener("mouseover", () => {
|
||||||
|
video.play();
|
||||||
|
})
|
||||||
|
video.addEventListener("mouseleave", () => {
|
||||||
|
video.pause();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var items = document.getElementsByTagName("video")
|
||||||
|
for (var i = 0; i < items.length; i++) {
|
||||||
|
if (items[i].duration) {
|
||||||
|
setVideoInGIFMode(items[i]);
|
||||||
|
} else {
|
||||||
|
items[i].addEventListener("loadeddata", function() {
|
||||||
|
setVideoInGIFMode(this);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -55,5 +55,6 @@
|
||||||
{% if is_admin %}
|
{% if is_admin %}
|
||||||
<script src="{{ BASE_URL }}/static/common-admin.js?v={{ JS_HASH }}"></script>
|
<script src="{{ BASE_URL }}/static/common-admin.js?v={{ JS_HASH }}"></script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<script src="{{ BASE_URL }}/static/common.js?v={{ JS_HASH }}"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -429,7 +429,10 @@
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% elif attachment.type == "Video" or (attachment | has_media_type("video")) %}
|
{% elif attachment.type == "Video" or (attachment | has_media_type("video")) %}
|
||||||
|
<div class="video-wrapper">
|
||||||
<video controls preload="metadata" src="{{ attachment.url | media_proxy_url }}"{% if attachment.name %} title="{{ attachment.name }}"{% endif %} class="u-video"></video>
|
<video controls preload="metadata" src="{{ attachment.url | media_proxy_url }}"{% if attachment.name %} title="{{ attachment.name }}"{% endif %} class="u-video"></video>
|
||||||
|
<div class="video-gif-overlay">GIF</div>
|
||||||
|
</div>
|
||||||
{% elif attachment.type == "Audio" or (attachment | has_media_type("audio")) %}
|
{% elif attachment.type == "Audio" or (attachment | has_media_type("audio")) %}
|
||||||
<audio controls preload="metadata" src="{{ attachment.url | media_proxy_url }}"{% if attachment.name%} title="{{ attachment.name }}"{% endif %} class="attachment u-audio"></audio>
|
<audio controls preload="metadata" src="{{ attachment.url | media_proxy_url }}"{% if attachment.name%} title="{{ attachment.name }}"{% endif %} class="attachment u-audio"></audio>
|
||||||
{% elif attachment.type == "Link" %}
|
{% elif attachment.type == "Link" %}
|
||||||
|
|
Loading…
Reference in New Issue