Api Xml

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Salve a tutti, rieccomi qui :)

Volevo inserire all'interno del mio sito un palinsesto tv, in particolare cosa trasmettono in questo momento i canali rai e mediaset.

Mi spiego: vorrie fare una tabella così

canale ora programma
rai1 17:00 20:00 L'eredità

Come posso fare?

Ho cercato delle api xml tipo quelle di yahoo wether (google le ha messe a pagamento :O ) ma non ho trovato nulla.

Ho trovato solo i palinsesti ufficiali.

Se qualcuno sa come fare ad estrapolarli da li può farmi un esempio?
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
C'è comunque un catalogo. Quindi basta utilizzare sempre la stessa tecnica.
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
È questo che mi piace leggere :)

Ti piacerà un pò meno quello che scriverò adesso =)

allora visto che quei palinsesti erano troppo complessi (troppe dipendenze da gestire) ho trovato per mia fortuna questo
tv.zam.it/gadget/gadget_tv.php

da qui credo sia un pò più facile utilizzare la tecnica che mi hai consigliato. Ho alcune domande però

Allora cos'ho fatto:
Ho preparato il file in php in questo modo
PHP:
<?php
$uri = 'http://tv.zam.it/gadget/gadget_tv.php';

$get = file_get_contents($uri);

$rai1 = strpos($get, '<td class="gen" valign="top">');   
//identifico la prima occorrenza di apertura del tag form

$pos0 = strpos($get, '</td>', $rai1); 
//identifico la prima occorrenza di chiusura del tag form a partire da rai1

$text = substr($get,$rai1,$pos0-$rai1+5); 
//estraggo il codice html ivi contenuto
//+7 per acquisire anche il tag </form>

echo $text; // visualizzo il codice html
?>
Ed effettivamente riesco a visualizzare l'ora della prima riga (rai 1 per intenderci) ma non visualizzo cosa trasmette il canale, per farlo devo duplicare il codice. Da qui nasce spontaneo chiedere come fare per "richiamare" più tag dalla pagina delle risorse.

Altro problema, poichè i tag si ripetono sempre con lo stesso nome non ho idea di come fare a scrivere in php di recuperare il 2 tag , la struttura della pagina è così:

HTML:
<table cellspacing="3" cellpadding="3">
<tbody>
<tr>
<td class="gen" valign="top">
<b>17:15</b>
</td>
<td valign="top" align="center">
<a title="LCN: 1" href="http://tv.zam.it/gadget/gadget_tv.php?canale=10&data=2013-02-06&prefsez=&bg=&catc=&gen=&agen=">
<img border="0" alt="Rai 1" src="/canali/raiuno.png">
</a>
</td>
<td valign="top">
<span ;="" style="color:006600">Attualità</span>
<br>
<span class="gen">LA VITA IN DIRETTA</span>
</td>
</tr>
<tr>
<td class="gen" valign="top">
<b>17:00</b>
</td>


<td valign="top" align="center">
<a title="LCN: 2" href="http://tv.zam.it/gadget/gadget_tv.php?canale=21&data=2013-02-06&prefsez=&bg=&catc=&gen=&agen=">
<img border="0" alt="Rai 2" src="/canali/raidue.png">
</a>
</td>
<td valign="top">
<span ;="" style="color:006600">Telefilm</span>
<span ;="" style="color:006600"> - Thriller,</span>
<br>
</td>
</tr>

