Sébastien

Sébastien

Html 5 "vient" de sortir, enfin ca date déjà un peu, mais je me rends compte que des tonnes de nouveautés simples existent et son plutôt sympa, comme ces deux lkiens que je vais vous présenter ici :

  • Envoyer un SMS
  • Passer un coup de fil

De quoi s'agit-il ?

Je ne vous apprendrai pas que la consommation du web se fait de plus en plus depuis un terminal portable, notamment un téléphone. Et qui dit telephone, dit deux nouvelles fonctionnalités que l'utilisateur peut être amené à vouloir faire : proposer sur votre site web, tout comme on proposerait de créer un lien mailto, un lien pour passer un coup de fil, ce qui lancera l'application de composition de numéro de téléphone sur le telephone

Proposer à l'utilisateur la composition d'un numéro de téléphone

Pour créer un lien avec la pré composition d'un numéro de téléphone, il suffit de créer un lien <a href="tel:0383565656">Telephonez moi</a>. Ainsi, en cliquant sur le lien depuis votre téléphone, le lien sera précomposé sur l'applicationd e composition de votre téléphone, il ne reste plus qu'a valiser la composition.

 

Screenshot 2021 07 27 18 07 09

 

Pré-composer un message SMS

La précomposition d'un message SMS est un poil différentt come le message est aussi à intégrer dans le lien a href.

La précomposition d'un SMS se rapproche beaucoup de la commande mailto, avec l'espace rurl-encodé en %20.

<a href="sms:+3365878457&body=Selut%20sebastien,%20ca%20va%20?">Envoie moi un SMS</a>

 

Et voila, j'ai encore appris quelque chose ce soir :)

Pré-requis de bienveillance

J'invite à une bienveillance de mes lecteurs quant aux modes de diffusion de ce module. En effet, j'ignore totalement comment fabriquer un package de distribution et d'installation de modules Joomla, j'utilise toujours le mode "Découverte". Mais contactez-moi si vous avez un tuto ou pour m'expliquer comment packager un module et le rendre distribuable.

C'est quoi ?

