Question:
Trouver comment IMDB crée ses codes d'image
Alex Beals
2014-08-26 08:52:39 UTC
view on stackexchange narkive permalink

Lorsque vous regardez une page d'image IMDB, l'image de l'affiche du film a une URL de la forme suivante:

http://ia.media-imdb.com/images/M/MV5BMTIxOTY1NjUyN15BMl5BanBnXkFtZTcwMjMxMDk1MQ @@ ._ V1_SX214_AL_.jpg

ou plus généralement:

http://ia.media-imdb.com/images/M/<alphaNumeric>@@ . \ _ V1 \ _SX214 \ _AL_.jpg

Je veux savoir comment cet alphaNumeric est généré, probablement à partir du titre du film ou du code IMDB.

Deux exemples (bien que beaucoup d'autres puissent être trouvés en naviguant sur IMDB) sont pour Kung Fu Panda:

J'ai fait des progrès, car l'AlphaNumeric est encodé en Base64 (le premier devient 1 ^ A1219656527 ^ A2 ^ Ajpg ^ Ame7023) au moins, je suis assez sûr basé sur le texte «jpg». Cependant, je ne sais pas comment les nombres après le premier ^ A et le dernier ^ Ame sont générés. Si quelqu'un peut trouver une relation entre les films ou leurs codes IMDB et ces chiffres, ce serait fantastique!

`1219656527` ressemble à un horodatage unix pour la date` 2008-08-25 11: 28: 47`. Aucune idée pour le reste.
@Celelibi malheureusement, si vous effectuez le même processus pour le second, vous obtenez la date «2029-08-15 8: 01: 16». Ce qui ne semble pas aussi probable.
en effet, 2029 est un peu loin. Aucune idée alors.
Un répondre:
Maurice
2015-07-01 09:38:11 UTC
view on stackexchange narkive permalink

J'ai essayé de décoder la chaîne "AlphaNumeric" pour chaque film du Top 250 Chart.

On dirait qu'ils ont remplacé le symbole de remplissage (ils utilisent '@' au lieu de '=') mais, une fois que j'ai restauré le remplissage, chaque chaîne décodée avait le même format que vous avez signalé auparavant (j'utiliserai des virgules, au lieu de «^ A», comme séparateurs de champs):

  1, [valeur numérique], 2, jpg, moi + [valeur numérique]  

Je n'ai pas réussi à identifier les relations entre ces champs numériques et les ID de film, mais voici un code pour ceux qui souhaitent essayer:

  import requestsimport refrom lxml.etree import HTMLfrom matplotlib import pyplot as pltimport numpyrequest = requests.get ('http://www.imdb.com/chart/top?ref_=nv_ch_250_4') tree = Chemin HTML (request.text) = './/*[@id="main" /div / div [2] / table / tbody / tr / td [@ class = "posterColumn"] / a'data = numpy.zeros (shape = (250, 3)) row = 0for td dans tree.findall (chemin): movie_id = re.findall ('tt (\ d *) /', td.attrib ['href']) img = re.findall ('M /(.*)\._ V', td.find ('./ img '). attrib [' src ']) img_decoded = img.pop (). replace (' @ ',' = '). decode (' base64 ') img_ field_1 = re.findall ('\ ^ A (\ d *) \ ^ A', img_decoded) img_field_2 = re.findall ('me (\ d *)', img_decoded) data [row] = movie_id.pop (), img_field_1.pop (), img_field_2.pop () row + = 1fig, (ax1, ax2) = plt.subplots (2, 1, sharex = True) ax1.scatter (data [:, 0], data [:, 1 ]) # movie_id contre img_field_1ax2.scatter (données [:, 0], données [:, 2]) # movie_id contre img_field_2ax1.xaxis.get_major_formatter (). set_powerlimits ((0, 1))  

Voici un petit graphique montrant à la fois les champs décodés et les ID de film:

Decoded fields vs. Movie IDs



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...