TfeServer

Blog de tfe, Perl, Web et Libre...?

Blog

Icones systray absentes dans XFCE

Publié le 27/01/2015 dans Linux

Je laisse ici cette astuce que je viens de trouver, ca pourra peut-etre aider des personnes.

Si comme moi vous avez des icones absentes (Skype, inSync, etc...) dans la barre de XFCE, il faut tout simplement installer 'sni-qt'.

$ dpkg --add-architecture i386
$ apt-get update
$ apt-get install sni-qt:i386

Download video from magnovideo with Google Chrome

Publié le 15/06/2013 dans code

Je viens de créer un petit script pour Tampermonkey (ou greasemonkey si vous utilisez Firefox) qui permets de télécharger une vidéo directement depuis MagnoVideo sans attendre.

Le script est téléchargeable sur userscripts. Voilà le source:

// ==UserScript==
// @name		MagnoVideo Downloader
// @version		1.1
// @description	Allows you to download videos from MagnoVideo via the Download button at the upper right corner of the player
// @match		http://www.magnovideo.com/?v=*
// @copyright	2013 tfeserver
// @icon		http://www.magnovideo.com/templates_mv/images/favicon.ico
// ==/UserScript==

if(!document.querySelector('embed'))
{
    document.querySelector('.table-headings a').click()
}
else
{
    var  confUrl = document.querySelector('embed').getAttribute('flashvars').replace('config=','')
    console.log("Fetch conf: "+confUrl);
    
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = process;
    xhr.open("GET", confUrl, true);
    xhr.send();
}

function process()
{
    if (xhr.readyState == 4) {
        resp = xhr.responseText;
        
        var m = resp.match(/<storage_path>([^<]+)</);
        var host = m[1];
        
        var path = resp.match(/<first_frame>([^<]+)</); 
        path = path[1].replace(/http://[^/]+/,'').replace(/[^/]+/[^/]+$/,'');
        
        var m = resp.match(/<video_name>([^<]+)</);
        var videoname = m[1];
        
        var m = resp.match(/<movie_burst>([^<]+)</);
        var burst = m[1];
        
        var m = resp.match(/<burst_speed>([^<]+)</);
        var speed = m[1];
        
        var m = resp.match(/<ste>([^<]+)</);
        var ste = m[1];
        
        var dl= host+path+videoname+'?burst='+burst+'&u='+speed+'k&'+ste;
        
        var li = document.createElement('li');
        li.innerHTML='<a href="'+dl+'" download="'+document.title+'.avi">DOWNLOAD</a>'
        document.querySelector('#navigation  .shell ul').appendChild(li);
  }
}

Introduction à Opengraph, OpenTweet et Schemas

Publié le 26/10/2012 dans code

Intro

Opengraph/Opentweet/Schemas est un ensemble de balises et attributs HTML, utilisés entre autre par les réseaux sociaux, servant à identifier le contenu d'une page.

Grâce à ces informations, on peut identifier facilement le titre de la page, la description, l'auteur, ...

Utilisation

Lorsque l'on poste une url sur un réseau social, celui-ci va récupérer le code html de la page, et analyser les tags présents.

Par exemple, si l'on poste l'url http://eu.battle.net/d3/fr/ sur facebook, les informations relatives à la page web seront affichés:

d3

<meta property="og:site_name" content="Diablo III" />
<meta property="og:title" content="Diablo III" />
<meta property="og:image" content="http://media.blizzard.com/battle.net/logos/og-d3.png" />
<meta property="og:url" content="http://eu.battle.net/d3/fr/" />
<meta property="og:type" content="website" />
<meta property="og:locale" content="fr_FR" />
<meta property="fb:admins" content="470332842321,433163104416"/>

Microdata schema.org

Les microdata schema.org nous permettent de définir la définition de chaque balise: titre, image, lien, etc...

Pour définir les informations importantes de notre page web, les attributs itemscope et itemprop sont utilisés:

  • itemscope: définit le début d'un groupe d'éléments (itemscope)
  • itemprop="name": indique que le contenu de cette balise est le titre de cet élément
  • itemprop="url": indique le lien spécifique à l'article en question
  • itemprop="description"
  • ...

Vous trouverez plus d'informations sur les microschemas sur http://schema.org/docs/gs.html.

Google propose une page de test, permettant de visualiser l'information extraite lors d'une visite de son bot.

Si vous analysez le code source du blog:/p>

<div class="item" itemscope >
<h3><a href="/blog/introduction_opengraph_twitgraph_et_schemas.html" itemprop="name" title="Introduction à Opengraph, OpenTweet et Schemas">Introduction à Opengraph, OpenTweet et Schemas</a></h3>
<div class="item_content" itemprop="text">
...
</div>

Vous trouverez des itemscope et itemprop, qui donnent le résultat suivant:

Facebook

Comme vu avec l'exemple sur l'url de Diablo3, Facebook se base sur les meta opengraph pour récupérer les données du site.

Les spécifications spécifiques à Facebook sont disponibles sur http://ogp.me/.

  • og:type, qui permets de savoir dans quelle catégorie classer l'url (article, book, profile, etc...).
  • og:title, Titre de la page
  • og:description, Description brève
  • og:url, Lien vers l'article (en général il s'agit de la même url)
  • og:image, Image descriptive de la page
  • og:site_name, Nom du site
  • og:video, og:audio, ...

