Weather Feeds, XML Parser

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
Insurer
Δημοσιεύσεις: 390
Εγγραφή: 13 Απρ 2009 21:40
Τοποθεσία: Ακροκεραύνεια

Weather Feeds, XML Parser

Δημοσίευση από Insurer » 09 Ιούλ 2012 14:48

Εχθές ψάχνοντας για κάποιο site με προγνώσεις καιρού έπεσα επάνω σε ένα που δίνει δωρεάν feeds, το http://www.worldweatheronline.com. Πήρα το API key, και βρήκα τον τρόπο για το get πχ. για Αθήνα http://free.worldweatheronline.com/feed ... ΧΧΧΧΧΧΧΧΧΧ . Το θέμα είναι πως αυτό μπορώ να το βάλω στην σελίδα μου, κάπου διάβασα πως το κάνεις με xml parser αλλά δεν κατάλαβα και πολλά. Υπάρχει κάποιος που έχει ασχοληθεί με το θέμα ? Πώς θα μπορούσα να προβάλω τα feeds στην σελίδα μου?
Ευχαριστώ

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Weather Feeds, XML Parser

Δημοσίευση από Rapid-eraser » 09 Ιούλ 2012 16:16

Το api τους έχει δυνατότητα να σου δώσει feed σε μορφή JSON που είναι πιο διαχειρίσημη. Κάνεις στα data ένα json_decode και τα παίρνεις σε μορφή PHP array.

http://free.worldweatheronline.com/feed ... key=XXXXXX

Θα σου δώσει ένα output τύπου :

Κώδικας: Επιλογή όλων

{ "data": { "current_condition": [ {"cloudcover": "25", "humidity": "39", "observation_time": "12:42 PM", "precipMM": "0.0", "pressure": "1010", "temp_C": "33", "temp_F": "91", "visibility": "10", "weatherCode": "116",  "weatherDesc": [ {"value": "Partly Cloudy" } ],  "weatherIconUrl": [ {"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0002_sunny_intervals.png" } ], "winddir16Point": "NE", "winddirDegree": "40", "windspeedKmph": "30", "windspeedMiles": "19" } ],  "request": [ {"query": "Athens, Greece", "type": "City" } ],  "weather": [ {"date": "2012-07-09", "precipMM": "0.0", "tempMaxC": "34", "tempMaxF": "93", "tempMinC": "23", "tempMinF": "74", "weatherCode": "113",  "weatherDesc": [ {"value": "Sunny" } ],  "weatherIconUrl": [ {"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png" } ], "winddir16Point": "NNE", "winddirDegree": "14", "winddirection": "NNE", "windspeedKmph": "24", "windspeedMiles": "15" }, {"date": "2012-07-10", "precipMM": "0.0", "tempMaxC": "35", "tempMaxF": "95", "tempMinC": "23", "tempMinF": "74", "weatherCode": "113",  "weatherDesc": [ {"value": "Sunny" } ],  "weatherIconUrl": [ {"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png" } ], "winddir16Point": "NNE", "winddirDegree": "22", "winddirection": "NNE", "windspeedKmph": "17", "windspeedMiles": "11" } ] }}

Αν πάλι θες να σηνεχίσεις στον δρόμο του XML θα χρειαστείς κάτι τύπου : simplexml
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
Insurer
Δημοσιεύσεις: 390
Εγγραφή: 13 Απρ 2009 21:40
Τοποθεσία: Ακροκεραύνεια

Weather Feeds, XML Parser

Δημοσίευση από Insurer » 09 Ιούλ 2012 16:32

βασικά έχει ένα ωραίο εργαλείο http://www.worldweatheronline.com/feed-generater.aspx το έκανα json και τώρα έχουμε σε μορφή json όπως μου είπες http://free.worldweatheronline.com/feed ... ΧΧΧΧΧΧΧΧΧΧ
και δείχνει και το output πώς το βάζω να εμφανιστεί στην σελίδα μου?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6230
Εγγραφή: 30 Νοέμ 2004 03:09

Weather Feeds, XML Parser

Δημοσίευση από fafos » 09 Ιούλ 2012 16:37

Gia arxh prepei na gnorizeis oti to parse ton dedomenon exei kapoia oria.. to sygkekrimeno exei 500 queries ana ora alla to poly kathe 15 lepta na kaleis to xml ths idias polhs.. Auto shmainei oti prepei na ftiaxeis ena cron job to opoio tha sozei to xml ston server sou kathe XX lepta (opou XX pano apo 15).. me liga logia tha kaleis ena arxeio to opio tha sozei me curl h allo tropo to/ta xml se kapoion fakelo tou site sou..

ypothetoume oti sozeis ta dedomena ths athinas ston fakelo "weatherXml" kai me onoma "athens.xml"...

me thn xrhsh ths simplexml arxizeis na pairneis ta dedomena:

Κώδικας: Επιλογή όλων

	//pairnoume ta dedomena tou arxeiou
	$weatherxml = file_get_contents( 'weatherXml/athens.xml' );

	//ta pairnei h simple xml
	$weaXml = new SimpleXMLElement( $weatherxml );

To sygkekrimeno xml dinei tis synthikes pou epikratoun tora kai provlepsh 2 hmeron (shmera kai aurio)...

Kairikes synthikes tora:

