1. Startseite
  2. Portal
  3. Forum
    1. Unerledigte Themen
  4. Galerie
    1. Alben
    2. Karte
  5. Lexikon
  6. Kartensysteme
    1. Europaanalyse
    2. Gewitteranalyse
    3. Nowcast
  7. FAQ
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Galerie
  • Lexikon
  • Seiten
  • FAQ
  • Erweiterte Suche
  1. Forum
  2. RATGEBER
  3. Ratgeber: Wetterseite
  4. Die eigene Wetterseite

RSS Feed für Twitter aktualisieren

  • Axel
  • 18. September 2012 um 17:11
  • Erledigt
  • Axel
    Gast
    • 18. September 2012 um 17:11
    • #1

    Hallo alle zusammen,
    ich habe eine Frage an unsere Programmierer.
    Ich lasse von WSWIN eine XML-Datei erstellen, die so aussieht:

    <!-- %openfile=cam.txt% -->
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <rss version="2.0">

    <channel>
    <title>Wetterstation Castrop-Rauxel</title>
    <link>http://www.emscherwetter.de</link>
    <description>Wetterwerte der Station Castrop-Rauxel</description>
    <language>de-de</language>

    <item>
    <title>Wetter Castrop-R. v. 18.09.2012, 17:01 Uhr</title>
    <description>
    <![CDATA[Temp:18,0 Feuchte:61 Regen heute:0,0 Trend: veränderlich]]>
    </description>
    <pubDate>Tue, 18 Sep 2012 15:01:00 +0200</pubDate>
    </item>

    </channel>
    </rss>

    Diese XML-Datei soll das Programm Twitterfeed (http://www.twitterfeed.com) alle 6 Stunden auf meinem Twitteraccount veröffentlichen, was es anfangs auch brav getan hat.
    Doch dann stellte es einfach seinen Dienst mit dieser Fehlermeldung ein:

    Your feed might be empty or missing publish dates or GUIDs. A feed needs to contain publish dates or GUIDs in order to work with twitterfeed, see help

    Die "Help" besagt folgendes:

    Twitterfeed says "We couldn't find valid date/time stamps or GUIDs on items"
    There are two methods twitterfeed can use to determine if an item in a feed is new, and should be posted to twitter - by default this is done through the date/time that a blog post has been published, or (if you select the "Post new items based on ... GUID" option in the twitterfeed "advanced settings"), by a unique ID on each blog post. Which one you want to use depends a little on the type of RSS feed you have, but twitterfeed requires at least one of the two to be present in the feed - if neither are present, there is no way to tell if an item in a feed is new, and should be posted. If twitterfeed gives the message saying it can't find valid date/time stamps in your feed, try these steps:

    Take a look at your feed - is there a date/time showing on every item in the feed? If not, you may be using an older version of RSS (0.92) which doesn't include publish dates. Your blog will probably provide the same feed in RSS 2.0 or Atom 1.0 format (both of which contain publish dates), so try and find the feed URL for the RSS 2.0 or Atom feed (see "How do I find my feed URL" above if you have difficulty finding the feed URLs)
    The dates need to be in a specific, valid format in order to be read correctly. If your feed does contain date/time stamps but you still get the above message, try entering your feed URL at feedvalidator.org - this is a useful online tool which can show common problems with feeds, including invalid date formats.

    If you have no pubDate elements in your feed at all, but the feed does have GUIDs (look for or elements in the source of the feed), then you should be able to select the "Post new items based on ... GUID" option in the twitterfeed "advanced settings", and twitterfeed will then use these IDs to determine what is new.

    Hat nun von Euch jemand eine Ahnung, was das für mein Script bedeutet ?
    Gibt es vielleicht, wenn nicht lösbar, eine Alternative zu Twitterfeed ?
    ich bin da ziemlich unwissend auf diesem Gebiet.

    Danke für Eure Mühe und dem Verbraten von Gehirnschmalz.

    :hilfe:

  • ThomasT
    Gast
    • 25. September 2012 um 11:09
    • #2

    Hallo Axel,

    ja es gibt alternativen zum Tweeterfeed. Eine PHP-Lösung welche ich auch einsetze um meine Wetterdaten alle 30 Minuten an Twitter zu übertragen. Dies wird mittels der Twitter API direkt via deinem Konto eingespielt.

    Zum RSS-Feed an sich: Die Fehlermeldung an sich deutet darauf hin, dass das Datum und/oder eine GUI nicht vorhanden ist bzw. schon vorhanden ist.
    Wahrscheinlicher ist jedoch, dass die Meldungen erscheinen, wenn sich an den zu sendeten Werten nichts geändert hat. Twitter schluckt dann diese Meldungen.

    Vielleicht solltest du dir die Spezifikation von RSS-Feeds noch mal zur Gemüte ziehen ;) http://cyber.law.harvard.edu/rss/rss.html

  • Axel
    Gast
    • 30. September 2012 um 17:44
    • #3

    Hi Thomas,
    danke für die Rückmeldung.
    Ich habe das nochmal überprüft.
    Der Inhalt der Datei sowie der Zeitstempel verändern sich.
    Twitterfeed ignoriert das aber irgendwie.
    Welches Script verwendest Du denn ?
    Gibt es da ein Fertiges, welches ich auch hier anwenden kann ?

  • Harald
    Klimaforscher
    Punkte
    2.360
    Beiträge
    438
    Website
    http://www.ratingenqwrrwe.de
    • 5. Oktober 2012 um 15:26
    • #4
    Zitat von Axel

    Hi Thomas,
    danke für die Rückmeldung.
    Ich habe das nochmal überprüft.
    Der Inhalt der Datei sowie der Zeitstempel verändern sich.
    Twitterfeed ignoriert das aber irgendwie.
    Welches Script verwendest Du denn ?
    Gibt es da ein Fertiges, welches ich auch hier anwenden kann ?

    Alles anzeigen

    Hallo Thomas, hallo Axel,

    gibt es zu diesem Thema mittlerweile nähere Informationen ?

    Liebe Grüße aus Ratingen

    Harald

    http://www.ratingenwetter.de

  • ThomasT
    Gast
    • 6. Oktober 2012 um 12:07
    • #5

    Hallo, sorry das ich mich erst jetzt wieder melden kann, überfliege eigentlich die letzten Tage nur noch die neuen Beiträge (wenig Zeit).

    Ich such dir einen Blog raus, wo alles genau erklärt wird mit der Schnittstelle und wie du das einrichtest.

    Gruß Thomas

  • ThomasT
    Gast
    • 6. Oktober 2012 um 12:23
    • #6

    Hier der versprochene Link.

    http://lemmingzshadow.net/295/twitter-api-mit-oauth-nutzen/

    Hier wird alles genauestes erklärt.

    Anbei auch noch mein Code den ich dafür verwende um Tweets abzusetzen:

    PHP
    <?php
    /**
     * Twitter Wheater Cron-File
     * It Posts some Weather Informations on twitter
     *
     * @namespace        wetter::twitter::twitter
     * @version          $Id: twitter.php 55 2012-03-24 11:38:24Z tomtaz $
     * @author           Tomtaz <info@tomtaz-service.de>
     * @LastChangedBy    $LastChangedBy: tomtaz $    
     * @date             2012-3-24 10:51:00 +100
     * @LastChangedDate  $LastChangedDate: 2012-03-24 12:38:24 +0100 (Sa, 24. Mrz 2012) $
     * @Revision         $Revision: 55 $
     * @copyright        © 2012 by „Tomtaz Scripts & IT-Service“
     * @license          Full licensed to schwerter-wetter.de
     */
    
    
    /**
     * Default Settings
     * NOTE:
     * Please get shure, that you use only absolut paths!!!!
     */
    define( 'ROOT', dirname( __FILE__ ) );
    define( 'DS', DIRECTORY_SEPARATOR );
    define( 'METEOHUB_FILE', ROOT . DS . 'meine_werte.xml' );
    define( 'EMAIL', 'info@schwerter-wetter.de' );
    
    
    /**
     * Twitter Settings
     */
    define( 'CONSUMER_KEY', 'xxxxxxxxxxxxxxxxxx' );
    define( 'CONSUMER_SECRET', 'xxxxxxxxxxxxxxxxxx' );
    define( 'ACCESS_KEY', 'xxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxx' );
    define( 'ACCESS_SECRET', 'xxxxxxxxxxxxxxxxxx' ); 
    
    
    /**
     * First, we load the xml file with the DOM Document class.
     */
    $dom = new DOMDocument;
    
    
    if ( ! $dom->loadXML( file_get_contents( METEOHUB_FILE ) ) )
    {
        die ( 'Could not load Meteohub File' );
    }
    
    
    $meteohub = $dom->getElementsByTagName( 'meteohub' )->item(0);
            
    $currentTime     = $meteohub->getElementsByTagName( 'aktzeit' )->item(0)->nodeValue;
    
    
    $currentTime     = explode( ':', $currentTime );
    $currentTime     = $currentTime[ 0 ] . ':' . $currentTime[ 1 ];
    
    
    $currentDate     = $meteohub->getElementsByTagName( 'aktdatum' )->item(0)->nodeValue;
    
    
    $currentDate     = explode( '.', $currentDate );
    $currentDate     = $currentDate[ 0 ] . '.' . $currentDate[ 1 ];
    
    
    $currentWind     = formatComma( $meteohub->getElementsByTagName( 'aktwind' )->item(0)->nodeValue );
    $currentGust     = formatComma( $meteohub->getElementsByTagName( 'aktgust' )->item(0)->nodeValue );
    $currentTemp     = formatComma( $meteohub->getElementsByTagName( 'akttemp' )->item(0)->nodeValue );
    $currentHum      = $meteohub->getElementsByTagName( 'akthum' )->item(0)->nodeValue;
    $currentPress    = formatComma( $meteohub->getElementsByTagName( 'aktpress' )->item(0)->nodeValue );
    
    
    // Build the Tweed String
    $tweedString = '#Wetter in #Schwerte: ' . $currentDate . ', ' . $currentTime . ': ' . $currentTemp . '° C, ' . $currentHum . '% Luftfeuchte mit ' . $currentWind . '/' . $currentGust . ' km/h Wind/Windböe. Luftdruck: ' . $currentPress . ' hPa. http://www.schwerter-wetter.de/';
    
    
    /*
    if ( strlen( $tweedString ) > 140 )
    {
        /**
         * Now we send an E-Mail
         *
        mail(
            EMAIL,
            'Tweed-Error',
            'Tweed Error with follow tweed-entry:' . "\n\n" . $tweedString . "\n\n" . 'The Tweed was not send becouse it is to long. Only 140 Chars are allowed',
            'From: ' . EMAIL . "\r\n" . 'X-Mailer: PHP/' . phpversion()
        );
        exit();
    }
    */
    /**
     * So let us upset the tweed and send them.
     */
    require_once( ROOT . DS . 'twitter' . DS . 'twitteroauth' . DS . 'twitteroauth.php' );
     
    $twitter = new TwitterOAuth( CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET );
    $twitter->post('statuses/update', array('status' => $tweedString ) );
    
    
    /**
     * Function to format the . to a ,
     *
     * @param   string $string: Unformated String
     * @return  string Formated String
     *
     * @author  Tomtaz <info@tomtaz-service.de>
     * @version
     * Version 1.0, 2012-03-24
     */
    function formatComma( $string )
    {
        return str_replace( '.', ',', $string );
    }
    
    
    /**
     * END $Id: twitter.php 55 2012-03-24 11:38:24Z tomtaz $
     */
    ?>
    Alles anzeigen

    Beachtet bitte, dass diese Datei so auslegt ist, dass diese via Crontab aufgerufen werden kann. Ein möglicher Crontab Eintrag (also in meinen Fall) sieht dann so aus:

    Code
    ~ crontab -e
    1,31    *       *       *       *       php /var/www/vhosts/schwerter-wetter.de/httpdocs/wetter/twitter.php

    Natürlich müsst Ihr hier noch entsprechend die Variablen, vor allem die Pfade richtig setzen, ansonsten läuft es nicht korrekt.

    Hinweis:
    Das mit der Uhrzeit hat seinen Grund: Sollten nämlich 2 gleiche Tweets abgesetzt werden (was durchaus passieren kann), dann wir dieser Tweet nicht abgesetzt. Deshalb setze ich Datum und Uhrzeit davor.

    Wie das ganze dann in "Live" aussieht, könnt ihr ja hier sehen:
    https://twitter.com/SchwerterWetter

    Gruß Thomas

  • *djpatrick* 1. Februar 2021 um 09:25

    Hat das Thema aus dem Forum Wetterscripte nach Die eigene Wetterseite verschoben.

Radar

Regenradar

Link-Box

Zellenabstand und Zelleninnenabstand in Tabellen
Wegweiser
Kartenanlyse
Webcam
  1. Datenschutzerklärung
  2. Impressum
  3. Nutzungsbedingungen
  4. Kontakt

Partner
Viktor´s Supportboard
Besucherzaehler



Community-Software: WoltLab Suite™ 6.1.25
© Wetter-Board 2004-2026