Come puoi ben vedere i tag per ogni canale sono uguali, quindi non so come fare per estrapolare ogni singolo canale :\
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
La prima soluzione che mi è venuta in mente è quella di togliere ciò che hai selezionato da tutto il resto.
Allora tu prendi ciò che ti serve (come già hai fatto) e poi fai in modo di rimuoverlo dal testo totale (magari selezionando dall'inizio a <td...> e poi da </td> in poi e li unisci). Sicuramente ci sarà un metodo migliore per farlo ma intanto prova questo. Se mi viene in mente ti faccio sapere.
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
La prima soluzione che mi è venuta in mente è quella di togliere ciò che hai selezionato da tutto il resto.
Allora tu prendi ciò che ti serve (come già hai fatto) e poi fai in modo di rimuoverlo dal testo totale (magari selezionando dall'inizio a <td...> e poi da </td> in poi e li unisci). Sicuramente ci sarà un metodo migliore per farlo ma intanto prova questo. Se mi viene in mente ti faccio sapere.

No mi spiace non ne ho capito la logica. Ho riletto varie volte quello che hai scritto ma non ho compreso ciò che intendi.

Quello che ho fatto fino ad ora va bene giusto? Ora non so come inserire di fianco all'orario la trasmissione corrispondente.
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Prova così:
PHP:
<?php 
$uri = 'http://tv.zam.it/gadget/gadget_tv.php'; 

$get = file_get_contents($uri); 

$rai1 = strpos($get, '<td class="gen" valign="top">');     

$pos1 = strpos($get, '</td>', $rai1);  

$rai2 = strpos($get, '<span class="gen">');
$pos2 = strpos($get, '</span>', $rai2);

$ora = substr($get,$rai1,$pos1-$rai1+5); 
$trasmissione = substr($get,$rai1,$pos2-$rai2+5);

echo $ora;
echo $trasmissione; 
?>
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Prova così:
PHP:
<?php 
$uri = 'http://tv.zam.it/gadget/gadget_tv.php'; 

$get = file_get_contents($uri); 

$rai1 = strpos($get, '<td class="gen" valign="top">');     

$pos1 = strpos($get, '</td>', $rai1);  

$rai2 = strpos($get, '<span class="gen">');
$pos2 = strpos($get, '</span>', $rai2);

$ora = substr($get,$rai1,$pos1-$rai1+5); 
$trasmissione = substr($get,$rai1,$pos2-$rai2+5);

echo $ora;
echo $trasmissione; 
?>

Nulla mi duplica 2 volte l'ora. Ho provato a modificarlo così e fa la stessa cosa:

Codice:
<?php  
$uri = 'http://tv.zam.it/gadget/gadget_tv.php';  

$get = file_get_contents($uri);  

$rai1 = strpos($get, '<td class="gen" valign="top">');      

$pos1 = strpos($get, '</td>', $rai1);   

$rai2 = strpos($get, '<td valign="top">'); 
$pos2 = strpos($get, '</td>', $rai2); 

$ora = substr($get,$rai1,$pos1-$rai1+5);  

$trasmissione = substr($get,$rai1,$pos2-$rai2+5); 

echo $ora; 
echo $trasmissione;  
?>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Si scusa modifica questa riga:
PHP:
$trasmissione = substr($get,$rai1,$pos2-$rai2+5);
Con questa:
PHP:
$trasmissione = substr($get,$rai2,$pos2-$rai2+5);
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Si scusa modifica questa riga:
PHP:
$trasmissione = substr($get,$rai1,$pos2-$rai2+5);
Con questa:
PHP:
$trasmissione = substr($get,$rai2,$pos2-$rai2+5);

Così funziona, ora non mi rimane che capire come estrapolare tutti gli altri canali e manipolare i dati. A tal riguardo è possibile definire l'output dei dati? Mi spiego: ad es vorrei che tali dati fossero inseriti in una tabella o in un file xml. Mi viene da pensare che potrei costruire la tabella html e inserire gli echo nelle celle, corretto? (tanto posso aprire e chiudere il php quanto mi pare)
Invece se volessi generare un xml?
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Per prenderli tutti basta fare un ciclo sfruttando i puntatori che già hai.
Si puoi fare in entrambi i modi. Ci sono molti articolo su come creare file XML da php. Il problema è prima estraporarli tutti :)
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Per prenderli tutti basta fare un ciclo sfruttando i puntatori che già hai.
Si puoi fare in entrambi i modi. Ci sono molti articolo su come creare file XML da php. Il problema è prima estraporarli tutti :)

Ok, non avevo pensato ai cicli adesso provo :p menomale che mi hai dato l'idea xD non ci avrei mai pensato :eek:

PS. che telefonino hai?
 

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
IPhone 4S 32Gb, perché?

Ah, sei uno di quelli con l'Iphogne >,> XD

