function Data = WetterInfo2(StadtName)
% Liest Wetterprognosen von www.wetter.de aus
% Bei Fragen: jonathan.schulte@student.uni-siegen.de
% 8.05.2014
% UPDATE 15.05.2014: Suchschlüssel an neuen Quellcode angepasst.  Luftdruck und Luftwahrscheinlichkeit werden nicht ausgelesen.

%% CITY CODE RAUSSUCHEN 
switch lower(StadtName)
    case 'berlin'
        CityCode = 18228265;
    case 'siegen'
        CityCode = 18220982;
    case 'köln'
        CityCode = 18220679;
        StadtName = 'koeln';
    case 'koeln'
        CityCode = 18220679;
       
    case 'stuttgart'
        CityCode = 18224193;
    case 'karlsruhe'
        CityCode = 18224714;
    case 'hamburg'
        CityCode = 18219464;
    case 'düsseldorf'
        CityCode = 18220611;
         StadtName = 'duesseldorf';
    case 'dresden'
        CityCode = 18232486;
    case 'münchen'
        CityCode = 18225562;
        StadtName = 'muenchen';
    case 'muenchen'
        CityCode = 18225562;
     
    
    otherwise
        error(sprintf('Der CityCode von "%s" ist nicht implementiert. Bitte wählen Sie eine andere Stadt, oder ergänzen Sie den Quellcode. \nFolgende Städte sind implementiert: Berlin, Siegen, Köln, Stuttgart, Karlsruhe, Hamburg, Düsseldorf, Dresden, München.',StadtName))
end

url = ['http://www.wetter.de/deutschland/wetter-' lower(StadtName) '-' num2str(CityCode) '/wetterprognose.html'];

try
    html = urlread(url);

catch
    error('Die URL konnte nicht eingelesen werden. Stadt/Citycode Falsch, oder keine Internetverbindung?')
end



%% MAXIMALE TEMPERATUREN

try
    % Anfang- & Endsuchschlüssel für die MAXIMALEN Temperaturen definieren
    Anfang =  '"wt-color-temperature-max">';  %Alte Version: 'Maximale Temperatur des Tages">';
    Ende =   '&deg;</span> / <span class=' ; %Alte Version: '&deg;</span>/<span class'
    
    % MAXIMALE Temperaturen aus dem Quelltext finden
    maxTemp = ZahlZwischen(html,Anfang,Ende,0);
catch
    warning('Max. Temperatur konnte nicht ausgelesen werden. Es werden zufällige Werte genommen.')
    maxTemp = rand(1,15)*30-5;
end


%% MINIMALE TEMPERATUREN
try
    % Anfang- & Endsuchschlüssel für die MINIMALEN Temperaturen definieren
    Anfang = '"wt-color-temperature-min">'; %Alte Version: 'Minimale Temperatur des Tages">';
    Ende = '&deg;</span></div>'; %Alte Version: '&deg;</span></div>';

    % MINIMALE Temperaturen aus dem Quelltext finden
    minTemp = ZahlZwischen(html,Anfang,Ende,0);
catch
    warning('Min. Temperatur konnte nicht ausgelesen werden. Es werden zufällige Werte genommen.')
    minTemp = rand(1,15)*20-5;
end

%% SONNENSTUNDEN
try
    Anfang = ', dabei gibt es '; %Alte Version: '>Sonnenstunden: ';
    Ende = ' Sonnenstunden.'; %Alte Version: '</li>';
    SonneSt = ZahlZwischen(html,Anfang,Ende,30);
catch
    warning('Sonnenstunden konnte nicht ausgelesen werden. Es werden zufällige Werte genommen.')
    SonneSt = rand(1,15)*10-2;
end

    %% REGENRISIKO
try
    Anfang = ', das Niederschlagsrisiko liegt bei '; %Alte Version: '">Regenrisiko: ';
    Ende = '%, dabei'; %Alte Version:  '%</li>';
    Regen = ZahlZwischen(html,Anfang,Ende,15);
catch
    warning('Regenrisiko konnte nicht ausgelesen werden. Es werden zufällige Werte genommen.')
    Regen = rand(1,15)*100;
end


%% LUFTDRUCK
try
     Anfang = '<td>Luftdruck</td>';
    iA = strfind(html,Anfang);
    if isempty(iA)
        warning('Luftdruck konnte nicht ausgelesen werden. Es werden zufällige Werte genommen.')
        LuftDruck = rand(1,15)*10 +900;
    else
        for i = 1: length(iA)
            newAnfang = '<td>';
            newEnde = ' hPa</td>';
            newHtml = html(iA(i)+length(Anfang) : iA(i)+length(iA(i))+150);
            LuftDruck(i) = ZahlZwischen(newHtml,newAnfang,newEnde,0);
        end


    end
    LuftDruck = LuftDruck/10; % hPa -> kPa
catch
    warning('Luftdruck konnte nicht ausgelesen werden. Es werden zufällige Werte genommen.')
    LuftDruck = rand(1,15)*10 +1000;
end


%% LUFTFEUCHTIGKEIT	  
try
    Anfang = '<td>Luftfeuchtigkeit</td>';
    iA = strfind(html,Anfang);
    if isempty(iA)
         warning('LuftFeuchtigkeit konnte nicht ausgelesen werden.Es werden zufällige Werte genommen.')
        LuftFeucht = rand(1,15)*100;
    else
        for i = 1: length(iA)
            newAnfang = '<td>';
            newEnde = '%</td>';
            newHtml = html(iA(i)+length(Anfang) : iA(i)+length(iA(i))+150);
            LuftFeucht(i) = ZahlZwischen(newHtml,newAnfang,newEnde,0);
        end


    end
catch
    warning('LuftFeuchtigkeit konnte nicht ausgelesen werden.Es werden zufällige Werte genommen.')
    LuftFeucht = rand(1,15)*100;
end

%% DATUM 


%% Data packen
Data = [ maxTemp' , minTemp', SonneSt' , Regen' , LuftDruck' ,LuftFeucht' ];

if size(Data,1) ~= 15
    warning('Achtung, es sind nicht mehr die Standart 15-Tage WetterDaten')
end

function zahl = ZahlZwischen(String,Anfang,Ende,CutString)

  
iA = strfind(String,Anfang); % Indizes für Anfangsuchschlüssel
iE = strfind(String,Ende); % Indizes für Endsuchschlüssel



if isempty(iA)
    
   % disp(sprintf('Suchschlüssel "%s" wurde nicht gefunden',Anfang))
    
end

for i = 1:length(iA)   
    if CutString ~=  0   % String kürzen
    StringShort = String(iA(i):iA(i)+length(Anfang)+CutString);
    iE = strfind(StringShort,Ende);
    
    if length(iE) == 1
        
        ZAHL = String(iA(i)+length(Anfang) : iA(i)+iE-2);
    else
        warning('One Entry not found. Value will be 0')
        ZAHL = '0';
    end
    
    else  % Normal
   
    ZAHL = String(iA(i)+length(Anfang) : iE(i)-1);
   
    
    end
   ZAHL = strrep(ZAHL,',','.');
    
zahl(i) = str2num(ZAHL);
    

end





