Domanda:
Scoprire come IMDB crea i suoi codici immagine
Alex Beals
2014-08-26 08:52:39 UTC
view on stackexchange narkive permalink

Quando guardi una qualsiasi pagina di immagini IMDB, l'immagine del poster del film ha un URL di questo modulo:

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

o più in generale:

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

Voglio sapere come viene generato quel valore alfanumerico, molto probabilmente dal titolo del film o dal codice IMDB.

Due esempi (anche se molti altri possono essere trovati sfogliando IMDB) sono per Kung Fu Panda:

Ho fatto dei progressi, visto che AlphaNumeric è codificato in Base64 (il primo diventa 1 ^ A1219656527 ^ A2 ^ A1095 ^ Ame7023), almeno sono abbastanza sicuro basato sul testo "jpg". Tuttavia, non sono sicuro di come vengono generati i numeri dopo il primo ^ A e l'ultimo ^ Ame. Se qualcuno riesce a trovare una relazione tra i film oi loro codici IMDB e quei numeri, sarebbe fantastico!

"1219656527" ha l'aspetto di un timestamp unix per la data "2008-08-25 11:28:47". Nessuna idea per il resto.
@Celelibi sfortunatamente, se esegui lo stesso processo per il secondo, ottieni la data `2029-08-15 8: 01: 16`. Il che non sembra così probabile.
in effetti, il 2029 è un po 'lontano. Nessuna idea allora.
Una risposta:
Maurice
2015-07-01 09:38:11 UTC
view on stackexchange narkive permalink

Ho provato a decodificare la stringa "AlphaNumeric" per ogni film nella Top 250 Chart.

Sembra che abbiano sostituito il simbolo di riempimento (usano "@" invece di "=") ma, una volta ripristinato il riempimento, ogni stringa decodificata aveva lo stesso formato che hai riportato prima (userò virgole, invece di "^ A", come separatori di campo):

  1, [valore numerico], 2, jpg, me + [valore numerico]  

Non sono riuscito a identificare alcuna relazione tra questi campi numerici e gli ID del film, ma ecco del codice per coloro che desiderano provare:

  import requestimport 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 = HTML (request.text) path = './/*[@id="main"”/div / div [2] / table / tbody / tr / td [@ class = "posterColumn"] / a'data = numpy.zeros (shape = (250, 3)) row = 0for td in tree.findall (path): 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 vs. img_field_1ax2.scatter (data [:, 0], data [:, 2]) # movie_id vs. img_field_2ax1.xaxis.get_major_formatter (). set_powerlimits ((0, 1))  

Ecco una piccola trama che mostra sia i campi decodificati che gli ID film:

Decoded fields vs. Movie IDs



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...