Gå til innhold

Modifisering av yr.no sin værtjeneste for hjemmesider


Anbefalte innlegg

Yr.no har som de fleste sikkert vet offentliggjort alle sine værdata, og lagt opp til at privatpersoner kan inplantere deres værdata på sine egne hjemmesider. De er faktisk så rause at de har ferdiglaget kodene for å utføre nevnte også. Jeg lurte på om det var noen her som kunne hjelpe meg litt, da jeg tenkte jeg skulle endre litt på denne.

 

De har et javascript-varsel som t.ex. viser dette varselet:

 

yr.no: Værvarsel for Kristiansund lufthavn, Kvernberget, tirsdag dagtid: Delvis skyet og 16°

 

Hva jeg tenkte på var om det gikk an å lage en slags kode som automatisk genererer et bilde for hvert varsel. Eksempelvis, om det varsles om "delvis skyet" vær, genereres det automatisk et ikon som illustrerer dette. (man har da selvsagt ett ikon for hvert mulige varsel)

 

Jeg sitter ikke på nok datakunskaper til å lage noe slikt selv, så derfor er vel dette egentlig en liten request om noen kunne gjøre det for meg, evt. hjelpe meg? :)

 

Takk, takk.

-Lju

Endret av Lju
Lenke til kommentar
Videoannonse
Annonse

Hvis du ser på XML-feeden til yr.no så er det en node som heter <tabular>. Denne inneholder maskinlesbar informasjon om været.

 

<tabular>
−
<time from="2008-07-22T18:00:00" to="2008-07-23T00:00:00" period="3">
−
<!--
Valid from 2008-07-22T18:00:00 to 2008-07-23T00:00:00 
-->
<symbol number="1" name="Sol"/>
<precipitation value="0.0"/>
<!-- Valid at 2008-07-22T18:00:00 -->
<windDirection deg="147.0" code="SSE" name="Sør-sørøst"/>
<windSpeed mps="3.1" name="Svak vind"/>
<temperature unit="celcius" value="26"/>
<pressure unit="hPa" value="1012.2"/>
</time>

Her ser du bl.a. noden <symbol> som har forskjellig verdi etter hvordan været blir. Så den enkleste måten dette da kan gjøres på må vel være å lage ikoner som heter 1.jpg, 2.jpg, 3.jpg osv som viser korrekt symbol.

 

Selve programmeringen tar jeg ikke på sparket da du hverken sier noe om hva du skal bruke det til eller hvilket språk det ønskes i...

 

-C-

Lenke til kommentar

Jeg skal bruke det på Denne siden når jeg etterhvert får den over på domenet mitt, og validert den osv. Du ser at jeg har tekstversjonen fra yr i venstre kolonne på startsiden. Norsk funker fint om det er mulig.

 

Jeg har et sett med ikoner, som jeg tror skal dekke det meste av mulige varsler.

 

Nå bruker jeg den "enkle" versjonen som de så fint kaller det, med javascript som bare er limt inn i siden.

Lenke til kommentar
  • 2 uker senere...

Skal du bruke data fra Yr så må du opplyse om at dataene kommer fra Yr og ha en lenke tilbake til relevant side hos yr.no

 

Alt innhald som du hentar frå oss skal merkast på fylgjande måte:

 

* «Vêrvarsel frå yr.no, levert av Meteorologisk institutt og NRK» (nynorsk).

* «Værvarsel fra yr.no, levert av Meteorologisk institutt og NRK» (bokmål).

* «Weather forecast from yr.no, delivered by the Norwegian Meteorological Institute and the NRK» (engelsk).

 

Merkinga skal vere i same skriftstorleik som resten av teksten din, og skal vere godt synleg for publikum.Teksten skal vere ei lenke til den aktuelle sida varselet er henta frå, f.eks. http://www.yr.no/stad/Noreg/Rogaland/Stavanger/Stavanger/. Dersom du hentar fleire varsel og samlar dei på same side, skal alle stadnamn vere klikkbare til yr.no.

http://www.yr.no/verdata/1.3321307

Lenke til kommentar
  • 1 måned senere...
  • 3 måneder senere...

Litt gammel tråd, men jeg lurer på det samme.

 

Jeg vet at man kan bruke <symbol number="2" name="Lettskyet" /> fra xml'en til yr. Men kan noen komme med en et script hvor man kobler symbol opp mot symbolnummrene?

 

Symbolene finner man HER.

 

Har man da en dag med <symbol number="2"> så skal dette bilde vises 02d.png

 

