Catégorie : Trucs & Astuces

  • Corriger les dates de création, modification, et autres métadonnées EXIF avec exiftool

    Il s’agit d’un petit article pour montrer les commandes nécessaires à la correction de métadonnées de date avec exiftool.

    C’est particulièrement intéressant si vous avez téléchargé des fichiers depuis Google Photos, car ce dernier ne définit pas les bonnes métadonnées sur les fichiers. En effet, on se retrouve avec la date de l’export pour la date de création et de modification, ce qui n’aide pas certains gestionnaires pas toujours bien faits à ordonner par date comme on pourrait s’y attendre ; c’est le cas de la vue galerie d’images de pCloud, qui s’appuie sur la date de modification.

    Dans mon cas, j’ai des photos et vidéos prises depuis divers appareils, notamment des smartphones que j’ai utilisés sur une période d’une douzaine d’années. Il était donc nécessaire de trouver un moyen de corriger ces métadonnées de façon globale.

    Pour cela, il faut installer un outil qui s’appelle exiftool. C’est un outil en ligne de commande compatible linux, Windows et Mac OS. À noter qu’il existe des interfaces basées dessus et des portages (j’ai vu par exemple un portage Android), mais je n’ai pas testé.

    Ensuite, il y a deux commandes, une pour les photos, une pour les vidéos. Vous pouvez les lancer depuis le même dossier (c’est-à-dire, un dossier qui a des photos et des vidéos mélangés).

    exiftool -overwrite_original "-CreateDate<DateTimeOriginal" "-ModifyDate<DateTimeOriginal" "-FileModifyDate<DateTimeOriginal" "-FileCreateDate<DateTimeOriginal" -if "defined $DateTimeOriginal" -ext jpg -ext jpeg .
    exiftool -overwrite_original "-CreateDate<MediaCreateDate" "-ModifyDate<MediaCreateDate" "-FileModifyDate<MediaCreateDate" "-FileCreateDate<MediaCreateDate" -if "defined $MediaCreateDate" -ext mp4 -ext mov -ext ts -ext ls .

    Ces commandes lancent dans le répertoire courant des opérations en fonction des extensions de fichier. Pour les photos (ou plus globalement, des images), la commande prend le champ DateTimeOriginal (appelé « Prise de vue » dans Windows) des informations EXIF pour l’assigner à d’autres champs : CreateDate (EXIF), ModifyDate (EXIF), FileCreateDate (OS), FileModifyDate (OS). Pour les vidéos, cela prend en donnée source le champ MediaCreateDate (appelé « Date d’acquisition » dans Windows).

    À noter que pour pCloud, c’est FileModifyDate qui importe le plus pour le tri. Mais je pense que c’est plus propre que toutes les dates soient harmonisées.

    Aussi, si la donnée source n’existe pas, la commande saute le fichier.

    Avec cela, les métadonnées devraient être corrigées.

    Encore une dernière info, si vous utilisez pCloud, et possiblement d’autres services de stockage en ligne par synchronisation : vous pourriez avoir à effectuer la modification directement sur le système de fichiers virtuel, et pas sur une éventuelle copie hors-ligne. En effet, il se peut que l’outil de synchronisation fourni par le service de stockage ne prenne pas bien en compte les dates, et les réécrit au moment où c’est envoyé sur le serveur. C’est le cas de pCloud.

    En dernier recours, selon le service de stockage, il peut être utile de télécharger, appliquer la modification en local, supprimer du stockage en ligne, puis réuploader, pour que les dates de modification soient bien définies.

    Bonus : définir la date en se basant sur le nom du fichier

    Parfois, le nom du fichier contient la date qu’on veut assigner. On peut faire une extraction de la date et l’injecter dans exiftool.

    La commande qui suit est compatible avec Bash (testé sur Git Bash windows). (PowerShell n’est pas content avec les variables dollar ; c’est pourquoi je recommande Bash.) Veuillez noter que ce n’est pas la seule façon d’obtenir le même résultat ; exiftool est vraiment un outil versatile !

    for f in *.jpg *.png; do
      datetime="${f:0:19}"   # IMG_YYYYMMDD_HHMMSS
    
      exiftool -overwrite_original \
        -DateTimeOriginal="$datetime" \
        -CreateDate="$datetime" \
        -ModifyDate="$datetime" \
        -FileModifyDate="$datetime" \
        -FileCreateDate="$datetime" \
        -d "IMG_%Y%m%d_%H%M%S" \
        "$f"
    done
  • [Android] Remove « Couldn’t add widget » from the Overview Screen (Lollipop 5.1)

    Couldn't add widget removed
    Couldn’t add widget removed

    Enraged

    After having spent more than a day on the matter, I have finally figured out how to remove the Couldn’t add widget block in the Overview Screen. This is the block which appears in place of the Google search bar on top of the recent apps list after you have disabled the Google app.

    Step by step

    1. Open the Play Store.
    2. Install KISS Launcher.
    3. Enable the Google app.
    4. Update the Google app.
    5. Touch the Home button.
    6. Set the KISS Launcher as default launcher.
    7. Reboot in Safe Mode (the process may differ on your Android OS):
      1. press the power button,
      2. long touch on the Power Off button,
      3. touch OK.
    8. When the reboot is done, the Google bar should have returned in the Overview Screen.
      • On this step, the bar wasn’t interactable on my phone.
    9. Power off normally your device.
    10. Power on your device.
    11. When the reboot is done, the Google bar should still be in the Overview Screen.
    12. Go to Settings > Apps > ALL.
    13. Disable the Google app. Accept everything when it says it will uninstall updates and data.
    14. Touch the Home button.
    15. Wait a few seconds.
    16. Open the Overview Screen.
    17. Enjoy!

    Additional Notes

    • I have succeeded two times on a nearly fresh install of Android 5.1 (Lollipop) on a Moto E.
    • I have updated a lot of native apps until the internal storage was full (yes, on the 1st gen Moto E 4GB, you cannot have all the default apps up to date with the tiny internal storage space).
    • Please refer to your device manual for Safe Mode reboot.
    • A lot of websites and user feedback will tell you to just restart in Safe Mode to remove the bar. It did not do the trick on my phone for some reason.
    • I had to try a lot of possibilities so I don’t remember exactly what are the triggers for the bar removal. My guess is a combination of the KISS Launcher as default launcher app, a Google App up to date before disabling, and reboots between Safe Mode and normal mode, and maybe a full internal memory.
    • The only apps disabled when the bar removed itself after the disabling were:
      • Assist (by Motorola)
      • Motorola Alert
      • Motorola Migrate
      • Help (by Motorola)
      • Email (the default Android app)
    • The only apps enabled but not up to date were:
      • Google Play Books
      • Google Play Movies & TV
      • Google Play Music
      • Google Play Newsstand
      • Google Street View
      • Maps – Navigation & Transit
      • Motorola Camera
      • Motorola FM Radio
    • The remaining apps were up to date.
    • Third party apps installed from the Play Store:
      • Amaze File Manager
      • SuperSU
    • Third party apps installed from the SD Card includes:
    • I did not remove KISS Launcher afterwards because I like it. But feel free to change to another launcher. I guess it will work.
    • Pour les francophones, la méthode démontrée ci-dessus indique comment retirer le bloc avec le message « Impossible d’ajouter le widget » dans l’écran « Overview » qui affiche la liste des applications récentes (gestionnaire de tâches).
    • The step by step needs to be more accurate so I am wishing to get some feedback.
  • [LinkedIn] How to put an image preview for links to webpages

    Screenshot comparing between with open graph image and without
    Comparison between with open graph image and without

    Upset.

    I have just spent four hours to figure out how to put an image preview for URLs linking to custom web pages which you put on LinkedIn profile pages. You know, those links added as media.

    1. First, you have to add Open Graph meta tags to your website. Just put those meta tags as shown below in the <head> html tag:

      Don’t forget to modify content attributes value! I think LinkedIn only needs a few meta tags from what is in the example code but testing how LinkedIn crawls my website is just a pain in the ass.

    2. VERY IMPORTANT: It seems the LinkedIn crawler needs the webpage to have at least one <article> tag to work with. Or else, the crawler will crash and you will get this error message:
    3. Before adding your link to LinkedIn, check if open graph tags are properly set by following this link and log in: Open Graph Debugger. Facebook should find the Open Graph tags when you put your URL and click « Fetch new scrape information ». If not, check your code.
    4. Then, you can put your link on LinkedIn.

    If you want to make changes to your image, you will have to deal with the LinkedIn caching system. This system keeps the Open Graph data and associates it with the URL you provided on LinkedIn. So you will have to workaround this system by adding extra unused query string to use a new URL. For example, if the pointed page can be accessed at http://example.com, you can use those alternatives:

    Pretty complex, isn’t it? Okay, it’s time to close my 40 browser tabs and get some sleep now. ^^’

  • [Illustrator] Unwanted rasterized gradients in SVG Tiny 1.1+ export fix

    English version lower!

    Vous avez vu ce super titre en anglais ? Héhé, je me prépare pour le Canada, c’est dans très bientôt !

    Je suis tombé sur un bug d’Illustrator CS5 qui me prévient de la rastérisation des dégradés lors de l’export d’un objet, qui contient évidemment un dégradé, dans le format SVG Tiny 1.1+.

    Explications

    Ce bug intervient lorsqu’un objet avec un dégradé a été tourné avec l’outil de transformation. Pour corriger ce problème, il suffit de repasser tous les objets que vous avez tournés en mode couleur unie puis en dégradé. Et normalement, l’exporteur ne rasterise plus les dégradés !

    Here comes the english version!

    An english title calls for an english content, eh? 🙂

    I have had a bug with the SVG Tiny 1.1+ exporter which says the gradients will be rasterized on export. Tiny 1.1+ is supposed to support gradients, so why does it have happen?

    This is a bug which occurs when you rotate with the transformation tool an object which has a gradient fill. To circumvent this bug, you just have to switch the color fill to plain color and return to gradient fill on all your objects you have rotated. And normally, the exporter will not (hopefully) rasterize your gradients anymore!

  • Configuration de l’iPhone 3G pour la 3G et les MMS de Prixtel

    Configuration de l’iPhone 3G pour la 3G et les MMS de Prixtel


    Important : ces informations de configuration ne concernent pas les forfaits récents (datant de 2014 et suivants). Pour ces forfaits récents, les informations par défaut dans la puce SIM sont les bonnes.


    Jusqu’à présent, je n’avais pas besoin de la 3G. Et je n’ai toujours pas besoin de la 3G. « Mais pourquoi aurais-je besoin de le configurer », me diriez-vous ? À cette question, je vous répondrais que ce n’était qu’un effet collatéral d’une autre recherche, celle de la configuration de la réception et de l’envoi de MMS.

    Étonné

    La configuration du réseau MMS et 3G pour l’opérateur Prixtel ne fut pas de tout repos. Au terme de longues heures de recherches, d’impasses de tutoriels et autres inexactitudes, je me permets de vous apporter la solution tout en espérant que vous n’avez pas perdu trop de temps à chercher l’information.

    1. Ouvrez l’application Réglages.
    2. Naviguez vers Général > Réseau.
    3. Désactivez les options Activer la 3G et Données cellulaires si vous ne voulez pas entamer votre consommation Internet tout de suite.
    4. Naviguez dans Réseau de données cellulaires.
    5. Indiquez ces paramètres dans les champs du panneau :
      Données cellulaires

      Nom du point d’accès internet69
      Nom d’utilisateur
      Mot de passe

      MMS

      Nom du point d’accès mms69
      Nom d’utilisateur
      Mot de passe
      MMSC http://mms69
      Proxy MMS 10.143.156.12:8080
      Taille max. des MMS 614400
      MMS UA Prof URL
    6. Redémarrez l’iPhone 3G.
    7. Si quelqu’un vous a envoyé un MMS récemment — il y a quelques minutes tout au plus —, vous devriez le recevoir assez rapidement. Si vous ne le recevez pas, il faut probablement activer le Service MMS qui se situe dans Réglages > Messages.

    Ce qui est étonnant, c’est que pour recevoir les MMS sur mon iPhone 3G, il m’a fallu configurer la partie Données cellulaires alors que rien n’en indiquait le besoin.

  • T&A — Un site superbe pour vous donner une autre approche du CSS


    *UPDATE* 08 août 2011
    Edition : précision dans le dernier paragraphe que les enfants pouvaient être flottants ou pas.


    Je voulais vous présenter ce blog que j’ai découvert récemment : http://matthewjamestaylor.com/ . Il y a de nombreuses petites astuces pour régler vos problèmes de colonnes à hauteur visuelle égale ou de positionnement du footer en bas de la fenêtre, entre autres.

    Les ajouts dans le HTML sont relativement négligeables, surtout si c’est pour avoir une compatibilité ascendante, parfois jusqu’à IE5.5, et sans Javascript !

    Par exemple, je me suis inspiré de cet article pour créer mes colonnes à hauteur visuelle égale des pages d’articles du prochain site de Fuu-Doh! : http://matthewjamestaylor.com/blog/ultimate-multi-column-liquid-layouts-em-and-pixel-widths.

    Concernant ce blog, j’ai presque la même approche du design de site en largeur pleine. Cela me fait plaisir de savoir que des gens essaient de lutter contre la tentation de la facilité avec les largeurs fixes. 🙂

    Pour finir, voici l’enseignement principal que j’en ai tiré : un élément flottant prendra toujours la hauteur de ses enfants, qu’il soit flottant ou pas…

    ps : Non, mon blog n’est pas un bon exemple de ce que j’aime vraiment 😛

  • T&A — Bug de l’élément qui revient à la ligne alors que les largeurs définies en pourcentage de tous les éléments sont correctes (IE6)

    Bon, je me suis dit que je devrais être un peu plus bavard concernant mes astuces et recherches dans la programmation web. Et Virtools, peut-être aussi, mais pas tout de suite… sauf si vous êtes justement à la recherche d’une solution à un problème de Virtools, auquel cas, je me ferais un plaisir de vous répondre (gratuitement bien sûr).

    Je vais commencer par un petit bug étrange dans Internet Explorer 6 qui fait qu’un élément semble clignoter quand on redimensionne en largeur la fenêtre, alors qu’en fait, l’élément se balade entre sa bonne position et une position plus en bas de la page. Cela est dû, probablement, à un problème d’arrondi, surtout si le width est défini en pourcentage.

    Par exemple, width:50%; sur une fenêtre à largeur impaire, 351px par exemple, va donner une taille de 126px dans IE6 au lieu de 125.5px. Ce qui pousse l’élément flottant au-delà de la fenêtre, et donc le fait descendre dans la page.

    Après mes tests, j’ai deux colonnes, l’un à width:50%;, l’autre à width:49.9999%;. Et cela suffit pour que IE6 ne fasse plus chier à ce sujet.

    Évidemment, il va rester ce 0.0001% qui va se balader en trop on ne sait où. Mais vu que, dans mon cas, j’ai deux colonnes qui devaient être à 50% à la base (et donc ils prennent 100% de la largeur), cela fait que le prochain élément visuel dispose forcément de la propriété clear:both|left|right; pour annuler le flottement des éléments qui suivent.