Mercurial > sat_legacy_website
view sat_website/media.py @ 160:ff48d544bfdd default tip
gallery: replaced <video> tag by <img> for videos thumbnails
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 23 Sep 2018 16:41:30 +0200 |
parents | 1ab868ec224a |
children |
line wrap: on
line source
#!/usr/bin/python # -*- coding: utf-8 -*- """ SàT website: Salut à Toi's presentation website Copyright (C) 2012 Jérôme Poisson (goffi@goffi.org) This file is part of SàT website. SàT website is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Foobar is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Foobar. If not, see <http://www.gnu.org/licenses/>. """ from django.utils.translation import get_language, ugettext_lazy as _ from django.conf import settings from collections import namedtuple, OrderedDict import os.path ImageDesc = namedtuple("ImageDesc", "path description data") class VideoDesc(namedtuple("VideoDesc", "paths description poster data")): @property def subtitles(self): key = "subtitles" if key not in self.data: return {} result = OrderedDict() # put the current lang first current_lang = get_language() langs = [current_lang] if current_lang in self.data[key] else [] langs.extend([lang for lang in self.data[key] if lang != current_lang]) for lang in langs: try: result[lang] = os.path.splitext(self.paths[lang])[0] + '.vtt' except IndexError: # FIXME: subtitles for a lang that is not in self.paths are ignored pass return result screencasts = os.path.join(settings.MEDIA_EXTERNAL_URL, "screencasts") + "/" video = os.path.join(settings.MEDIA_EXTERNAL_URL, "video") + "/" #list the pictures media = [ VideoDesc(OrderedDict({"en": video + "libervia_arizuka_50%25_hard_sub_en.webm", "fr": video + "libervia_arizuka_50%25_hard_sub_fr.webm"}), _(u"Crowdfunding campaign on Arizuka"), video + "posters/libervia_arizuka_50%25_hard_sub_fr.png", {_(u"year"): "2015", "subtitles": ("en", "fr")}), ImageDesc("images/screenshots/0.6/login_screen.png", _(u"Login screen"), {_(u"frontend"): "libervia", _(u"version"): "0.6", _(u"year"): "2015"}), ImageDesc("images/screenshots/0.6/overview.png", _(u"Overview"), {_(u"frontend"): "libervia", _(u"version"): "0.6", _(u"year"): "2015"}), ImageDesc("images/screenshots/0.6/static_blog_with_comment.png", _(u"Static blog"), {_(u"frontend"): "libervia", _(u"version"): "0.6", _(u"year"): "2015"}), # use OrderedDict when more than one language, the first item is the default one VideoDesc(OrderedDict({"en": video + "libervia_adhesion_2015_en.webm", "fr": video + "libervia_adhesion_2015_fr.webm"}), _(u"Membership campaign for Libervia"), video + "posters/libervia_adhesion_2015.png", {_(u"version"): "0.5", _(u"year"): "2015", "subtitles": ("en", "fr")}), VideoDesc({"en": screencasts + "2015_screencast_blog.mp4"}, _(u"Demo of the blogging feature"), screencasts + "posters/2015_screencast_blog.png", {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2015"}), ImageDesc("images/screenshots/0.5_campagne/public_blog_3.png", _(u"Public blog message"), {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2015"}), ImageDesc("images/screenshots/0.5/overview_libervia.png", _(u"Overview"), {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2014"}), ImageDesc("images/screenshots/0.5/http_unsecure_warning.png", _(u"Optional security check"), {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2014"}), ImageDesc("images/screenshots/0.4/sat_wysiwyg.png", _(u"Rich text editor"), {_(u"frontend"): "libervia", _(u"version"): "0.4", _(u"year"): "2014"}), VideoDesc({"fr": screencasts + "présentation_SàT_5_radio_collective.webm"}, _(u"Demo of the new Libervia UI, and of the collective radio feature"), screencasts + "posters/radiocol.jpg", {_(u"frontend"): "libervia", _(u"version"): "0.3D", _(u"year"): "2012"}), ImageDesc("images/screenshots/libervia/libervia_login.png", _(u"Libervia's login page"), {_(u"frontend"): "libervia", _(u"version"): "0.3D", _(u"year"): "2011"}), ImageDesc("images/screenshots/libervia/libervia_discussions.png", _(u"Libervia's main view"), {_(u"frontend"): "libervia", _(u"version"): "0.3D", _(u"year"): "2011"}), ImageDesc("images/screenshots/wix/wix_tarot.png", _(u"Wix showing a french Tarot play"), {_(u"frontend"): "wix", _(u"version"): "0.2", _(u"year"): "2011"}), VideoDesc({"fr": screencasts + "présentation_SàT_3.webm"}, _(u"This video focuses on Libervia. The UI is really outdated, but we can see some features"), screencasts + "posters/présentation_SàT_3.jpg", {_(u"frontend"): "libervia", _(u"version"): "0.2", _(u"year"): "2011"}), ] media_tech = [ VideoDesc({"en": screencasts + "2015_screencast_otr.mp4"}, _(u"Demo of the end-to-end chat encryption feature"), screencasts + "posters/2015_screencast_otr.png", {_(u"frontend"): ("libervia", "primitivus"), _(u"version"): "0.5", _(u"year"): "2015"}), VideoDesc({"en": screencasts + "2015_screencast_tarot.mp4"}, _(u"Demo of the tarot game"), screencasts + "posters/2015_screencast_tarot.png", {_(u"frontend"): ("libervia", "primitivus"), _(u"version"): "0.5", _(u"year"): "2015"}), ImageDesc("images/screenshots/0.5/adhoc_administration.png", _(u"Server administration from the web frontend Libervia."), {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2014"}), VideoDesc({"fr": screencasts + "présentation_SàT_7_télécommande_universelle.webm"}, _(u"Use ad-hoc commands to control a VLC player from Libervia"), screencasts + "posters/présentation_SàT_7_télécommande_universelle.png", {_(u"version"): "0.4", _(u"year"): "2014"}), VideoDesc({"fr": screencasts + "présentation_SàT_6_export_commande.webm"}, _(u"Exporting a command: an FTP client is exported to a Gajim contact"), screencasts + "posters/présentation_SàT_6_export_commande.jpg", {_(u"version"): "0.4D", _(u"year"): "2013"}), VideoDesc({"fr": screencasts + "présentation_SàT_4_copie_et_pipe.webm"}, _(u"How to copy and pipe streams over XMPP"), screencasts + "posters/présentation_SàT_4.png", {_(u"version"): "0.3D", _(u"year"): "2011", _(u"language"): "fr"}), ImageDesc("images/screenshots/jp/jp.png", _(u"Cowsay sent in conversation through jp"), {_(u"version"): "0.2", _(u"year"): "2011"}), ImageDesc("images/screenshots/primitivus/primitivus_tarot.png", _(u"Primitivus showing a french Tarot play"), {_(u"frontend"): "primitivus", _(u"version"): "0.2", _(u"year"): "2011"}), VideoDesc({"fr": screencasts + "présentation_SàT_2.webm"}, _(u"This video shows french Tarot game, and how to use Thunderbird with SàT"), screencasts + "posters/présentation_SàT_2.jpg", {_(u"version"): "0.2", _(u"year"): "2011"}), VideoDesc({"fr": screencasts + "présentation_SàT.webm"}, _(u"The first video shows wix, primitivus and jp"), screencasts + "posters/présentation_SàT.jpg", {_(u"version"): "0.2", _(u"year"): "2011"}), ]