if $xml->tabular->symbel number = 2 then $echo [img=http://www12.nrk.no/nyheter/ver/symbol/Versymbol_100px/02d.png]

 

Er jeg heeelt på jordet?

 

HER er XML fila

Lenke til kommentar

Jeg bruker PHP-scriptet, og har skrudd av headers og footers som skal gjøre scriptet kompatibelt til å kjøre inne i en side (man skrur basicly av <html><body></body></html>.

 

Men likevel "stopper" siden min etter yr-scriptet, selv om det er mer HTML igjen.

 

Slik ser outputen til scriptet ut nå:

http://foniks.bluescape.org/yr.php

    <div id="yr-varsel">
     <h2><a href="http://www.yr.no/sted/Norge/Møre_og_Romsdal/Molde/Molde_lufthavn,_Årø" target="_top">Værvarsel for Molde_lufthavn,_Årø</a></h2>
     <p><a href="http://www.yr.no/" target="_top"><strong>Værvarsel fra yr.no, levert av Meteorologisk institutt og NRK.</strong></a></p>
     <table summary="Værvarsel for Molde_lufthavn,_Årø fra yr.no">
       <thead>
         <tr>

           <th class="v" colspan="3"><strong>Varsel for Molde_lufthavn,_Årø</strong></th>
           <th>Nedbør</th>
           <th>Temp.</th>
           <th class="v">Vind</th>
           <th>Vindstyrke</th>

         </tr>
       </thead>
       <tbody>
         <tr>
           <td colspan="7" class="skilje"></td>
         </tr>
         <tr>
           <th>17.12.2008</th>

           <th>00–06</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/09.png" width="38" height="38" alt="Regn" /></td>
           <td>3 mm</td>
           <td class="pluss">6°</td>
           <td class="v">Lett bris fra sør</td>
           <td>4 m/s</td>

         </tr>
         <tr>
           <th></th>
           <th>06–12</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/09.png" width="38" height="38" alt="Regn" /></td>
           <td>1 mm</td>
           <td class="pluss">6°</td>

           <td class="v">Lett bris fra sør-sørvest</td>
           <td>5 m/s</td>
         </tr>
         <tr>
           <th></th>
           <th>12–18</th>

           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/02d.png" width="38" height="38" alt="Lettskyet" /></td>
           <td><1 mm</td>
           <td class="pluss">4°</td>
           <td class="v">Laber bris fra sør-sørvest</td>
           <td>7 m/s</td>
         </tr>

         <tr>
           <th></th>
           <th>18–24</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/02d.png" width="38" height="38" alt="Lettskyet" /></td>
           <td>0 mm</td>
           <td class="pluss">5°</td>
           <td class="v">Laber bris fra sør-sørvest</td>

           <td>6 m/s</td>
         </tr>
         <tr>
           <td colspan="7" class="skilje"></td>
         </tr>
         <tr>
           <th>18.12.2008</th>
           <th>00–06</th>

           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/05d.png" width="38" height="38" alt="Regnbyger" /></td>
           <td>1 mm</td>
           <td class="pluss">6°</td>
           <td class="v">Laber bris fra sør</td>
           <td>7 m/s</td>
         </tr>

         <tr>
           <th></th>
           <th>06–12</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/09.png" width="38" height="38" alt="Regn" /></td>
           <td>2 mm</td>
           <td class="pluss">6°</td>
           <td class="v">Laber bris fra sørvest</td>

           <td>7 m/s</td>
         </tr>
         <tr>
           <th></th>
           <th>12–18</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/09.png" width="38" height="38" alt="Regn" /></td>
           <td>4 mm</td>

           <td class="pluss">7°</td>
           <td class="v">Laber bris fra sør-sørvest</td>
           <td>6 m/s</td>
         </tr>
         <tr>
           <th></th>

           <th>18–24</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/09.png" width="38" height="38" alt="Regn" /></td>
           <td>1 mm</td>
           <td class="pluss">6°</td>
           <td class="v">Laber bris fra sørvest</td>
           <td>7 m/s</td>

         </tr>
         <tr>
           <td colspan="7" class="skilje"></td>
         </tr>
         <tr>
           <th>19.12.2008</th>
           <th>00–06</th>

           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/05d.png" width="38" height="38" alt="Regnbyger" /></td>
           <td><1 mm</td>
           <td class="pluss">5°</td>
           <td class="v">Laber bris fra sør-sørvest</td>
           <td>6 m/s</td>
         </tr>

         <tr>
           <th></th>
           <th>07–13</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/03d.png" width="38" height="38" alt="Delvis skyet" /></td>
           <td>0 mm</td>
           <td class="pluss">2°</td>
           <td class="v">Lett bris fra sør-sørvest</td>

           <td>4 m/s</td>
         </tr>
         <tr>
           <th></th>
           <th>13–19</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/02d.png" width="38" height="38" alt="Lettskyet" /></td>
           <td>0 mm</td>

           <td class="pluss">3°</td>
           <td class="v">Lett bris fra sør-sørvest</td>
           <td>4 m/s</td>
         </tr>
         <tr>
           <th></th>

           <th>19–01</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/04.png" width="38" height="38" alt="Skyet" /></td>
           <td>0 mm</td>
           <td class="pluss">2°</td>
           <td class="v">Lett bris fra sør-sørvest</td>

           <td>4 m/s</td>
         </tr>
         <tr>
           <td colspan="7" class="skilje"></td>
         </tr>
         <tr>
           <th>20.12.2008</th>
           <th>01–07</th>

           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/12.png" width="38" height="38" alt="Sludd" /></td>
           <td><1 mm</td>
           <td class="minus">-1°</td>
           <td class="v">Svak vind fra sørøst</td>
           <td>3 m/s</td>
         </tr>

         <tr>
           <th></th>
           <th>07–13</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/09.png" width="38" height="38" alt="Regn" /></td>
           <td>3 mm</td>
           <td class="pluss">1°</td>
           <td class="v">Lett bris fra sørøst</td>

           <td>4 m/s</td>
         </tr>
         <tr>
           <th></th>
           <th>13–19</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/10.png" width="38" height="38" alt="Kraftig regn" /></td>
           <td>12 mm</td>

           <td class="pluss">5°</td>
           <td class="v">Laber bris fra sørvest</td>
           <td>8 m/s</td>
         </tr>
         <tr>
           <th></th>
           <th>19–01</th>

           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/09.png" width="38" height="38" alt="Regn" /></td>
           <td>6 mm</td>
           <td class="pluss">3°</td>
           <td class="v">Lett bris fra vest</td>
           <td>4 m/s</td>
         </tr>
         <tr>

           <td colspan="7" class="skilje"></td>
         </tr>
         <tr>
           <th>21.12.2008</th>
           <th>01–07</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/13.png" width="38" height="38" alt="Snø" /></td>
           <td>3 mm</td>

           <td class="pluss">3°</td>
           <td class="v">Lett bris fra vest</td>
           <td>4 m/s</td>
         </tr>
         <tr>
           <th></th>
           <th>07–13</th>

           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/13.png" width="38" height="38" alt="Snø" /></td>
           <td><1 mm</td>
           <td class="minus">-1°</td>
           <td class="v">Svak vind fra sør-sørvest</td>
           <td>3 m/s</td>
         </tr>

         <tr>
           <th></th>
           <th>13–19</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/10.png" width="38" height="38" alt="Kraftig regn" /></td>
           <td>4 mm</td>
           <td class="minus">-1°</td>
           <td class="v">Lett bris fra sørøst</td>

           <td>4 m/s</td>
         </tr>
         <tr>
           <th></th>
           <th>19–01</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/09.png" width="38" height="38" alt="Regn" /></td>
           <td>1 mm</td>

           <td class="pluss">4°</td>
           <td class="v">Laber bris fra sørvest</td>
           <td>6 m/s</td>
         </tr>
         <tr>
           <td colspan="7" class="skilje"></td>
         </tr>

         <tr>
           <th>22.12.2008</th>
           <th>13–19</th>
           <td><img src="http://fil.nrk.no/yr/grafikk/sym/b38/10.png" width="38" height="38" alt="Kraftig regn" /></td>
           <td>7 mm</td>
           <td class="pluss">4°</td>

           <td class="v">Laber bris fra vest</td>
           <td>6 m/s</td>
         </tr>
         <tr>
           <td colspan="7" class="skilje"></td>
         </tr>
       </tbody>
     </table>

     <p>Værsymbolet og nedbørsvarselet gjelder for hele perioden, temperatur- og vindvarselet er for det første tidspunktet. <1 mm betyr at det vil komme mellom 0,1 og 0,9 mm nedbør.<br />
     <a href="http://www.yr.no/1.3362862" target="_top">Slik forstår du varslene fra yr.no</a>.</p>    </div>

 

 

Og her er selve siden når yrscriptet har kjørt seg inn i den og bråstoppet: http://foniks.bluescape.org/site/blue_skies

Lenke til kommentar

kan det ha med at serveren ikke har støtte for PHP 5.0?

Jeg måtte skru på dette på min server.

 

Jeg bruker nå php opp imot xml, funker utmerket, men endel mer "dilling" for å få det slik man vil.

 

HER har jeg gjort det samme som du har gjort

HER har jeg brukt varsel.xml og brukt php for å hente infoen(Testside).

Endret av KeYhOle
Lenke til kommentar
kan det ha med at serveren ikke har støtte for PHP 5.0?

Jeg måtte skru på dette på min server.

 

Jeg bruker nå php opp imot xml, funker utmerket, men endel mer "dilling" for å få det slik man vil.

 

HER har jeg gjort det samme som du har gjort

HER har jeg brukt varsel.xml og brukt php for å hente infoen(Testside).

 

 

Jeg tenkte å gå over til XML selv, og din løsning var godt på vei noe slikt jeg kunne tenke å ha i margen min.

Lager en fallskjermklubbside skjønner du, og vær og vind er ganske essensielt :)

 

 

edit: Sjekket PHP-løsningen din også, den var også slik jeg så for meg i min layout (tenkte å ha en link fra det lille varselet i margen over til en ny side med full oversikt).

 

Sjekket også phpinfo, og versjon 5.2.4 er installert.

 

Har du noe kildekode jeg kunne fått studert?

Endret av Twinflower
Lenke til kommentar

Her er noe du kan bruke for å ha værvarsel i margen:

 

<?php

// Gjøre om url til fil (bruk ditt steds varsel.xml)
$file = "http://www.yr.no/sted/Norge/Vest-Agder/S%F8gne/Tangvall/varsel.xml";
if($content = file_get_contents( $file )) {

// kjør script
$content = file_get_contents( $file );
$xml = simplexml_load_string( $content );

//dette er for å skrive stedsnavn
echo "Location: " .  $xml->location->name;
echo ", timezone:" . $xml->location->timezone["id"] . "<br />";

//dette er for å få temperaturen
echo $xml->forecast->tabular->time[0]->temperature['value']. " °C.<br>";

//dette er for å finne det riktige symbolet. Du må lagde bilde 01.png-16.png fra yr.no(http://www.yr.no/om_yrno/1.1940495). Kall de for 1.png-16.png og legg dem i grafics/yr
echo '<img src="/grafics/yr/'.$xml->forecast->tabular->time[0]->symbol['number'].'.png" />' ."<br>";

}
?>

 

Det andre er bare noe jeg henta fra yr.no

<?php

// ##### 1: VARIABLER FOR VARSEL - DETTE ENDRER DU ETTER ØNSKET STED ####
// Lenke til stedet på yr.no (Uten siste skråstrek. Bruk vanlig æøå i lenka )
$yr_url='http://www.yr.no/sted/Norge/Vest-Agder/Søgne/Tangvall';
// Stedsnavnet (Skriv inn navnet på stedet)
$yr_name='Bakke Elektro Søgne';
// Mellomlagringstid i sekunder før nytt varsel hentes fra yr.no. Eks: 600 = 10 minutter
$yr_maxage=600;


// ##### 2: VARIABEL FOR SERVEREN - MÅ ENDRES I NOEN TILFELLER ####
$yr_meth=1; /* OBS: Sannsynligvis vil du kunne bruke yr-skriptet uten endringer. Men hvis du istedet for værvarsel får en feilmelding som begynner med: 'Warning: fopen(): URL file-access...', forsøk å endre $yr_meth til 0. */


// ##### 3: GRUNNLEGGENDE VARIABLER - BEHØVER IKKE ENDRES #####
$yr_showerrors=0; // Sett til 1 hvis du vil ha feilmeldinger. greit ved feilsøking
$getextheadfoot=1; /* Du kan hente header/css/footer-kode fra en publiseringsløsning. Hvis du skal IKKE bruke skriptet frittstående, kod inn din egen header/footer, og sett denne variablen til 1. */
$getlocalheadfoot=0; /* Hvis du vil bruke standard-header/footer i denne filen, sett denne til 1. */
$yr_winddirs=array('nord', 'nord-nordøst', 'nordøst', 'øst-nordøst', 'øst', 'øst-sørøst', 'sørøst', 'sør-sørøst', 'sør', 'sør-sørvest', 'sørvest', 'vest-sørvest', 'vest', 'vest-nordvest', 'nordvest', 'nord-nordvest', 'nord'); // Norsk grovinndeling av de 360 grader vindretning

$datadir='data';
if(!is_dir($datadir))
       mkdir($datadir,0770);

$clean_datadir = false;
// Vil du slette data-katalogen av en eller annen grunn?
// fjern // foran neste linje (altså sett clean_datadir=true):
//$clean_datadir = true;

// ************************************************
// ENDRE INGENTING NEDENFOR HER HVIS DU ER UERFAREN.

// ####################### FUNKSJONER ##########################
class yr_ParseXML{

function yr_GetChildren($vals, &$i) {
	$children = array(); // Contains node data
	if (isset($vals[$i]['value']))$children['VALUE'] = $vals[$i]['value'];

	while (++$i < count($vals)){
		switch ($vals[$i]['type']){
			case 'cdata':
				if (isset($children['VALUE']))$children['VALUE'] .= $vals[$i]['value'];
				else $children['VALUE'] = $vals[$i]['value'];
				break;
			case 'complete':
				if (isset($vals[$i]['attributes'])) {
					$children[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
					$index = count($children[$vals[$i]['tag']])-1;
					if (isset($vals[$i]['value']))$children[$vals[$i]['tag']][$index]['VALUE'] = $vals[$i]['value'];
					else $children[$vals[$i]['tag']][$index]['VALUE'] = '';

				} else {
					if (isset($vals[$i]['value']))$children[$vals[$i]['tag']][]['VALUE'] = $vals[$i]['value'];
					else $children[$vals[$i]['tag']][]['VALUE'] = '';
				}
				break;
			case 'open':
				if (isset($vals[$i]['attributes'])) {
					$children[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
					$index = count($children[$vals[$i]['tag']])-1;
					$children[$vals[$i]['tag']][$index] = array_merge($children[$vals[$i]['tag']][$index],$this->yr_GetChildren($vals, $i));
				} else $children[$vals[$i]['tag']][] = $this->yr_GetChildren($vals, $i);
				break;
			case 'close': return $children;
		}
	}
}

function yr_GetXMLTree($xmlloc, $max_age, $yr_meth){
	$yr_cached = "data/yrrss.txt";
	$yr_getnew=1;
	if(file_exists($yr_cached)){
		$currenttime=time();
		$mod_time=filemtime($yr_cached);
		if(($currenttime-$mod_time)<$max_age)$yr_getnew=0;
	}
	if(!$yr_getnew)$data = implode('', file($yr_cached));
	else{
		$xmlloc.="/varsel.xml";
		// fopen or curl?
		if($yr_meth)$fp = fopen($xmlloc, 'r');
		else{
			$ch = curl_init($xmlloc);
			$fp = @fopen("data/temp.xml", "w");
			curl_setopt($ch, CURLOPT_FILE, $fp);
			curl_setopt($ch, CURLOPT_HEADER, 0);
			curl_exec($ch);
			curl_close($ch);
			fclose($fp);
			$file = "data/temp.xml";
			$fp = fopen($file, "r");
		}
		$data='';
		while(!feof($fp))$data = $data . fread($fp, 1024);
		fclose($fp);
		$fh = fopen($yr_cached, 'w') or die("can't open file");
		fwrite($fh, $data);
		fclose($fh);
	}

	$parser = xml_parser_create('ISO-8859-1');
	xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
	xml_parse_into_struct($parser, $data, $vals, $index);
	xml_parser_free($parser);

	$tree = array();
	$i = 0;

	if (isset($vals[$i]['attributes'])) {
		$tree[$vals[$i]['tag']][]['ATTRIBUTES']=$vals[$i]['attributes'];
		$index=count($tree[$vals[$i]['tag']])-1;
		$tree[$vals[$i]['tag']][$index]=array_merge($tree[$vals[$i]['tag']][$index], $this->yr_GetChildren($vals, $i));
	} else $tree[$vals[$i]['tag']][] = $this->yr_GetChildren($vals, $i);
	return $tree;
}
}

function yr_convert_encoding($yrraw, $yrtype=0){
if(!$yrtype){
	$conv=str_replace("æ", "æ", $yrraw);
	$conv=str_replace("ø", "ø", $conv);
	$conv=str_replace("Ã¥", "å", $conv);
	$conv=str_replace("Æ", "Æ", $conv);
	$conv=str_replace("Ø", "Ø", $conv);
	$conv=str_replace("Ã…", "Å", $conv);
}else{
	$conv=str_replace("æ", "æ", $yrraw);
	$conv=str_replace("ø", "ø", $conv);
	$conv=str_replace("å", "å", $conv);
	$conv=str_replace("Æ", "Æ", $conv);
	$conv=str_replace("Ø", "Ø", $conv);
	$conv=str_replace("Å", "Å", $conv);
}
return $conv;
}

function yr_parsetime($yr_time, $do24_00=0){
$yr_time=str_replace(":00:00", "", $yr_time);
if($do24_00)$yr_time=str_replace("00", "24", $yr_time);
return $yr_time;
}

// ##################### SKRIPTET KJØRER #############################
if($yr_showerrors)error_reporting(E_ALL);
$yr_run=1;
if(!$yr_meth){// check for curl, if not present, die.
if(!function_exists(curl_init))$yr_run=0;
}

if($getextheadfoot){ // external header
// f eks: include 'header.php';
} // external header end
elseif($getlocalheadfoot){ // local header
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\""
." \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
."<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n"
."<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n"
."<title>Værvarsel fra yr.no</title>\n\n"
."<link href=\"http://www12.nrk.no/yr.no/yr-php.css\" rel=\"stylesheet\" type=\"text/css\" />\n"
."</head>\n<body>\n";
} // local header end

// så begynner vi å hente/behandle varsel, HVIS serveren støtter det.
if($yr_run){
$yr_name=yr_convert_encoding($yr_name);
$yr_xmlparse = &new yr_ParseXML;
$yr_xml = $yr_xmlparse->yr_GetXMLTree($yr_url, $yr_maxage, $yr_meth);
$yr_xml_sub=$yr_xml['WEATHERDATA'][0]['FORECAST'][0];

// headerfelt

// Du må ta med teksten nedenfor og ha med lenke til yr.no.
// Om du fjerner denne teksten og lenkene, bryter du vilkårene for bruk av data fra yr.no.
// Det er straffbart å bruke data fra yr.no i strid med vilkårene.
// Du finner vilkårene på [url="http://www.yr.no/verdata/1.3316805"]http://www.yr.no/verdata/1.3316805[/url]

$yrrss_acc="<div id=\"yr-varsel\">\n\n"
."<h1><a href=\"http://www.yr.no/\" target=\"_top\">"
."<img src=\"images/topp.png\" alt=\"yr.no\" title=\"yr.no er en tjeneste fra Meteorologisk institutt og NRK\" />"
."</a></h1>\n"
."<h2><a href=\"".$yr_url."/\" target=\"_top\">Værvarsel for ".$yr_name."</a></h2>\n"
."<p><a href=\"http://www.yr.no/\" target=\"_top\"><strong>Værvarsel fra yr.no, levert av Meteorologisk institutt og NRK.</strong></a></p>\n";

// tekstvær
if(isset($yr_xml_sub['TEXT'])){
	$yr_place=$yr_xml_sub['TEXT'][0]['LOCATION'][0]['ATTRIBUTES']['NAME'];
	foreach($yr_xml_sub['TEXT'][0]['LOCATION'][0]['TIME'] as $yr_var2){
		$yrrss_acc.="<p><strong>".$yr_place." ".strtolower(yr_convert_encoding($yr_var2['TITLE'][0]['VALUE']))."</strong>: " // UKEDAGER
		.yr_convert_encoding($yr_var2['BODY'][0]['VALUE'])."</p>\n"; // VÆRMELDING
	}
}
// lenker til andre varsel
$yrrss_acc.="<p class=\"yr-lenker\" target=\"_top\">".$yr_name." på yr.no:\n"
."<a href=\"".$yr_url."/\" target=\"_top\">Varsel med kart</a>\n"
."<a href=\"".$yr_url."/time_for_time.html\" target=\"_top\">Time for time</a>\n"
."<a href=\"".$yr_url."/helg.html\" target=\"_top\">Helg</a>\n"
."<a href=\"".$yr_url."/langtidsvarsel.html\" target=\"_top\">Langtidsvarsel</a>\n</p>\n"

// kolonnetitler
."\n<table summary=\"Værvarsel for ".$yr_name." fra yr.no\">\n<thead>\n<tr>\n"
."<th class=\"v\" colspan=\"3\"><strong>Varsel for ".$yr_name."</strong></th>\n"
."<th>Nedbør</th>\n<th>Temp.</th>\n<th class=\"v\">Vind</th>\n<th>Vindstyrke</th>\n"
."</tr>\n</thead>\n<tbody>\n";

// så legges dataene ut i ruter. html lagres i variablen $yrrss_acc
$thisdate='';
$dayctr=0;
foreach($yr_xml_sub['TABULAR'][0]['TIME'] as $yr_var3){
	list($fromdate, $fromtime)=explode('T', $yr_var3['ATTRIBUTES']['FROM']);
	list($todate, $totime)=explode('T', $yr_var3['ATTRIBUTES']['TO']);
	$fromtime=yr_parsetime($fromtime);
	$totime=yr_parsetime($totime, 1);
	if($fromdate!=$thisdate){
		$divider="<tr>\n<td colspan=\"7\" class=\"skilje\"></td>\n</tr>\n";
		list($thisyear, $thismonth, $thisdate)=explode('-', $fromdate);
		$displaydate=$thisdate.".".$thismonth.".".$thisyear;
		$firstcellcont=$displaydate;
		$thisdate=$fromdate;
		++$dayctr;
	}else $divider=$firstcellcont='';
	// change date display


	if($dayctr<7){
		$yrrss_acc.=$divider;
		// behandle symbol
		$imgno=$yr_var3['SYMBOL'][0]['ATTRIBUTES']['NUMBER'];
		if($imgno<10)$imgno='0'.$imgno;
		switch($imgno){
			case '01': case '02': case '03': case '05': case '06': case '07': case '08':
				$imgno.="d"; $do_daynight=1; break;
			default: $do_daynight=0;
		}
		// behandle regn
		$rain=$yr_var3['PRECIPITATION'][0]['ATTRIBUTES']['VALUE'];
		if($rain==0.0)$rain="0";
		else{
			$rain=intval($rain);
			if($rain<1)$rain='<1';
			else $rain=round($rain);
		}
		$rain.=" mm";
		// behandle vind
		$winddir=round($yr_var3['WINDDIRECTION'][0]['ATTRIBUTES']['DEG']/22.5);
		$winddirtext=$yr_winddirs[$winddir];
		// behandle temperatur
		$temper=round($yr_var3['TEMPERATURE'][0]['ATTRIBUTES']['VALUE']);
		if($temper>=0)$tempclass='pluss';
		else $tempclass='minus';

		// så legger vi ut hele den ferdige linjen
		$yrrss_acc.="<tr>\n<th>".$firstcellcont."</th>\n"
		."<th>".$fromtime."–".$totime."</th>\n" // start/sluttid
		."<td><img src=\"images/".$imgno.".png\" width=\"38\" height=\"38\" alt=\"".$yr_var3['SYMBOL'][0]['ATTRIBUTES']['NAME']."\" /></td>\n" // symbol
		."<td>".$rain."</td>\n" // nedbør
		."<td class=\"".$tempclass."\">".$temper."°</td>\n" // temperatur
		."<td class=\"v\">".$yr_var3['WINDSPEED'][0]['ATTRIBUTES']['NAME']." fra ".$winddirtext."</td>\n" // vindtype
		."<td>".round($yr_var3['WINDSPEED'][0]['ATTRIBUTES']['MPS'])." m/s" // vindhastighet, ms
		."</td>\n</tr>\n";
	}
}
$yrrss_acc.="<tr>\n<td colspan=\"7\" class=\"skilje\"></td>\n</tr>\n</tbody>\n</table>\n"

."<p>Værsymbolet og nedbørsvarselet gjelder for hele perioden, temperatur- og vindvarselet er for det første tidspunktet. <1 mm betyr at det vil komme mellom 0,1 og 0,9 mm nedbør.<br />"
."<a href=\"http://www.yr.no/1.3362862\" target=\"_top\">Slik forstår du varslene fra yr.no</a>.</p>\n"
."<p>Vil du også ha <a href=\"http://www.yr.no/verdata/\" target=\"_top\">værvarsel fra yr.no på dine nettsider</a>?</p>\n"
."</div>\n";
}else $yrrss_acc='Vi beklager, men PHP-varselet fra yr ser ikke ut til å fungere på denne serveren.';

$yrrss_acc=yr_convert_encoding($yrrss_acc, 1);
echo $yrrss_acc; // $yrrss_acc echoes ut

if($getextheadfoot){ // external footer
// f eks: include 'footer.php';
} // local footer end
elseif($getlocalheadfoot) // local footer
echo "</body>\n</html>"; // local footer end

// Sjekk om katalogen skal fjernes eller ei:
if ($clean_datadir) {
      unlink($datadir . '/yrrss.txt');
      rmdir($datadir);
}

?>

Endret av KeYhOle
Lenke til kommentar
Her er noe du kan bruke for å ha værvarsel i margen:

 

 

Det andre er bare noe jeg henta fra yr.no

 

 

Tusen takk :)

 

Forrige gang jeg prøvde å kjøre yr-scriptet, så forsvant all HTML under det yr.php outputtet, selv om jeg tok av headers og footers.

Rare saker, men skal prøve med ditt og se om det er annerledes på en måte.

 

Takk igjen :)

Lenke til kommentar
  • 3 måneder senere...

Jeg har litt problemer med denne delen:

//dette er for å få temperaturen
echo $xml->forecast->tabular->time[0]->temperature['value']. " °C.<br>";

Jeg regner med "time[0]" bør endres etter hvilken tid varselet skal være for. Jeg forsøker å lage en oversikt over været nå, i morgen og i overimorgen for Kristiansund lufthavn. Mitt forsøk her:

http://www.kvernberget.net/ver.php

 

Problemet er at det ikke stemmer over ens helt med yr sitt langtidsvarsel. Her er koden jeg bruker:

<table border="0" cellspacing="0" width="425" bgcolor="#F8F8F8">
 <tr>
<td><div align="center">I dag<br />
	<?php

// Gjøre om url til fil (bruk ditt steds varsel.xml)
$file = "http://www.yr.no/sted/Norge/M%C3%B8re_og_Romsdal/Kristiansund/Kristiansund_lufthavn,_Kvernberget/varsel.xml";
if($content = file_get_contents( $file )) {

// kjør script
$content = file_get_contents( $file );
$xml = simplexml_load_string( $content );


//dette er for å finne det riktige symbolet. Du må lagde bilde 01.png-16.png fra yr.no(http://www.yr.no/om_yrno/1.1940495). Kall de for 1.png-16.png og legg dem i grafics/yr
echo '<img src="/grafics/yr/'.$xml->forecast->tabular->time[0]->symbol['number'].'.png" />' ."<br>";

//dette er for å skrive stedsnavn
echo "" . $xml->location;
$xml->location["id"] . "<br />";

//dette er for å få temperaturen
echo $xml->forecast->tabular->time[0]->temperature['value']. " °C<br>";

}
?>
</div></td>
<td><div align="center">I morgen<br />
  <?php

// Gjøre om url til fil (bruk ditt steds varsel.xml)
$file = "http://www.yr.no/place/Norway/M%C3%B8re_og_Romsdal/Kristiansund/Kristiansund_lufthavn,_Kvernberget/forecast.xml";
if($content = file_get_contents( $file )) {

// kjør script
$content = file_get_contents( $file );
$xml = simplexml_load_string( $content );


//dette er for å finne det riktige symbolet. Du må lagde bilde 01.png-16.png fra yr.no(http://www.yr.no/om_yrno/1.1940495). Kall de for 1.png-16.png og legg dem i grafics/yr
echo '<img src="/grafics/yr/'.$xml->forecast->tabular->time[6]->symbol['number'].'.png" />' ."<br>";

//dette er for å skrive stedsnavn
echo "" . $xml->location;
$xml->location["id"] . "<br />";

//dette er for å få temperaturen
echo $xml->forecast->tabular->time[6]->temperature['value']. " °C<br>";

}
?>
</div></td>
<td><div align="center">I overimorgen<br />
	<?php

// Gjøre om url til fil (bruk ditt steds varsel.xml)
$file = "http://www.yr.no/place/Norway/M%C3%B8re_og_Romsdal/Kristiansund/Kristiansund_lufthavn,_Kvernberget/forecast.xml";
if($content = file_get_contents( $file )) {

// kjør script
$content = file_get_contents( $file );
$xml = simplexml_load_string( $content );


//dette er for å finne det riktige symbolet. Du må lagde bilde 01.png-16.png fra yr.no(http://www.yr.no/om_yrno/1.1940495). Kall de for 1.png-16.png og legg dem i grafics/yr
echo '<img src="/grafics/yr/'.$xml->forecast->tabular->time[10]->symbol['number'].'.png" />' ."<br>";

//dette er for å skrive stedsnavn
echo "" . $xml->location;
$xml->location["id"] . "<br />";

//dette er for å få temperaturen
echo $xml->forecast->tabular->time[10]->temperature['value']. " °C<br>";

}
?> 
</div></td>
 </tr>
</table>

 

Her er xml-fila:

http://www.yr.no/sted/Norge/M%C3%B8re_og_R...rget/varsel.xml

Endret av flyKSU
Lenke til kommentar
  • 1 måned senere...
  • 2 måneder senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...