L’une des fonctions d’un Tweet consiste à signaler une publication sur le Web ou un autre média social au moyen d’une URL. Cette fonctionnalité repose sur le principe originel de Twitter d’assurer la diffusion de cours messages écrits. Une URL, n’étant rien d’autre qu’une chaîne de caractère, aucun mécanisme additionnel n’a été nécessaire pour répondre à ce besoin de communication qui s’est installé naturellement. Cependant, la longueur d’une URL pouvant être importante, l’utilisation d’un service de réduction d’URL s’est imposé pour ne pas trop entamer la réserve des 140 caractères historiques.
Le principe d’un service de réduction d’URL s’est imposé dès le début des années 2000 afin de faciliter l’écriture des posts dans les forums. La conception proposée par Kevin Gilbertson (TinyURL.com) repose sur la mise en oeuvre d’une fonction de hashage supportée par un service tiers, qui assure une traduction univoque d’une forme longue dans une forme courte et réciproquement. Afin d’optimiser la taille de l’URL, les noms de domaine choisis pour ces services sont eux-mêmes très courts:
La liste (non exhaustive) des services utilisés dans le projet: ['t.co','lnkd.in','db.tt','qr.ae','adf.ly','goo.gl','bitly.com','cur.lv','ow.ly','ity.im','q.gs','is.gd','po.st','bc.vc','u.to','j.mp','cutt.us','u.bb','x.co','qr.net','1url.com','v.gd','tr.im','bit.ly','buff.ly','qoo.ly','znia.ly','weav.pw','snip.ly','hubs.ly','ift.tt','dld.bz','wu.to','cnet.co','dlvr.it','bit.do']
Il est a noter que Twitter dispose de son propre service de réduction d’URL (t.co) mais que celui-ci n’est pas exclusif. Sur le principe, il est tout à fait possible (et attesté) qu’au cours de sa diffusion, une URL soit réduite plusieurs fois suivant différents services. Dans ce cas, la forme originelle se retrouve par rebonds successifs.
Dans la représentation du Tweet délivrée par les API de Twitter, les URL du message sont regroupées avec d’autres entités remarquables. On trouve ainsi, à différents niveaux d’imbrication ( retweeted-status, extended_Tweet, quoted_status), des listes de structures de données d’URL.
La distribution des URL diffusées dans ces différents niveaux d’imbrication, n’est pas évidente à comprendre. Visiblement plusieurs arrangements sont possibles (attesté). Par prudence, il est préférable de balayer systématiquement toutes ces structures en filtrant les éventuels doublons.
Dans la structure de données de l’URL, L’attribut ‘expanded_url’ est susceptible de contenir la version expansée de ‘url’ si celle-ci est raccourcie. Mais cela n’est pas toujours le cas. Il s’avère donc nécessaire de procéder à l’expansion des URL condensées.
URL = {'url': <string>, 'expanded_url': <string>, 'display_url':<string>, 'indices': [<2elements>]}
Pour expanser une URL, à partir de sa forme réduite il faut requérir le serveur associé au domaine, lui soumettre l’URL et récupérer la réponse du service. Si la réponse est correcte, on dispose de la forme étendue… si celle-ci n’est pas elle-même condensée (récursion).
Ainsi, pour chaque Tweet, nous sommes amenés à considérer les deux formes réduite et étendue d’une URL : la forme réduite a une fonction de traceur pour les différentes rediffusions, alors que la forme expansée assure l’unicité de la référence. Cela a comme conséquence la mise en place d’un ensemble de traitements préalables à l’analyse des URL tweetées.
Partant d’une collection exhaustive des URL associées à chacun des tweets enregistrés, on construit une collection distincte d’URL expansées. Lors de la construction de cette collection, on agrège les occurrences identiques afin de préserver l’unicité des enregistrements.