No è che stavo creando un app per android per vedere radio e tv compresi canali mediaset rai dmax cielo focus etc.... mi serviva qualche "alpha tester" :(

Tornando al problema del ciclo ho fatto una cosa del genere ma credo di aver pasticciato (credo che la logica non vada per nulla bene e il ciclo va in loop)

PHP:
<?php  
$uri = 'http://tv.zam.it/gadget/gadget_tv.php';  

$get = file_get_contents($uri);  

$rai1ora = strpos($get, '<td class="gen" valign="top">');      
$pos1 = strpos($get, '</td>', $rai1ora);   

$rai1prog = strpos($get, '<span class="gen">'); 
$pos2 = strpos($get, '</span>', $rai1prog); 

$ora = substr($get,$rai1ora,$pos1-$rai1ora+5);  
$trasmissione = substr($get,$rai1prog,$pos2-$rai1prog+5);  

for($k=$get; $k <= count($rai1ora, $pos1); $k++){

$tutteleore = array($k);

}

foreach($tutteleore as $orario)
{
  echo $orario . "<br/>";
}

 
?>

La logica era di creare un conteggio di ogni stringa (in questo caso per le ore)
PHP:
$rai1ora = strpos($get, '<td class="gen" valign="top">');      
$pos1 = strpos($get, '</td>', $rai1ora);

trovata nella pagina importata. Assegnare ad ogni stringa trovata un valore numerico racchiudendole in un array, stampare gli array.

Fare lo stesso procedimento anche per le trasmissioni.

Poi una volta stampato tutto "assemblarli" con la manipolazione dei dati in tabella (o file xml poi vedo).
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Stored procedure import xml/json web API MySQL 0
catellostefano Api xml XML 4
catellostefano CPanel XML Api Web Server 0
Rikk73 [Vendo/Offro] Realizzazione applicazioni web e/o API rest Offerte e Richieste di Lavoro e/o Collaborazione 0
Daniele_Carrara Amazon SP-API PHP 0
L Api Google - kml Javascript 1
M Google API Vision PHP 5
L java + Api di google Javascript 1
S Leggere dati da API e visualizzarli PHP 0
M user agent per il download di api PHP 0
motleyrulez Chiamata Rest Api durante Redirect PHP 1
bubino8 Consigli e aiuti integrazione API Programmazione 8
michele81 [WordPress] problemi plug meteo api key WordPress 4
W Api facebook o api Instagram (v1(? Ajax 0
A [PHP] Rest Api PHP 1
E [PHP] rest api PHP 3
W [A PAGAMENTO] Programmatore per sviluppare API REST in C# Offerte e Richieste di Lavoro e/o Collaborazione 1
W [C#] Api RESTFul server/client con cifratura .NET Framework 0
W [C#] Sicurezza Client/Server - SOAP o RESTFull API .NET Framework 0
M Creare un lettore audio con le API di Soundcloud Programmazione 0
T Api google maps Sviluppo app per Android 1
M [PHP] API con metodo POST PHP 0
D [Javascript] Automazione Wordpress CF7 per Teamup Calendar (tramite api) Javascript 1
M [PHP] GoDaddy API PHP 2
V Api di twitter cambiata Ajax 0
C PHP e API PHP 0
A API per app PHP 1
M Aiuto con script di ricerca video youtube data api v3 Javascript 1
M Installazione libreria Zend GData per google Api PHP 0
L Funzione per API HTML5 Javascript 0
L API Geolocation Javascript 4
Z hosting gratuiti e problemi con web api Hosting 1
A API Hotspot nativo android Sviluppo app per Android 0
S Db access, controllo percorso chilometrico con api maps. MS Access 0
J Youtube api per progetto per un museo Javascript 0
K App che utilizzi le api di google maps Sviluppo app per Android 1
A Semplice applicazione con le facebook api PHP 1
S Inserimento API key Singring su CSM Wordpress PHP 0
C Amazon API: problemi con signature PHP 0
ivarello Google API Javascript 2
A Google maps API v2 in app Android Sviluppo app per Android 2
P Api imdb PHP 0
S Creare Sistema di API Request e Response libero e protetto PHP 7
M Api per gestione video youtube in joomla 3.2 Joomla 0
J Twitter API nuova ver 1.1 PHP 0
K Google Scholar api SEO e Posizionamento 0
L Google api v3 geolocalizzazione problemini. PHP 2
G Paginazione php utilizzando le api di careerjet PHP 0
G Paginazione php utilizzando le api di careerjet WordPress 1
A problema api youtube Social Media Marketing 5

Discussioni simili