/* * client.js * * Copyright (C) 2019 Saarlaendischen Filmbuero e.V. * * All Rights Reserved. * */ // Utilities function isdef(X) { return !isNil(X) && X!=''; } // Formatting contents function vlength(L) { if (!isString(L) || contains(L,":")) return L; var SEP=Undefined; if (contains(L,",")) SEP=","; if (contains(L,".")) SEP="."; if (isUndefined(SEP)) return L; var L2=splitTrim(L,SEP); if (length(L2)!=2) return L; if (length(L2)[1]==1) L2[1]+="0"; return L2[0]+(L2[1]!="00"?":"+L2[1]:""); } // Name of the criteria var LAENDER={ B:mlstr("BEL"), F:mlstr("FRA"), D:mlstr({ de:"DEU", fr:"ALL" }), L:mlstr("LUX"), CH: mlstr({ de:"SCH", fr:"SUI" }) }; function vland1(S) { var RES=LAENDER[S]; return isDefined(RES)?RES.toString(mlstr.lang()):S; } function vland(S) { if (!contains(S,"/")) return vland1(S); var L2=splitTrim(S,"/").map(vland1); return unsplit(L2,"/"); } var FASLANGS={ "und":mlstr({ de:"und", fr:"et" }), "mit":mlstr({ de:"mit", fr:"avec" }), "untertiteln":mlstr({ de:"Untertiteln", fr:"sous-titres" }), "ov":mlstr({ de:"OV", fr:"VO" }), "version":mlstr({ de:"Version", fr:"Version" }), "deutsche":mlstr({ de:"deutsche", fr:"allemande" }), "deutschen":mlstr({ de:"deutschen", fr:"allemands" }), "französische":mlstr({ de:"französische", fr:"française" }), "französischen":mlstr({ de:"französischen", fr:"français" }), "italienische":mlstr({ de:"italienische", fr:"italienne" }), "italienischen":mlstr({ de:"italienischen", fr:"italiens" }), "englische":mlstr({ de:"englische", fr:"anglaise" }), "englischen":mlstr({ de:"englischen", fr:"anglais" }), "tschechische":mlstr({ de:"tschechische", fr:"tchèque" }), "tschechischen":mlstr({ de:"tschechischen", fr:"tchèques" }) }; function vfasv(S) { var LANG=mlstr.lang(),RES=""; function fx(S) { var RES=FASLANGS[S]; if (isDefined(RES)) RES=RES.toString(LANG) return isString(RES)?RES:S; } function lst(L) { var RES="" for (var I=0;I1) { UNT=substring(L[1],0,length(L[1])-12); UNT=replaceAll(UNT,"und",","); UNT=splitTrim(UNT,","); } VERS=L[0]; var VER=""; if (endsWith(VERS,"version")) VER="version"; if (endsWith(VERS,"ov")) VER="ov"; VERS=substring(VERS,0,length(VERS)-length(VER)); VERS=replaceAll(VERS,"und",","); VERS=splitTrim(VERS,","); VERS=lst(VERS.map(fx)); if (LANG=="fr") RES=fx(VER)+" "+VERS; else RES=VERS+" "+fx(VER); if (isDefined(UNT)) { UNT=lst(UNT.map(fx)); if (LANG=="fr") UNT=" "+fx("mit")+" "+fx("untertiteln")+" "+UNT; else UNT=" "+fx("mit")+" "+UNT+" "+fx("untertiteln"); RES+=UNT; } return RES; } var GENRES={ "animation": mlstr({ de:"Animation", fr:"Animation" }), "dokumentarmaterial": mlstr({ de:"Dokumentarmaterial", fr:"Documentation" }), "dokumentarfilm": mlstr({ de:"Dokumentarfilm", fr:"Documentaire" }), "dokumentation": mlstr({ de:"Dokumentation", fr:"Documentation" }), "fotofilm": mlstr({ de:"Fotofilm", fr:"Film de photographies" }), "experimenteller dokumentarfilm": mlstr({ de:"Experimenteller Dokumentarfilm", fr:"Documentaire expérimental" }), "experimentelles video": mlstr({ de:"Experimentelles Video", fr:"Vidéo expérimentale" }), "imagefilm": mlstr({ de:"Imagefilm", fr:"Film institutionnel" }), "lehrfilm": mlstr({ de:"Lehrfilm", fr:"Film éducatif" }), "spielfilm": mlstr({ de:"Spielfilm", fr:"Fiction" }), "reportage": mlstr({ de:"Reportage", fr:"Reportage" }), "tv beitrag": mlstr({ de:"TV Beitrag", fr:"Emission télévisée" }), "tv magazin": mlstr({ de:"TV Magazin", fr:"Magazine télévisé" }) }; function vgenv(S) { var RES=GENRES[lcase(S)]; return isDefined(RES)?RES.toString(mlstr.lang()):S; } var GENRE=mlstr({ de:"Genre", fr:"Genre" }), FASSUNG=mlstr({ de:"Fassung", fr:"Doublage" }), REGIE=mlstr({ de:"Regie", fr:"Réalisation" }), CAMERA=mlstr({ de:"Kamera", fr:"Caméra" }), SCHNITT=mlstr({ de:"Schnitt", fr:"Montage" }), TON=mlstr({ de:"Ton", fr:"Voix" }), MUSIK=mlstr({ de:"Musik", fr:"Musique" }), DARSTELLER=mlstr({ de:"Darsteller", fr:"Acteur(s)" }), PROD=mlstr({ de:"Produktion", fr:"Production" }), KONT=mlstr({ de:"Kontakt", fr:"Contact" }); function vx(X) { return X.toString(mlstr.lang()); } function vgen() { return vx(GENRE); } function vfas() { return vx(FASSUNG); } function vreg() { return vx(REGIE); } function vcam() { return vx(CAMERA); } function vschnitt() { return vx(SCHNITT); } function vton() { return vx(TON); } function vmus() { return vx(MUSIK); } function vdart() { return vx(DARSTELLER); } function vprod() { return vx(PROD); } function vkont() { return vx(KONT); } // Video URLs var EMBEDS={ "youtu.be/": "https://www.youtube.com/embed/$", "youtube.com/watch?v=": "https://www.youtube.com/embed/$", "vimeo.com/": "https://player.vimeo.com/video/$", "dailymotion.com/video/": "https://dailymotion.com/embed/video/$", "ina.fr/video/": "https://player.ina.fr/player/embed/$/1/1b0bd203fbcd702f9bc9b10ac3d0fc21/wide/1", "de.labournet.tv/video/": "https://labournet.tv/iframe_embed_v2.php?clipId=$", "industries-luxembourg.public.lu": "$$", }; function vue(VU,EMBED) { if (VU=="") return VU; var VU0=VU; function ustrip(U) { if (startsWith(U,0,"http://")) U=substring(U,7,length(U)); if (startsWith(U,0,"https://")) U=substring(U,8,length(U)); if (startsWith(U,0,"www.")) U=substring(U,4,length(U)); return U; } VU=ustrip(VU); var FOUND=False; /*if (!FOUND) for (var E in EMBEDS) { TODO: chercher dans la colonne de gauche de EMBEDS pour voir si ca n'est pas deja un embed ... }*/ if (!FOUND) for (var E in EMBEDS) { if (startsWith(VU,0,E)) { VU=substring(VU,length(E),length(VU)); if (EMBEDS[E]=="$$") { VU=VU0;FOUND=True; } else { if (contains(E,"labournet") || startsWith(E,0,"ina.fr")) VU=VU.split("/")[0]; VU=VU.split("?")[0]; VU=VU.split("&")[0]; VU=replaceAll(EMBEDS[E],"$",VU); FOUND=True; } if (FOUND) break; } } if (isArray(EMBED)) EMBED[0]=FOUND; return FOUND?VU:VU0; } function lvurl(VU) { function f(L,SEP) { var L=splitTrim(VU,SEP).map(function (S) { return trim(S,";"); }); // FIXME: splitTrim() is not ideal, can't allow for several possible separators used in the same time return L.filter(function (X) { return isString(X) && X!="" && startsWith(X,0,"http"); }); } var L=[""]; if (isdef(VU)) { L=f(VU,"\n"); if (length(L)==1) L=f(VU," "); } return L; } function vurl(VU) { return vue(lvurl(VU)[0]); } function vurldef(VU) { var L=[0]; vue(lvurl(VU)[0],L); return L[0]; } function vurl2def(VU) { return length(lvurl(VU))>1; } function vurl2(VU) { var L=lvurl(VU),RES=""; if (length(L)>1) { RES=[span,{}]; for (var I=0;I0) RES.push(" "); RES.push([a,{href:L[I]},(I+1).toString()]); } } return RES; } // Misc. function exp1() { return [a,{href:"$Video"},'La video']; }