Κώδικας: Επιλογή όλων

	//**** synthikes tora***//

	//ora enhmeroshs
	$weaTime = $weaXml->current_condition->observation_time;

	//thermokrasia C
	$weaTempC = $weaXml->current_condition->temp_C;

	//thermokrasia F
	$weaTempF = $weaXml->current_condition->temp_F;

	//Eikona
	$weaIcon = $weaXml->current_condition->weatherIconUrl;

	//Synthikes se keimeno
	$weaText = $weaXml->current_condition->weatherDesc;

	//taxythta anemou se milia
	$weaWindSpeedM = $weaXml->current_condition->windspeedMiles;

	//taxythta anemou se xiliometra
	$weaWindSpeedK = $weaXml->current_condition->windspeedKmph;

	//dieuthysnh anemou
	$weaWindDir = $weaXml->current_condition->winddir16Point;

	//Vroxoptosh se mm
	$weaPrec = $weaXml->current_condition->precipMM;

	//Ygrasia %
	$weaHum = $weaXml->current_condition->humidity;

	//Oratothta se xlm
	$weaVis = $weaXml->current_condition->visibility;

	//Piesh (Varometriko) se milibar
	$weaPres = $weaXml->current_condition->pressure;

	//Kalypsh Nefon %
	$weaCloud = $weaXml->current_condition->cloudcover;

kai me mia loopa pairnoume ta dedomena gia kathe hmera provlepshs:

Κώδικας: Επιλογή όλων

	
	//**** provlepsh shmerinhs kai epomenon hmeron ***//

	//loopa gia na paroume thn kathe hmera provlepshs

	foreach ( $weaXml->weather as $forecast )
	{

		//hmeromhnia
		$forDate = $forecast->date;

		//megisth thermokrasia C
		$forTempHighC = $forecast->tempMaxC;

		//megisth thermokrasia F
		$forTempHighF = $forecast->tempMaxF;

		//xamhloterh thermokrasia C
		$forTempLowC = $forecast->tempMinC;

		//xamhloterh thermokrasia F
		$forTempLowF = $forecast->tempMinF;

		//taxythta anemou se milia
		$forWinSpeedM = $forecast->windspeedMiles;

		//taxythta anemou se xiliometra
		$forWinSpeedK = $forecast->windspeedKmph;

		//dieuthynsh anemou
		$forWinDir = $forecast->winddirection;

		//Eikona
		$forIcon = $forecast->weatherIconUrl;

		//synthikes se keimeno
		$forText = $forecast->weatherDesc;

		//vroxoptosh se mm
		$forPrec = $forecast->precipMM;
	}
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Weather Feeds, XML Parser

Δημοσίευση από Rapid-eraser » 09 Ιούλ 2012 16:42

Θέλει λίγο προγραμματισμό που μάλλον δεν θες να κάνεις :P

Θα χρησιμοποιήσεις την file_get_contents για να φέρεις τα data local,
στην συνέχεια θα κάνεις decode το json σε array με την json_decode

Θα πάρεις έτσι ένα array σε php που θα έχεις ότι data θες να δείξεις.

Ενδιάμεσα προφανώς όπως επισήμανε ο Fafos , θα πρέπει να cachareis λίγο τα data σου για να μην χτυπάς συνέχεια σε κάθε request το service. πχ σε κάποια mysql/textfile/keyValStorage(Memcache)
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
Insurer
Δημοσιεύσεις: 390
Εγγραφή: 13 Απρ 2009 21:40
Τοποθεσία: Ακροκεραύνεια

Weather Feeds, XML Parser

Δημοσίευση από Insurer » 09 Ιούλ 2012 16:53

Δεν είναι ότι δεν θέλω να κάνω προγραμματισμό, αλλά δεν ξέρω να κάνω. Ομολογώ νόμιζα ήταν πιο απλό :( . Θα κάτσω να το δουλέψω λίγο με τα στοιχεία που δώσατε.
Ευχαριστώ και τους δυο για τον χρόνο σας

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Weather Feeds, XML Parser

Δημοσίευση από Rapid-eraser » 09 Ιούλ 2012 17:00

Sorry τότε :)

Υπέθεσα μιας και το έβαλες κατευθείαν στο php προγραμματισμό ότι θα είχες επαφή με το άθλημα :)
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

kapoios001
Δημοσιεύσεις: 403
Εγγραφή: 17 Φεβ 2011 12:26

Weather Feeds, XML Parser

Δημοσίευση από kapoios001 » 12 Ιούλ 2012 20:21

+1 γι' αυτό το θέμα με τα XML Feeds - θυμήθηκα τα XML που μου έβγαζαν το λάδι για τον Deal Aggregator και τελικά κατέληξα στην φανταστική λύση να χρησιμοποιήσω το XPath της PHP που μου έλυσε στα χέρια.

Στην περίπτωση αυτή που ξέρεις ότι η μορφή του Feed είναι standard και χρησιμοποιήσεις το XML format μπορείς όπως είπε και ο rapid να χρησιμοποιήσεις το SimpleXML.

Υπάρχουν διάφορα tutorials που μπορούν να σε βοηθήσουν να κατανοήσεις τη συγκεκριμένη διαδικασία.

Άβαταρ μέλους
Insurer
Δημοσιεύσεις: 390
Εγγραφή: 13 Απρ 2009 21:40
Τοποθεσία: Ακροκεραύνεια

Weather Feeds, XML Parser

Δημοσίευση από Insurer » 12 Ιούλ 2012 20:28

ΑΑΑΑΧ πάνε οι παλιές καλές εποχές που οι μέντορες του forum έκαναν και κανα tutorial :)

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες