{lang: 'de'}
Flashhilfe.de - Flash Community

Twitter Feed mit Flash AS3 auslesen [Flash 10]

 


AntwortenRegistrieren Seite1  

CIX88#1
Benutzerbild von CIX88
Beiträge: 261
Registriert: Feb 2005

14.04.2010, 11:51

In einen anderen Tread hatte ich hatte ich bereits dazu ein Link eingefügt. Auf Wusch folgt nun das kleine Tutorial noch mal:

In diesem Beitrag geht es darum, wie man mit Flash ActionScript3 den Status von seinem Twitter Account auslesen kann. Twitter bietet hier XML und JSON als Datenaustausch an. Zur Abfrage wird entweder die TwitterID oder der Screen-Name benutzt. Die TwitterID steht z.B. in deinen RSS-Feed zum Twitter Account. Im nachfolgenden Beispiel wird ein ganz einfaches HTML-Textfeld mit den letzten 5 Einträgen eingelesen. Neu bei dieser Beschreibung ist, dass hier auch RegExp für Flash benutzt wird. Also nicht erschrecken :)

Als erstes legen wir auf der Bühne ein Textfeld an und vergeben dem Ding den Instanznamen „twitter_text”. Wichtig ist, dass dieses Textfeld HTML unterstützen muss und mehrzeilig ist. Beides kann bei den Eigenschaften eingestellt werden.

Im nächsten Schritt müssen Variablen definiert werden. Und das wir mit AS3 arbeiten, gehört das zur Hausordnung.

ActionScript:
1
2
3
4
5
6
var TwitterID:String = '12345';
var urlLoader:URLLoader = new URLLoader();

// brauchen wir später zum auslesen
var html_text:String = '';
var tw:String = '';


Nun kann es eigentlich schon losgehen und wir lesen unsere XML ein und kontrollieren mit trace() die Ausgabe.

ActionScript:
1
2
3
4
5
6
7
8
9
urlLoader.addEventListener(Event.COMPLETE, LoadXML);
function LoadXML(e:Event):void {
var xmlData = new XML(e.target.data);
var twitter_list:XMLList = xmlData.children();
for (var i:Number = 0; i < 5; i++ ) {
  trace( twitter_list[i] );
}
}
urlLoader.load(new URLRequest('http://twitter.com/statuses/user_timeline/'+TwitterID+'.xml'));


In Fenster der Ausgabe sollte nun der komplette XML-Stream zu sehen sein. Falls nicht, dann stimmt vielleicht die TwitterID nicht oder es dauert einfach zu lange. Aber wir gehen mal davon aus, dass alles bis hier funktioniert. Und ab jetzt kommt der komplizierte Teil - das auslesen der einzelnen Werte.

In diesem Beispiel lese ich das Datum, den UserName und den Text aus. Weiterhin sollen automatisch aus dem Text die Links automatisch in HTML-Links umgewandelt werden. Und ab dieser Stelle geht es nicht mehr ohne RegExp. Bei sehr vielen Tutorials im Netz wurde hier gar nicht darauf eingegangen, wie man die Links aus dem Texten automatisch als anklickbare Links bekommt.

Damit wir aus dem String die Links bekommen und automatisch in HTML-Links umwandeln können, benutze ich dazu folgende Funktion und RegExp:

ActionScript:
1
2
3
4
5
6
7
8
9
var twitterUrl:RegExp = /(http://+[a-zA-Z0-9.-/_+=%&?,]*[a-zA-Z0-9-/_+=%&?])/g;
function repUrl():String {
var arg_str:String = '';
arg_str += '<br><a href="' + arguments[1]+ '">';
arg_str += arguments[1];
arg_str += '</a>';
return arg_str;
}



Das Datum im XML-File hat das Format:

PHP:
1
2
<created_at>Mon Apr 12 16:04:22 +0000 2010</created_at>


Auch hierzu ein RexExp und eine Funktion:

ActionScript:
1
2
3
4
5
6
7
8
var twitterDate:RegExp = /(w+)s(w+)s([0-9]+)s([0-9:]+)s([0-9+]+)s([0-9]+)/g;
function repDate():String {
var arg_str:String = '';
arg_str += arguments[3] + ' ';
arg_str += arguments[2] + ' ';
arg_str += arguments[6];
return arg_str;
}


Nun wird der Teil beim Auslesen ( Funktion LoadXML() ) der XML-Inhalte geändert und sieht wie folgt aus:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function LoadXML(e:Event):void {
var xmlData = new XML(e.target.data);
var twitter_list:XMLList = xmlData.children();

for (var i:Number = 0; i < 5; i++ ) {

  // Datum und Zeit auslesen
  tw = twitter_list[i].created_at.text();
  tw = tw.replace(twitterDate, repDate);
  html_text += tw + ' ';
 
  // Username auslesen
  tw = twitter_list[i].user.screen_name.text();
  html_text += '<p><a href="http://twitter.com/' + tw + '">';
  html_text += '@' + tw;
  html_text += '</a></p>';

  // Text und Link auslesen
  tw = twitter_list[i].text.text();
  tw = tw.replace(/r|n/, ' ');
  tw = tw.replace(twitterUrl, repUrl);
  html_text += '<p>' + tw + '</p><br>';

  twitter_text.htmlText = html_text;
}

}


replace() ist vergleichbar mit der PHP-Funktion preg_replace(). Es kann also auch mit reguläre Ausdrücken gesucht und ersetzt werden.

Wenn jetzt soweit alles stimmt, sollten im Textfeld 5 Einträge zu sehen sein.
PHP:
1
2
3
4
08 Apr 2010 @MediaCix
Ausgesp&auml;ht und abgezockt - Wie gef&auml;hrlich ist das Internet? 
http://tinyurl.com/y8ukq5t


Falls nicht dann sollte man bei der Funktion LoadXML() Schrittweise mit trace() die Werte prüfen.

Natürlich kann das ganze noch über eine Timer-Klasse gesteuert werden. Es wäre dann möglich z.B. alle 30 Minuten automatisch die neusten Einträgen anzeigen zu lassen. Zum Schluss das komplette AS mit einer zusätzlichen Funktion die aus UserNamen im Text einen Twitter-Link erstellt.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
var TwitterID:String = '12345';
var urlLoader:URLLoader = new URLLoader();

var html_text:String = '';
var tw:String = '';

urlLoader.addEventListener(Event.COMPLETE, LoadXML);

function LoadXML(e:Event):void {
var xmlData = new XML(e.target.data);
var twitter_list:XMLList = xmlData.children();

for (var i:Number = 0; i < 5; i++ ) {

  // Datum und Zeit auslesen
  tw = twitter_list[i].created_at.text();
  tw = tw.replace(twitterDate, repDate);
  html_text += tw + ' ';
 
  // Username auslesen
  tw = twitter_list[i].user.screen_name.text();
  html_text += '<p><a href="http://twitter.com/' + tw + '">';
  html_text += '@' + tw;
  html_text += '</a></p>';

  // Text und Link auslesen
  tw = twitter_list[i].text.text();
  tw = tw.replace(/r|n/, ' ');
  tw = tw.replace(twitterUser, repUser);
  tw = tw.replace(twitterUrl, repUrl);
  html_text += '<p>' + tw + '</p><br>';

  twitter_text.htmlText = html_text;
}

}
urlLoader.load(new URLRequest('http://twitter.com/statuses/user_timeline/'+TwitterID+'.xml'));


var twitterDate:RegExp = /(w+)s(w+)s([0-9]+)s([0-9:]+)s([0-9+]+)s([0-9]+)/g;
function repDate():String {
var arg_str:String = '';
arg_str += arguments[3] + ' ';
arg_str += arguments[2] + ' ';
arg_str += arguments[6];
return arg_str;
}


var twitterUrl:RegExp = /(http://+[a-zA-Z0-9.-/_+=%&?,]*[a-zA-Z0-9-/_+=%&?])/g;
function repUrl():String {
var arg_str:String = '';
arg_str += '<br><a href="' + arguments[1]+ '">';
arg_str += arguments[1];
arg_str += '</a>';
return arg_str;
}


var twitterUser:RegExp = /([s|(|[]@+w*(s|,|!|.|n|)|]|-|:))/g;
function repUser():String {
var arg_str:String = '';
arg_str += arguments[1].substr(0,1);
arg_str += '<a href="http://twitter.com/' + arguments[1].substr(2,arguments[1].length-3)+ '">';
arg_str += '@' + arguments[1].substr(1,arguments[1].length-2) + '</a>';
arg_str += arguments[1].substr(arguments[1].length-1,1);
return arg_str;
}
Schlagwörter: feed, rss, Tutorial, twitter
Geändert von CIX88 am 14.04.10 um 11:55 Uhr

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Ein Lob an die Admins [Flash CS5] 08.05.2022 - Indy_Crossover
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2024 Sebastian Wichmann - Flashhilfe.de