Il apparait que sur mon site, je me suis interessé (et je m'interesse toujours) aux API du web. J'ai écris plusieurs articles pour expliquer dans les grandes lignes les API que le site Youtube vous fourni. et il y en a une passez sympa, encore faut-il l'appeler une API car c'est est pas trop une (encore que), c'est le fil RSS d'une chaine Youtube. Sur mon autre site Aujourd'hui à Nancy, j'écris régulièrement des articles sur des artistes du web. Et beaucoup d'entre eux, si se n'est pas pour dire tous, ont une chaine youtube alimentée régulièrement. Le problème auquel je me heurtais était simple : mes articles étant intemporel, je peux (et je le fais) intégrer des vidéos dont le code d'intégration est fourni par Youtube. Pour une vidéo spécifique dans un article, c'est pas mal. Mais quid pour parler d'une chaine ? La vidéo va - elle rester ? sera-t-elle supprimée ou censurée sur la plateforme collaborative de vidéos ?

Autant de questions auxquelles mon module répond puisqu'il se base sur le flux RSS d'une et une seule chaine, Le résultat est un article (si le module est intégré à l'article) à jours avec les dernières vidéos de la chaine.

Tu as tout écrit ?

Alors je sais que je suis une bille complète en programmation orientée objet, mais je m'y mets (oui oui, moi qui était (et le suis encore un peu) réfractaire à la POO et y'a un truc de feignasse (il faut bien le dire) mis à la disposition des développeurs : l'héritage. Alors tout réécrire ? jamais. Je suis parti du module mod_feed fourrni dans Joomla, module de base du CMS, que j'ai dupliqué, renommé ainsi que le fichier XML de description, auquel j'ai ajouté un test sur une fonctionnalité spécifique du fil RSS de Youtube : la présenced es références des vidéos. Ce module, vous l'aurez compris, dépend totalement sde l'API, qui peut évvoluer dans le temps !

Pour faire simple, je regarde si l'URL du fil RSS contient la chaine "youtube" et si tel est le cas, je pars du principe que c'est un bon fil RSS fourni par Youtube. Alors oui je sais, le test est léger, il faudrait plutôt tester avec des regex le contenu du flux, mais les regex, je maitrise pas.

Ca fait quoi alors par rapport à mod_feed ?

Lorsqu'on donne en pâtrue un fil RSS youtube à mod_feed, aucune des vidéos n'est intégrée dans le flux, prêtes à être jouée. Et bien avec mon module, elle le sont. Je vous ai concocté ci(dessous un module d'exemple, basé sur la chaine Youtube UC4YtERl4WGwN8dFzn28FHMg (enfin France TV Arts mais je ne doute pas que vous avirez reconnus la référence :-)

france TV ART

 

Comme vous pouvez le voir sur la copie d'écran, ce module liste toutes les dernière vidéos contenues dans le flux (alors j'ai regardé très rapidement dans l'API Youtube et n'ai pas trouvé si on pouvait régler le nombre d'items du fils RSS youtube, peut être que oui), et le module les affiche les unes sous les autres. Et bien entendu, en cliquant sur le palyer, il se met en route.

Style ?

Y'a pas qu'en POO où je suis une bille, en infographie aussi. Mais je vous ai prévu un fichier CSS à personnaliser à loisir pour faire ressortir vos vidéos. Si vous faites vos propres fichier de styles, envoyez les moi et ca sera avec plaisir que je les joindrais (avec accréditation et références de votre choix) à cet article !

What else ?

Rien d'autre, juste un p'tit café pour fêter la fin de developpement ?

Petit bémol

Ayant développé le module à partir du module existant sans en faire d'héritage (oh le con),  il faut peut etre recorriger le fichier xml si vous voulez en faire un autre type de module. En revanche, si vous l''"écrasez" par héritage dans votre Joomla, ca devrait marcher.

 

Il y a quelques jours, j'ai écrit un petit article concernant le partage de vos URL sur les réseaux sociaux. Mon article porté essentiellement sur le formatage de vos données, afin que les réseaux sociaux puissent en extraire les informations que ces derniers jugent utiles. Pour effectuer cette opération "magique", enfin pas si magique que cela, les outils sociaux se base sur le protocole Open Graph, les outils ne font que de parser la page proposée au partage, afin d"'en extraire certaines balises. J'en ai parlé sur ce même blog il y a maintenant 2 jours, mais je me suis rendu compte que je ne suis pas allé en profondeur dans mon article.

Pour commencer, un peu d'histoire.

Le protocole Open Graph a été créé par la société Facebook, en s'inspirant de Dublin Core (vocabulaire sémantique pour exprimer les données), des micro formats et du format RDFa. Je ne doute pas que vous connaissez toutes ces abréviations, mais si cela n'était pas le cas, sachez que les micros formats permettent, au cœur d'un élément comme une page web, d'incorporer des méta-données (pour faire simple, des donnéees qui portent sur la forme et non le fond de l'article). Ainsi moteur de recherche, en ce qui concerne les microformats, pourront intégrer de nouvelles données complémentaires ou données contenues par votre page comme l'auteur, le poids de la page, sa date de dréation.....
Parmi ces micros formats nombreux, on peut retrouver, par exemple, une adresse mail d'une personne, sa carte de visite numérique, un calendrier pour un événement... Le site internet wikipédia a un très bon article sur les microformats, j'y reviendrai peut-être ultérieurement.
Revenons désormais à Open Data graph. Comme je le disais dans mon article dernier, une des fonctionnalités de ce système permet, lorsque vous collez une URL dans un champ de publication d'un réseau social, d'aller rechercher directement des informations situées sur la page, afin d'en afficher un court résumé avec une image, un lien hypertexte, le nom du site ou encore la description de la page.
recpauto
 

Mais, me direz-vous, en quoi joue Open Graph protocol ?

En fait, ce protocole va vous permettre, dans votre page web, d'intégrer des informations complémentaires dans les balises meta de votre en tête de votre page HTML, afin de pouvoir spécifier certaines informations complémentaires. Le site Open Data graph protocol détaille l'ensemble des balises que nous pouvons rajouter, mais iton les principales comme le titre de votre article ou votre page, son type, éventuellement une image illustrant votre article, ou encore bien entendu l'URL de la page. Entre parenthèses, c'est grâce à la balise og: image que des réseaux sociaux comme Facebook arrivent à en extraire l'image principale à afficher sur votre post que vous êtes en train de préparer.
Deux types de métadonnées Open Data graph sont bien distinctes :  des métadonnées basiques comme le titre, le titre de votre page une image ou encore l'URL de votre page, mais d'autres métadonnées complémentaires peuvent apparaître comme un fichier audio, une description, quelques informations complémentaires relatives à la langue anglaise comme le fait d'avoir un hiatus ou non dans le déterminant débutant le titre de votre page, (en d'autres termes, faut-il un N derrière le a pour traduire "un" en français), mais vous pourrez aussi trouver des informations relatives à la  localisation de votre page c'est-à-dire sa langue et son territoire d'origine, le nom du site d'origine, éventuellement une vidéo de votre page que vous êtes en train de partager peut contenir. Pour toutes ces données que je viens de citer, vous ne pouvez mettre qu'une seule information à chaque fois. Si votre page contient plusieurs vidéos, seule l'une d'entre elles peut-être intégrée à la balise meta.
Chacun des champs que je viens de citer, contiennent des paramètres, et même aussi être composée de données structurées. Derrière la balise meta sur la même ligne, on peut y retrouver le type du partage de votre fichier comme une image, sa longueur, un texte alternatif pour les navigateur n'affichant pas les images (oui oui ca existe encore !), ou encore d'autres informations concernant la possibilité d'adjoindre à votre page web, un fichier MP3.
De ce fait, en partageant sur les réseaux sociaux, Facebook (ou un autre) pourra et saura quoi mettre en avant sur le post qu'il est en train de créer. Il existe beaucoup d'autres méta et je ne peux que vous conseillez de regarder le site https://ogp.me, dont les acronymes, vous l'aurez compris, signifie Open Graph Protocol. Ce site particulièrement bien fait, classe en une et seule unique page l'ensemble des métadonnées que vous pouvez à joindre sur votre page web.
Pour les développeurs et celles qui veulent tester vos données Open Data graph, il est bon de savoir qu'il existe tout comme pour langage HTML, des validateurs vous permettant de savoir si votre code Open Data grâce est correct ou pas. Sur lamême page que j'ai cité, vous retrouverez plusieurs liens vers des sites internet permettant cette validation. D'ailleurs, Google et Facebook ont, eux aussi, un outil de validation de ce type.
En préparant mon article, je me suis aussi poser la question de savoir si des CMS comme joomia, posséde lui aussi des solutions pour intégrer les métadonnées. Je ne m'intéresse à titre personnel qu'à des outils gratuits. Effectivement, le groupe de développeur tchèque Phoca propose un outil permettant d'intégrer beau données Open Graph sur votre site. Je ne l'ai pas testé personnellement je ne sais donc pas ce que cet outil vaut.
En tout cas, pour celles et ceux qui se posent est encore la question de savoir comment Facebook génère ce petit encart avec nos titres de la page, l'image principale de la page, le lien vers la page que vous souhaitez proposer à vos "followers" sur Facebook, la solution vous est désormais connue.

Je ne sais pas vous, mais moi, je ne suis déja demandé à plusieurs reprises quelle était la "magie" qui engendrait ce que les réseaux sociaux "composent" lorsque vous partagez une url ? Vous savez, le ... truc, bidule, enfin le machin dont je le retiens jamais le nom (dites le mois si vous retrouvez le nom, envoyez mon un message sur Facebook que je corrige mon mot). Aller une image explicative.

copie ecran

Mais c'est quoi le truc de ce tour de magie ? J'avais déja vu une API qui permettait de générer ces petites "bulles" (dont je ne retrouve toujours pas le nom) sur les réseaux sociaux. Mais comment Facebook génère t il ce cadre ? D'où sort il les données ?

La réponse tient en un mot : Open Graph Protocol. Bon, en 2021, je doute qu'il y ait encore des gens qui ne le connaisse pas mais dans le doute, je résume. L'Open Graph Protocol est... un protocol. Oui oui.. Un protocole mis en place les les mastoddontes des réseaux sociaux qui se sont entendus pour partager des méta données que vous implémentez sur votre page web. Simple en fait. Vous pouvez retrouver le protocole (en une page !) à l'adresse https://opengraphprotocol.org/

Mais après .

Et ben une fois qu'on intégre des méta dans une page, méta bien codifiées, il ne reste plus qu'à en faire une extraction par régex (encore faut il maitriser, ce qui est loin d'être mon cas) pour recomposer un encadré synthétique, publié sur votre post. Un simple bout de html en quelque sorte..

Pour répondre à ma question posée dans le titre, il sufffit donc "tout simplement" à ce que votre code HTML dans son head comporte les méta décrites dans l'opengraph protocole, afin de recomposer cet encart synthétique, à partir d'une URL. Ces données sont à placer dans le <head></head> de votre page.Et ca tombe super bien car pour connaitre l'url, c'est vous qui la collez dans le cadre de partage du réseau social. Il intercepte la saisie et si cette dernière semble être une URL, il compose le cadre.

Facile non ?

 

dimanche, 04 juillet 2021 20:22

Mailto: oui, mais mailto: vers Gmail !

Cette petite astuce peut être forte utile au vue de la prolifération de adresses Gmail. Vous connaissez surment la commande permettant de lancer votre client email par défaut, depuis une page html ? Pour rappel, il sutt d'utiliser le code : 

<a href="mailto:Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.">Clic</a>

commande mailto à laquelle vous pouvez rajouter les paramètres de "pré-configuration" du mail à lancer. Je ne vais pas exposer ici la RFC 6068 concernant cette manière de faire, mais cette RFC est l'une à lire vraiment car elle est fort interesante (j'en ai appris, après plus de 20 ans de création de documents web !)

Mais si vous êtes sûrs que vos utilisateurs utillisent Gmail (ca arrive pour les PME qui optent pour tous les adresses email de leurs collaborateurs, toutes hébergées sur Gmail), peut-être souhaiteriez vous que ce soit le client web Gmail qui soit lancé à la place du logiciel client mail installé et sélectionné par défaut sur votre ordinateur ? Et mieux, la solution a été pensée et mise en place par la petie entreprise Google.

Comment lancer Gmail (web) par défaut ?

La solution est de ne pas lancer votre lien au travers de votre commande Mailto, mais d'utiliser la commande fournie par Google. : 

https://mail.google.com/mail/?view=cm&fs=1&to=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.&su=SUBJECT&body=BODY&bcc=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

Je vous laisse évidemment le soin de remplacer les chaines de caractères surlignées en jaunes pour vos propres données. Cette commande, il suffit de la mettre dans une balise <a>. Attention : du coup, dans le href, ce n'est pas mailto à utiliser. Voici un exemple : 

<a href="/https://mail.google.com/mail/?view=cm&fs=1&to=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.&su=SUBJECT&body=BODY&bcc=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.">LIEN</a>

Vous voulez tester ? Cliquez ici

Qu'il est rageant de travailler sur plusieurs postes de travails, sur des dossiers de plusieurs Go de données, répartis entre des petits et des gros fichiers, sachant que seuls ceux d'un sous répertorie varient beaucoup et que quelques fichiers texte de config, à la marge, diffèrent ...Et bien sûr, je ne sais pas lesquel.

Et oui, quand vous avez un serveur web portable pour vos développement ou préparation à de la mise en ligne d'un projet, avec des énormes données de fichers intégrées à votre projet, tout recopier prend des plombes. D'autant plus si votre machine à des sécurités réseaux d'entreprises, par exemple....

J'ai testé et trouvé une astuce que je voulais partager. Soit mon répertoire de mon serveur de sioux, que l'on nommera Apache, présent sur mon disque interne. Mon serveur fait 40GO

Dans ce dossier, j'ai un sous-sous-sous dossier de données, qui fait grosso modo 20 Go, la moitié tout de même. Ne pensez vous pas que recopier 20 Go (4 heures sur une machine de travail) est bien utile à chaque fois ? Je ne pense pas. Mais alors, sachant que ce dossier est un sous sous sous dossier, comment faire pour ne pas avoir à le recopier à chaque fois ?

Prérequis :

  1. Ce dossier ne bouge quasiement jamais (ni ajouts, ni suppressions)
  2. Ce dossier est "loin" par rapport à la racine du disque, inclus dans plusieurs sous-dosssiers imbriqués
  3. Comble du truc, j'aime bien juste copier-coller, je suis pas là a perdre mon temps à faire des copies de sous dossier au risque d'en oublier...
  4. Enfin, mon système d'exploitation pour ces taches s'appelle Windows (sinon j'aurais même pas fait cet article, un shell aurait suffit)

La solution ?

Robocopy pardi ! Il est vrai qu'en terme de ligne de commande Windows, j'en suis presque resté à DOS (6.2 quand même...) mais Billou a intégré des nouveaux outils sympas.

robocopy, c'est quoi ? C'est un outil de copie de fichiers robuste pour Windows (j'en déduis que Microsoft avoue que jusque là, ses copies n'étaient pas robustes ? - C'est pas moi qui le dit...)

Des tonnes d'options sont proposées par cet outil mais revenons à notre besoin de tout copier sauf UN sous répertoire du volume. La commande se résume ainsi et je vais la commenter :

robocopy dossier_source dossier_destination  /XD "__DOSSIER_A_EVITER_DE_COPIER__" /E

Soit l'organisation hiérarchique suivante

├───Documents (2Mo)
│ │ créer une liste de categories joomla avec photo.odt (1 Mo)
│ │ doc joomla.odt (1 Mo)
│ ├───Fichiers (1 Mo)
│ │ ├───Backup (1 To)
│ │ ├───Fichiers Publiques (1 Mo)
│ │ └───Fichiers_prives (1 Mo)
│ ├───Audacity (1 Mo)

Comme vous le voyez sur cet example fictif, backup est très gros et ce dossier, je je veux pas le copier à chaque fois. je vais donc l'exclure de ma copie sur mon volume D:  :

robocopy C:\documents D:\documents . /XD "c:\documents\Fichiers\Backup" /E

Le /E à la fin de la ligne copie les sous-répertoires, y compris les vides.

Et voila...


ROBOCOPY :: Copie de fichiers robuste pour Windows (Aide fournie accessible par robocopy/?)

Syntaxe :: ROBOCOPY source destination [fichier
[fichier]...] [options]

source :: répertoire source (lecteur:\chemin ou
\\serveur\partage\chemin).
destination :: rép. de destination (lecteur:\chemin ou
\\serveur\partage\chemin).
fichier :: fichier(s) à copier (noms/caractères
génériques : valeur par défaut ".").


:: Options de copie :

/S :: copie les sous-répertoires non vides
uniquement.
/E :: copie les sous-répertoires, y compris les
vides.
/LEV:n :: copie uniquement les n premiers niveaux de
l’arborescence source.

/Z :: copie les fichiers en mode de redémarrage.
/B :: copie les fichiers en mode de sauvegarde.
/ZB :: utilise le mode de redémarrage ; si l’accès est refusé, utilise le mode de sauvegarde.
/J :: copier à l’aide d’E/S non mises en mémoire tampon (recommandé pour les fichiers volumineux).
/EFSRAW :: copie tous les fichiers chiffrés en mode EFS RAW.

/COPY:indicateurscopie :: spécifie les éléments à copier pour les fichiers (/COPY:DAT par défaut).
(copyflags : D=Données, A=Attributs, T=Horodatages, X=Ignorer les flux de données Alt).
(S=Sécurité=ACL NTFS, O=infos prOpriétaire,
U=infos d’aUdit).

/SEC :: copie des fichiers avec sécurité (équivaut à /COPY:DATS).
/COPYALL :: copie toutes les infos de fichiers  (équivaut à /COPY:DATSOU).
/NOCOPY :: ne copie aucune info de fichier (utile avec /PURGE).
/SECFIX :: corrige la sécurité de tous les fichiers, même les fichiers ignorés.
/TIMFIX :: corrige les horodatages de tous les fichiers, même les fichiers ignorés.

/PURGE :: supprime les fichiers/répertoires de destination qui n’existent plus dans la source.
/MIR :: met en MIRoir une arborescence (équivaut à /E plus /PURGE).

/MOV :: déplace les fichiers (les supprime de la source après la copie).
/MOVE :: déplace les fichiers ET les répertoires (les supprime de la source après la copie).

/A+:[RASHCNET] :: ajoute les Attributs donnés aux fichiers copiés.
/A-:[RASHCNET] :: supprime les Attributs donnés des fichiers copiés.

/CREATE :: crée une arborescence et des fichiers de longueur nulle uniquement.
/FAT :: crée des fichiers de destination au format de nom 8.3 FAT uniquement.
/256 :: désactive la prise en charge des chemins d’accès très longs (> 256 caractères).

/MON:n :: source du moniteur ; réexécuté lorsque plus de n modifications sont observées.
/MOT:m :: source du moniteur ; réexécuté après m minutes en cas de modification.

/RH:hhmm-hhmm :: heures d’exécution : heures auxquelles de nouvelles copies peuvent être lancées.
/PF :: vérifie les heures d’exécution Par Fichier (et non par passage).

/IPG:n :: délai entre les paquets (ms) pour libérer la bande passante sur les lignes bas débit.

/SJ :: copie les jonctions comme des jonctions plutôt que comme des cibles de jonction.
/SL :: copie les liens symboliques comme des liens plutôt que comme des cibles de lien.

/MT[:n] :: Effectuer des copies multi-thread avec n threads (par défaut, 8).
n doit être au moins égal à 1 et non supérieur à 128.
Cette option est incompatible avec les options /IPG et /EFSRAW.
Redirige la sortie avec l’option /LOG pour de meilleures performances.

/DCOPY:indicateur(s)copie :: éléments à copier pour les répertoires (valeur par défaut : /DCOPY:DA).
(copyflags : D=Données, A=Attributs, T=Horodatages, E=EAs, X=Ignorer les flux de données Alt).

/NODCOPY :: ne copie aucune info de répertoire (valeur par défaut : /DCOPY:DA).

/NOOFFLOAD :: copier les fichiers sans utiliser le mécanisme de déchargement de copie de Windows.

/COMPRESS :: Demander une compression réseau pendant le transfert de fichiers, si nécessaire.

::
:: Options de sélection des fichiers :
::
/A :: copie uniquement les fichiers où l’attribut Archive est défini.
/M :: copie uniquement les fichiers où l’attribut Archive est défini et le réinitialise.
/IA:[RASHCNETO] :: Inclut uniquement les fichiers où l’un des Attributs donnés est défini.
/XA:[RASHCNETO] :: eXclut les fichiers où l’un des Attributs donnés est défini.

/XF fichier [fichier]... :: eXclut les fichiers correspondant aux noms/chemins/caractères génériques donnés.
/XD répertoires [répertoires]... :: eXclut les répertoires correspondant à des noms/chemins donnés.

/XC :: eXclut les fichiers Changés.
/XN :: eXclut les fichiers Nouveaux.
/XO :: eXclut les fichiers anciens.
/XX :: eXclut les fichiers et répertoires supplémentaires.
/XL :: eXclut les fichiers et répertoires solitaires.
/IS :: Inclut les mêmeS fichiers.
/IT :: Inclut les fichiers optimisés.

/MAX:n :: taille de fichier maximale : exclut les fichiers de taille supérieure à n octets.
/MIN:n :: taille de fichier minimale : exclut les fichiers de taille inférieure à n octets.

/MAXAGE:n :: Antériorité maximale du fichier : exclut les fichiers plus anciens que n jours/qu’une date n.

/MINAGE:n :: Antériorité minimale du fichier : exclut les fichiers plus récents que n jours/qu’une date n.
/MAXLAD:n :: dernière date d’accès MAXimale : exclut les fichiers inutilisés depuis n.
/MINLAD:n :: dernière date d’accès MINimale : exclut les fichiers utilisés depuis n. (si n < 1900, alors n = n jours, sinon n = date JJMMAAA).

/FFT :: suppose des heures de fichier FAT (granularité de 2 secondes).
/DST :: compense les différences d’heure d’été d’une heure.

/XJ :: exclut les liens symboliques (pour les fichiers et les répertoires) et les points de jonction.
/XJD :: exclut les liens symboliques pour les répertoires et les points de jonction.
/XJF : exclut les liens symboliques pour les fichiers.

/IM :: Inclure les fichiers modifiés (heures de modification différentes).
::
:: Options de nouvelle tentative :
::
/R:n :: nombre de tentatives après l’échec de copies : 1 million par défaut.
/W:n :: délai entre les tentatives : 30 secondes par défaut.

/REG :: enregistre /R:n et /W:n comme paramètres par défaut dans le Registre.

/TBD :: attend la définition de Sharenames (erreur de nouvelle tentative 67).

/LFSM :: fonctionnement en mode espace libre faible, activation de l'interruption et de la reprise de la copie (voir Remarques).

/LFSM:n[KMG] :: /LFSM, spécifiant la taille du plancher en n [K:kilo,M:mega,G:giga] octets.

::
:: Options d’enregistrement dans le journal :
::
/L :: Liste uniquement : pas de copie, d’horodatage ou de suppression de fichiers.
/X :: signale tous les fichiers supplémentaires et pas uniquement ceux sélectionnés.
/V :: produit un résultat détaillé en affichant les fichiers ignorés.
/TS :: inclut les horodaTageS des fichiers sources dans le résultat.
/FP :: inclut le chemin d’accès complet des fichiers dans le résultat.
/BYTES :: affiche les tailles en octets.

/NS :: pas de taille : n’enregistre pas les tailles de fichier.
/NC :: pas de classe : n’enregistre pas les classes de fichier.
/NFL :: pas de liste de fichiers : n’enregistre pas les noms de fichiers.
/NDL :: pas de liste de répertoires : n’enregistre pas les noms de répertoire.

/NP :: pas de compteur de progression : n’affiche pas le pourcentage copié.
/ETA :: affiche l’heure de fin estimée de la copie des fichiers.

/LOG:fichier :: copie le statut dans le fichier journal (remplace le journal existant).
/LOG+:fichier :: copie le statut dans le fichier journal (ajoute au journal existant).

/UNILOG:fichier :: copie le statut dans le fichier journal en Unicode (remplace le journal existant).
/UNILOG+:fichier :: copie le statut dans le fichier journal en Unicode (ajoute au journal existant).

/TEE :: résultat dans la fenêtre de la console et dans le fichier journal.

/NJH :: pas d’en-tête de tâche.
/NJS :: pas de résumé de tâche.

/UNICODE :: sortie au format UNICODE.

::
:: Options de tâche :
::
/JOB:NomTâche :: prend les paramètres du fichier de tâche nommé.
/SAVE:NomTâche :: enregistre les paramètres dans le fichier nommé
/QUIT :: arrête après traitement de la ligne de commande (pour afficher les paramètres).
/NOSD :: aucun répertoire source spécifié.
/NODD :: aucun répertoire de destination spécifié.
/IF :: Inclut les fichiers suivants.

::
:: Remarques :
::
L'utilisation de /PURGE ou de /MIR sur le répertoire racine du volume a précédemment causé l'application par Robocopy de l'opération demandée sur les fichiers du répertoire System
Volume Information également. Ce n'est plus le cas. Si l'un ou l'autre est spécifié, Robocopy va ignorer tous les fichiers ou répertoires avec ce nom dans les répertoires source et de destination de niveau supérieur de la session de copie.

La classification des fichiers modifiés ne s'applique que lorsque les systèmes de fichier source et de destination prennent en charge les horodatages de modification (par ex. NTFS) et que les fichiers source et de destination possèdent différentes heures de modification, mais sont autrement identiques. Ces fichiers ne sont pas copiés par défaut ; précisez /IM pour les inclure.

L'indicateur /DCOPY:E demande que la copie de l'attribut étendu soit tentée pour les répertoires. Notez que Robocopy continue actuellement si les EA d'un répertoire n'ont pas pu être copiés. Cet indicateur n'est pas non plus inclus dans /COPYALL.

Utilisation des demandes /LFSM Robocopy pour opérer en « mode d’espace libre faible ». dans ce mode, Robocopy s’interrompt chaque fois qu’une copie de fichier provoquerait l'
espace libre du volume de destination pour aller au-dessous d’une valeur « Plancher », qui peut être explicitement spécifié par la forme LFSM:n[KMG] de l’indicateur.

Si /LFSM est spécifié sans valeur de plancher explicite, le plancher est défini sur dix pour cent de la taille du volume de destination. mode espace libre faible est incompatible avec /MT, /EFSRAW, /B et /ZB.

 

vendredi, 25 juin 2021 21:47

Créer un champ personnalisé Email

À la demande générale de mon cousin, voici un tutoriel sur la création de mon premier plugin Joomia. Je ne savais même pas ce qu'était un plugin Joomla 24 heures auparavant, bien que j'en avais déjà installé, activé/désactivé sur mes sites web. Mon tutoriel va expliquer tout cela, code à l'appui.

Un plugin Joomla, c'est quoi ?

Un plugin Joomia, et bien c'est un plugin pardi ! La question est plutôt à quoi sert et quel est le rôle d'un plugin pour le CMS Joomla
Et la réponse est très claire : 
Un plugin, sous Joomla, et une extension du logiciel qui n'a pour but que de répondre à un événement.
Si vous avez déjà pratiqué un peu de Visual Basic ou de Delphi, ou même d'autres langages de programmation au travers d'un IDE, c'est exactement ce que l'on retrouve dans les inspecteurs d'objets et qui commence par généralement on, c'est-à-dire un événement.
Un événement, c'est la réponse à une action utilisateur.
Un événement de type oncClick, c'est la réponse du logiciel que vous êtes en train d'écrire, lorsque votre utilisateur clique sur la souris. D'autres événements comme onMouseOver, onExit,... existent, et pour chacun d'entre eux, vous coderez à l'intérieur ce que le logiciel doit exécuter lorsqu'il reçoit interruption système.
Je m'arrête en ce qui concerne les événements, je vous épargne les interruptions sur un événement. Ce qu'il faut retenir, c'est que sur un événement prédéfini par le langage de programmation, une action est lancée. Cela ne vous rappelle pas les interruptions système ? Bien sûr que si ! Alors rentrons désormais dans le vif du sujet.
 
Mon besoin : Avoir un champ email
Mon besoin est super simple. La version de Joomla (3) n'a pas de champs de type email. Un champ de type email et un champ sur lequel nous pourrions renseigner une adresse email, qui afficherait un lien hypertexte, avec une commande mailto:, permettant, lorsque l'utilisateur clique sur ce lien hypertexte, de lancer son client mail par défaut sur son ordinateur.
Que l'on soit bien d'accord : Ce plugin est génial pour le spam, je sais, sauf si on est sur un réseau interne non connecté à internet Et c'est le cas, il n'y a aucun risque pour cela. Parenthèse faite, découvrons comment j'ai écrit ce plugin.
 
L'organisation des fichiers.
 
Pour commencer, il faut savoir où placer une fichier dans le CMS Joomla. Nous allons travailler dans notre propre dossier de notre propre plugin Joomia. Il se trouve dans notre sous-dossier [dossier joomla]/plugins/fields/email. Pourquoi fields ? Tout simplement parce que nous allons faire un champ de saisie ! L'organisation des fichiers sera donc celle présenté ci-dessous :
 
stree
 
Soyons d'accord : je n'ai pas tout écrit, et me suis énormément basé sur le champ texte existant, auquel j'ai rajouté mes propres fonctionnalités. Je crois que nous appelons ça héritage en programmation orientée objet. Pour rappels sur l'héritage, le principe est de prendre un objet existant, auquel nous rajoutons une fonctionnalité ou une propriété. En d'autres termes, nous créons soit une nouvelle propriété, soit une nouvelle méthode pour étendre les capacités de la classe de départ.
 
Entrons désormais dans le vif du code.
<?php
/**
* @package Joomla.Plugin *
* @subpackage Fields.Text *
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/ defined('_JEXEC') or die;
$value = $field->value;
if ($value == '')
{
  return;
}
if (is_array($value))
{
   $value = implode(', ', $value);
}
echo '<a href="mailto:'.htmlentities($value).'">'.htmlentities($value)."</a>";  
Voici simplement le fichier email.php. comme vous pouvez le voir, ce fichier commence par un import des librairies plugins de Joomla, d'une déclaration d'une classe étandant la classe Fieldplugins. Ainsi, nous récupérons toutes les propriétés de la classe de base, à laquelle nous aurions plus rajouter des méthodes à cet endroit. Comme je n'en ai pas besoin, je n'ai rien à rajouter dans ce fichier.

Le fichier fields/email/email.xml

Dans le même répertoire que le fichier précédent, nous avons aussi un fichier XML qui porte le même nom que le précédent, excepté bien entendu son extension. Dans ce fichier, vous pouvez remarquer une description de manière très détaillée, du plugin que nous allons écrire. Je ne vous cache pas que je ne me suis contenté que de remplacer quelques informations par rapport au plugin de base texte que j'ai dérivé pour faire mon plugin email.
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>Plugin pour afficher une adresse email</name>
	<author>Sébastien LHUILLIER</author>
	<creationDate>Juin 2021</creationDate>
	<copyright>Copyright (C) 2005 - 2020 Open Source Matters. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_TEXT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="email">email.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_text.ini</language>
		<language tag="en-GB">en-GB.plg_fields_text.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="filter"
					type="list"
					label="PLG_FIELDS_TEXT_PARAMS_FILTER_LABEL"
					description="PLG_FIELDS_TEXT_PARAMS_FILTER_DESC"
					class="btn-group"
					default="JComponentHelper::filterText"
					validate="options"
					>
					<option value="0">JNO</option>
					<option value="raw">JLIB_FILTER_PARAMS_RAW</option>
					<option value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
					<option value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
					<option value="alnum">JLIB_FILTER_PARAMS_ALNUM</option>
					<option value="integer">JLIB_FILTER_PARAMS_INTEGER</option>
					<option value="float">JLIB_FILTER_PARAMS_FLOAT</option>
					<option value="tel">JLIB_FILTER_PARAMS_TEL</option>
				</field>

				<field
					name="maxlength"
					type="number"
					label="PLG_FIELDS_TEXT_PARAMS_MAXLENGTH_LABEL"
					description="PLG_FIELDS_TEXT_PARAMS_MAXLENGTH_DESC"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>

Le fichier fields/params/email.xml

Le fichier est un fichier au format XML, son extension vous le faire remarquer.
Ce fichier vous permet de décrire de manière détaillée, comment ce fichier doit contenir les données saisies par l'utilisateur. Nous nous rendons compte que ce champ est de type texte, qui possède comme il y avait la constante décrite à la ligne 8 et la description de ce champ est la constante décrite à la ligne 9.
Comme vous pouvez le voir, un seul champ est défini dans ce fichier XML.
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>Plugin pour afficher une adresse email</name>
	<author>Sébastien LHUILLIER</author>
	<creationDate>March 2016</creationDate>
	<copyright>Copyright (C) 2005 - 2020 Open Source Matters. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_TEXT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="email">email.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_text.ini</language>
		<language tag="en-GB">en-GB.plg_fields_text.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="filter"
					type="list"
					label="PLG_FIELDS_TEXT_PARAMS_FILTER_LABEL"
					description="PLG_FIELDS_TEXT_PARAMS_FILTER_DESC"
					class="btn-group"
					default="JComponentHelper::filterText"
					validate="options"
					>
					<option value="0">JNO</option>
					<option value="raw">JLIB_FILTER_PARAMS_RAW</option>
					<option value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
					<option value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
					<option value="alnum">JLIB_FILTER_PARAMS_ALNUM</option>
					<option value="integer">JLIB_FILTER_PARAMS_INTEGER</option>
					<option value="float">JLIB_FILTER_PARAMS_FLOAT</option>
					<option value="tel">JLIB_FILTER_PARAMS_TEL</option>
				</field>

				<field
					name="maxlength"
					type="number"
					label="PLG_FIELDS_TEXT_PARAMS_MAXLENGTH_LABEL"
					description="PLG_FIELDS_TEXT_PARAMS_MAXLENGTH_DESC"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>

Le fichier email/tmpl/email.php

Passons désormais au dernier fichier en question. C'est dans ce dernier que je ne respecte pas tout à fait le principe modèle vue contrôleur et j'en suis tout à fait conscient. À celles et ceux qui savent comment modifier la ligne 24, c'est avec grande joie que je lirai vos réponses car je l'ignore. En effet, même si bon code est fonctionnel, le fait de faire un écho en dernière ligne du fichier, casse le modèle de type MVC. Passons sur ce détail qui, personnellement, me gonfle royalement, mais je suis conscient que ce n'est pas propre.
La parenthèse et en fait, regardons de plus près ce fichier. Dans la variable value, nous récupérons la propriété value de l'objet. Cette valeur est testée. Si c'est d'ailleurs évident, nous retournons rien, dans le cas où cette valeur est constituée de plusieurs valeurs dans un tableau, elles sont concaténées.
En dernière ligne, je récupère la valeur de la variable value, et j'en sais simplement un simple affichage. Mais d'afficher le contenu direct adresse email, Tout le code HTML permettant de générer un hyperlien de type mailto :
<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Text
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
$value = $field->value;
if ($value == '')
{
	return;
}

if (is_array($value))
{
	$value = implode(', ', $value);
}

echo '<a href="mailto:'.htmlentities($value).'">'.htmlentities($value)."</a>";
Voilà, mon plugin est terminé. Comme j'ai travaillé dans mon répertoire de Joomia, au cœur même de mon serveur, je n'ai nullement besoin de générer une archive zip afin de faire faire une installation au travers de l'installateur du cms. Comme mes fichiers sont présents au cœur de mon Joomla, je passe simplement par la fonction découvrir située dans l'administration, dans le menu extension. Dans ce menu je selectionne le premier menu gérer, afin d'accéder à son sous-menu découvrir.
Une fois le processus de découverte en route, il apparaît dans ma liste des éléments découverts mon plugin. Il suffit de le sélectionner au travers de sa case à cocher en début de ligne, puis de cliquer sur le bouton Installer. Voilà votre plugin est prêt à fonctionner. Toutefois, il reste bien entendu une dernière action à ne surtout pas oublier. En effet, lorsque vous installez votre propre plugin, a-priori, le plugin est, par défaut, désactivé. En tout cas c'est exactement ce qu'il se passait chez moi. Il faut donc que vous activiez votre plugin que vous venez d'installer. Retournez alors dans le menu extension -> plugins et rechercher dans la liste des plugins le vôtre. N'hésitez pas à utiliser le moteur de recherche qui est à votre disposition. Lorsque vous l'aurez trouvé, vous remarquerez que son statut est par défaut désactivé. Cliquez alors sur l'icône le rouge symbolisant la désactivation du statut du plugin, l'icône passe à une tick verte. Et voilà votre plugin est fonctionnel. En tout cas le mien l'était.

Utilisation du plugin

Avant d'enregistrer cet article, j'oubliais de vous préciser le fonctionnement de ce plugin.
Lorsque vous allez créer votre champ personnalisé, vous allez pouvoir sélectionner et voir donc apparaître, nouveau type de champs. Ce type s'appelle email. Désormais, lorsque vous allez déclarer dans le menu contenu champ, après avoir donner le nom de votre champ, dans la liste déroulante type, vous verrez apparaître un nouveau type email. Ce type c'est celui que vous avez déclaré dans votre fichier XML. Sélectionner votre type, donnez un titre à votre champ, remplissez les autres particularités de votre champ que le logiciel vous propose, et valider par le bouton Enregistrer.

C'est encore long ?

Bravo, vous venez de déclarer un nouveau champ de type email. Désormais, lorsque vous saisirez une adresse email dans un champ personnalisé de ce type, votre adresse email sera de la forme d'un Hyperlien.
lundi, 14 juin 2021 20:44

Supprimer le son d'une vidéo

ffmpeg -an -i in.webm -f lavfi -i anullsrc -c:v copy -c:a aac -shortest -fflags +shortest -max_interleave_delta 200M -f nut - | ffmpeg -f nut -i - -vn -c copy silent.m4a

Douteriez vous de mes compétences de traduction de la langue de Shakespeare vers le français ? Vous le pouvez je vous l'accorde

Aujourd''hhui, je voulais faire un petit point sur le travail d'universitaires de l'Université de Cambrige, qui ont sorti un outil dont le nom "in english" est bien ApplyMagicSauce. Alors, oui, il y a un point commun avec le titre de cet article.

Cet outil analyse, depuis le contenu de l'archive Twitter ou Facebook, votre personnalité. Rien que ça.

Vous avez dit archive ?

Facebook propose à n'importe quel utilisateur de pouvoir demander le contenu de l'archive de son profil, avec tout ce que l'utilisateur a publié sur Facebook, depuis l'ouverture de son compte. Attention, gros fichier. Tellement gros que le fichier n'est pas téléchargeable directement. Il faut en faire la demande sur Facebook, ce dernier lançant un process de création de cette archive, vous alertant par mail ou par notification (dans Facebook) de sa création.

Et y'a quoi dans l'archive Facebook ?

Pour le savoir, le meilleur moyen est de demande la prépapration de l'archive Facebook,  La page d'aide de demande d'archive de Facebook explique comment la demander :

  1. Cliquez sur en haut à droite de Facebook.
  2. Sélectionnez Paramètres et vie privée, puis cliquez sur Paramètres.
  3. Dans la colonne de gauche, cliquez sur Vos informations Facebook.
  4. À côté de Télécharger vos informations, cliquez sur Voir.
  5. Pour ajouter ou supprimer des catégories de données dans votre demande, cochez ou décochez les cases situées à droite de Facebook.
  6. Sélectionnez d’autres options, notamment :
    • Le format de votre demande de téléchargement.
    • La qualité des photos, des vidéos et des autres types de contenu multimédia.
    • Une plage de dates spécifique propre à vos informations. Si vous ne sélectionnez pas une plage de dates, vous demanderez toutes les informations pour les catégories sélectionnées.
  7. Cliquez sur Créer un fichier pour confirmer la demande de téléchargement.

Lorsque "le grand réseau social bleu" sera prêt, sur votre compte Facebook (et peut être même par mail), vous recevrez une notification de possibilité de téléchargement du fichier.

Le fichier d'archive Facebook est-il volumineux ?

Oui et non, vous pouvez d'une part spécifier ce que vous voulez voir apparaitre, mais le volume de ce fichier dépend aussi principalement du nombre de posts que vous publiez. Le mien a fait 200 Mo mais j'ai sélectioné le minimum d'options dans la demande de fichier

L'analyse de l'archive

Revenons au coeur de cet article : l'analyse de l'outil d'analyse de votre archive Faacebook. Cette analyse s'effectue en uploadant votre ficheir d'archive sur https://applymagicsauce.com. Une fois uploadé, il suffit de lancer l'analyse de l'archive pour en découvrir votre profil, ou  plutôt l'analyse de votre profil. Voyons ce que j'ai découvert.

Analyse de l'age

L'outil commence mal : il 'a rajeunit de 17 ans. Alors que cela veut il dire ? Que l'outil ne marche pas ? Peut être, mais peut être cela vient il aussi du fait que je me sens tellement jeune dans ma tête que je publie des posts "jeunes"  :) Enfin, sur ce premier point, c'est un raté.

Analyse du genre

Je viens de découvrir que je n'étais pas hétéro à 100%. Incroyable, je l'ignorais ! Alors comment cela peut il se produire ? Mon environnement d'amis de Facebook ne comporte pas que des hétéros. Et je suis donc amis avec des personnes non hétéro, voire non binaire. C'est la seule explication que j'y vois. D'alleurs, je suis toujours ouvert aux femmes qui (m)le désirent... :)

Les 5 grands traits de personnalités

L'outil propose ensuite de sortir les 5 grands traits de perssonnalité répartis de la manière suivante, après traduction :

  • Conservateur et traditionnel
  • impulsif et spontané
  • complentatif
  • compétitif
  • Décontracté et détendu

Là encore, me connaissant, jamais je n'aurais pu me définir avec les résultats qui me sont attribués. Mais alors, JAMAIS !

Pour conclure, l'outil sort un graphique sur la notion de potentiel Leardership. il a fallu que j'aille revoir la définition exact de leadership car le résultat m'étonnait beaucoup. Mais c'est bien la notion de "meneur"  Me trouver un taux de meneur à 46%, ce n'est pas forcément ainsi que je me définis !

Conclusion

L'outil a le mérite d'exister mais que dire d'autre ? Est-ce moi qui ne me juge pas ainsi ? Est-ce l'outil qui a raison ? Je reste perplexe....

 

Vous aussi vous cherchez parmi des bibliothèques complètes de musiques libres de droit pour agrémenter ou colorer une vidéo, une présentation, un petit film ou que sais-je encore ? Et bien je viens de découvrir l'outil qu'il vous faut ! Un générateur en ligne de musique : ecrett.
Disponible via l'URL https://ecrettmusic.com, cet outil va vous permettre, après quelques réglages vraiment très simples, un point fort de l'outil, de générer une musique aléatoire. Enfin aléatoire, dans le sens où la musique n'a pas été déjà créée auparavant.
L'interface de création se compose de 3 volets : Le premier va vous permettre de sélectionner un thème musical, un genre, une scène msicale.

ecrett
Le deuxième volet, en bas de l'écran vous permet de choisir, après avoir sélectionner la durée de votre musique, où, sur une timeline répétitive, de lancer votre sample. Dans ce deuxième volet, vous pourrez aussi paramètrer votre musique : tempo, volume, durée de votre boucle.
Le troisième et dernier volet vous permet d'uploader une vidéo, car le but de cet outil est véritablement la création de musiques pour illusrtrer vos vidéos, dans le seul but de voir si votre musique "colle" bien à la vidéo.

Entre le premier et le deuxieme volet, 4 petites icônes vous permettent de gérer vos favoris, télécharger et voir votre historiques de musiques (limité à 10 dans la version gratuite), uploader votre vidéo pour prévisualiser la musique placée sur la vidéo et enfin, le dernier onglet vous donne accès à votre historique vous permettant, pour chacune des musiques que vous avez créé, de voir la date, de charger votre création dans l'interface, de télécharger votre création au format WAV et enfin, de supprimer votre création de votre interface. Alors oui c'est du wav mais vous trouverez un excellent article interessant pour le transformer en MP3 avec ffmpeg !


L'outil étant très simple, et bien... nous en avons (dajà) fait le tour !
Une fois vos paramètres sélectionnés, un gros bouton bleu "Create music" vous permet de ... générer votre oeuvre. Mais le travail ne commence seulement, si j'ose dire. Car dans la fenêtre du bas où votre oeuvre a été créée, vous avez une liste déroulante où, par défaut, le réglage est Tempo et volume. Vous l'aurez compris, un clic sur ce bouton vous permettra d'ajuster le tempo, sur une échelle de 0 à 100%, mais aussi de sélectionner le volume de chacun de ces 4 choix : Mélodie, musique de fond, basses et batterie.

Licence d'utilisation

Alors une fois générée et télécharger me direz-vous, que peut on faire de cette musique ? Est-elle réutilisable ?

La réponse est OUI, bien entendu. Mais uniquement sur les plans payants de l'outil. En revanche, les musiques générées gratuitement le sont uniquement pour agrémenter un média sonore ou video. Il n'est pas autorisé d'utiliser cette musique en tant que seule création d'oeuvre d'esprit. C'est subtil mais logique.
La page d'accueil de ce site explique sur 4 points, ce que l'on a le droit de faire ou pas avec la licence associée à la musique générée.

Page 1 sur 38