Par exemple, pour une vidéo youtube quelconque, on trouvera les métas:

    <meta property="og:video" content="http://www.youtube.com/v/lien?version=3&autohide=1">
      <meta property="og:video:type" content="application/x-shockwave-flash">
      <meta property="og:video:width" content="1280">
      <meta property="og:video:height" content="720">

Ce qui donnera un lien vers une vidéo lisible directement sur le site:

facebook css

Twitter

Les spécification spécifiques à Twitter sont disponibles sur https://dev.twitter.com/docs/cards.

  • twitter:title : Titre
  • twitter:url : Url
  • twitter:card : Information générale
  • twitter:description : Description
  • twitter:image : Image du site
  • twitter:site : @username twitter
  • twitter:creator : @username Créteur de l'article
  • twitter:creator:id : username twitter id
  • twitter:player : Url du player flash
  • twitter:player:width : Taille X
  • twitter:player:height : Taille Y
  • twitter:player:stream : Flux de la vidéo

Si l'on prends le même exemple avec la vidéo youtube, des métas twitter sont également envoyés:

<meta name="twitter:card" value="player">
    <meta name="twitter:site" value="@youtube">
      <meta name="twitter:player" value="https://www.youtube.com/embed/33MNKCiTgFY">
      <meta property="twitter:player:width" content="1280">
      <meta property="twitter:player:height" content="720">

Ce qui donne un rendu:

Twiter

Hard link fichiers identique

Publié le 12/09/2012 dans Linux

Script du jour:

Je voulais récupérer de l'espace disque en faisant un "hard link" sur les fichiers ayant une même somme de hashage md5.
Cela peut être très utile si vous avez des dossiers contenant des images en double par exemple...

$ find . -type f -exec md5sum {} \; | sort |perl -ape 'if($F[0] eq $prev){\
print "CREATE HARDLINK BETWEEN \"$file\" and \"".join(" ",@F[1..@F-1])."\"\n"; \
unlink $file; link @F[1..@F-1], $file;} $prev=$F[0];$file=join(" ",@F[1..@F-1]); $_=""'

Le script utilise find pour lister les fichiers (avec sous-dossiers) et leur somme de hashage md5.

Le résultat est envoyé à sort: il se chargera de regrouper les doublons. perl va alors supprimer un des fichiers, pour le remplacer par un hardlink de l'autre fichier.

Résultat de l'éxécution du script:

CREATE HARDLINK  "./board-848/board-848241.jpg" and "./board-850/board-850958-30.jpg"
CREATE HARDLINK  "./board-850/board-850958-30.jpg" and "./board-852/board-852049-30.jpg"
CREATE HARDLINK  "./board-852/board-852049-30.jpg" and "./board-845/board-845658-8.jpg"
CREATE HARDLINK  "./board-845/board-845658-8.jpg" and "./board-859/board-859852-69.jpg"
CREATE HARDLINK  "./board-859/board-859852-69.jpg" and "./board-854/board-854166-84.jpg"
CREATE HARDLINK  "./board-854/board-854166-84.jpg" and "./board-850/board-850958-80.jpg"
CREATE HARDLINK  "./board-850/board-850958-80.jpg" and "./board-852/board-852049-80.jpg"
CREATE HARDLINK  "./board-852/board-852049-80.jpg" and "./board-854/board-854165-17.jpg"
CREATE HARDLINK  "./board-854/board-854165-17.jpg" and "./board-838/board-838275-2.jpg"
CREATE HARDLINK  "./board-838/board-838275-2.jpg" and "./board-856/board-856927-43.jpg"

Find last edited files in directory (linux)

Publié le 08/06/2012 dans Linux

Little tip of the day, to find the last 100 files edited in a directory (and recursively subdirectory):

$ find . -printf "%T@ (%Tc) : %p\n"|sort -n| tail -100

It will display the list of files, with 3 fields:

  • Modified time (in seconds)
  • Modified time in human readable format
  • The file path+name