Browse files

README überarbeitet, Avatar-Hinweis geschrieben

  • Loading branch information...
1 parent 39eb38a commit 0001df3345f3194256bc5cedfa8c05862796d6df @jk committed Dec 13, 2008
Showing with 58 additions and 20 deletions.
  1. +28 −0 README
  2. +2 −2 config.php
  3. +9 −3 getFollower.php
  4. +19 −15 index.php
View
28 README
@@ -0,0 +1,28 @@
+Twitter Come and Go
+===================
+
+Ein paar PHP-Skripte um einen Statistik über die eigenen Follower zu erstellen. Vor allem werden aber auch Follower angezeigt, die einem nicht mehr folgen.
+
+1. Kontakt:
+Jens Kohl <jens.kohl+twitter@gmail.com>
+www: http://github.com/jk/twitter-comeandgo/
+
+Ich leiste keinen Enduser-Support. Wer's nicht zum Laufen bekommt fragt entweder jemand anderen oder hat Pech gehabt :P
+
+2. Vorraussetzungen:
+• Webserver + PHP 5.x
+ - curl-Extension
+ - Schreibrechte im jeweiligen Verzeichnis
+• Crontabs (für die Benutzung von Webcrontabs, muss getFollower.php womöglich umgeschrieben werden)
+• Twitter-Account ;)
+
+3. Installation:
+
+• Die einfachste Möglichkeit die beiden Skripte zu betreiben besteht darin. Die Dateien in ein Verzeichnis zu kopieren, welches vom Webserver gelesen werden kann. In diesem Verzeichnis müssen PHP-Skripte ausführbar sein.
+• In config.php Benutzername und Passwort anpassen.
+• Über crontab -e passt man seinen eigenen Crontab an wie in crontab.txt beschrieben (Pfadangaben nicht vergessen). Alle 10 Minuten um Mitternacht hat sich als ganz praktisch herausgestellt, da man einerseits seine Statistik täglich erhoben haben möchte und andererseits Twitter manchmal überfordert ist und falsche Ergebnisse liefert. So wird Nachts einfach mehrmals versucht die eigenen Follower abzurufen. Klappt das einmal vernünftig werden nachfolgende Aufrufe an diesem Tag ignoriert.
+
+Das sollte für's erste alles sein. Man ruft nun über seinen Browser die index.php auf, welche aus den gesammelten Followerlisten die Statistik erstellt. Möglichkeiten zur Optimierung sollten genügend vorhanden sein.
+
+4. Bekannte Probleme:
+Ich hatte noch keine Lust irgendeine Routine zu schreiben, welche das aktuelle Avatarbild auf der Statistikseite automatisch updated. Jetzt muss man das eben von Hand machen. Ändert sich ja eh nicht so oft… wer sich dazu berufen fühlt. Patches nehme ich gerne entgegen.
View
4 config.php
@@ -1,8 +1,8 @@
<?php
define('USER', 'username');
define('PASSWD', 'password');
-define('DIR', '/home/httpd/jkohl.com/www/twitter');
+define('DIR', '/webserver/docs/twitter');
define('ORDER', 'older');
define('DAYS', 14);
-define('GOOGLE_ANALYTICS_ID', 'UA-84395-6');
+define('GOOGLE_ANALYTICS_ID', 'UA-#####-#');
?>
View
12 getFollower.php
@@ -2,9 +2,11 @@
<?php
setlocale(LC_TIME, "de_DE");
-define('USER', 'AndiH');
-define('PASSWD', 'geheim');
-define('DIR', '/home/httpd/jkohl.com/www/twitter'); // in welchem Verzeichnis liegt diese Datei?
+require_once('config.php');
+
+if (!file_exists(realpath(DIR.'/'.strtolower(USER)))) {
+ mkdir(realpath(DIR.'/'.strtolower(USER))));
+}
$filename = DIR . '/' . strtolower(USER).'/'.strftime("%Y%m%d").'_'.strtolower(USER).".txt";
if (file_exists(realpath('.').'/'.$filename)) {
@@ -77,6 +79,10 @@ function printList($arr) {
foreach($arrFollower as $user)
$o[] = strtolower($user['user']['screen_name']);
+if (count($o) < 1) {
+ exit("No followers were found. That's unlikey so that no file was created.");
+}
+
sort($o);
$out = implode("\n", $o);
View
34 index.php
@@ -1,13 +1,13 @@
<?php
/**
-* Achtung unten noch Google Analytics anpassen oder rauslöschen
+* In Zeile 67 solltet ihr noch die URL zu eurem Avatarbildchen anpassen…
*/
setlocale(LC_TIME, "de_DE");
-define('USER', 'AndiH');
-define('DIR', realpath('.').'/'.strtolower(USER));
-define('ORDER', 'older');
+require_once('config.php');
+
+define('DIR', realpath('.').'/'.strtolower(USER));
?>
<?= '<?xml version="1.0" encoding="UTF-8"?>'."\n"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
@@ -16,6 +16,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title><?= USER; ?>'s follower</title>
+ <meta name="viewport" content="width=460, user-scalable=yes" />
<style>
body {
font-family: Helvetica, Arial, sans-serif;
@@ -49,19 +50,21 @@
color: gray;
}
</style>
+ <?php if(!empty(GOOGLE_ANALYTICS_ID)): ?>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
- var pageTracker = _gat._getTracker("");
+ var pageTracker = _gat._getTracker("<?= GOOGLE_ANALYTICS_ID; ?>");
pageTracker._initData();
pageTracker._trackPageview();
</script>
+ <?php endif; ?>
</head>
<body>
- <img src="http://s3.amazonaws.com/twitter_production/profile_images/58356754/q618ffrimwhawer_jetable.com_21ae36f7_bigger.jpg" border="0" align="left" style="padding-right: 5px; padding-bottom: 10px;" width=73 height=73 />
+ <img src="images/avatar.png" border="0" align="left" style="padding-right: 5px; padding-bottom: 10px;" width=73 height=73 />
<h1><a href="http://twitter.com/<?= USER; ?>">@<?= USER; ?></a> / Jens</h1>
<div id="location">Standort: <strong>Marburg</strong></div>
<?php
@@ -93,7 +96,7 @@ function parseDate($strTime) {
$dels = array();
$last = '';
-for ($i = 0; $i < min(count($files), 14); $i++) {
+for ($i = 0; $i < min(count($files), DAYS); $i++) {
if ($i == 0) {
$last = $files[$i];
continue;
@@ -140,14 +143,14 @@ function parseDate($strTime) {
?>
<div style="clear: both;">
<div class="day"><?= strftime("%d", $newDate); ?><span style="font-size: 9px;"><br /><?= strftime("%b %y", $newDate); ?></span></div>
- <div style="float:left; width:250px; padding-left: 5px;">
- <h3>Hinzugekommene: <? if (count($add) != 0): ?><span class="cntAdd"><?= count($add); ?></span><? endif; ?></h3>
+ <div style="float:left; width:200px; padding-left: 5px;">
+ <h3>Neue: <? if (count($add) != 0): ?><span class="cntAdd"><?= count($add); ?></span><? endif; ?></h3>
<ul>
<? foreach ($add as $user): ?>
<li style="list-style-image:url(images/user_add.png);"><a href="http://twitter.com/<?= $user; ?>">@<?= $user; ?></a></li>
<? endforeach; ?>
<? if (count($add) == 0): ?>
- <li style="list-style-image:url(images/user_go.png); color: lightgray;">keine Veränderung</li>
+ <li style="list-style-image:url(images/user_go.png); color: lightgray;"></li>
<? endif;?>
</ul>
</div>
@@ -158,22 +161,23 @@ function parseDate($strTime) {
<li style="list-style-image:url(images/user_del.png);"><a href="http://twitter.com/<?= $user; ?>">@<?= $user; ?></a></li>
<? endforeach; ?>
<? if (count($del) == 0): ?>
- <li style="list-style-image:url(images/user_go.png); color: lightgray;">keine Veränderung</li>
+ <li style="list-style-image:url(images/user_go.png); color: lightgray;"></li>
<? endif; ?>
</ul>
</div>
-<? } // for ?>
</div>
-
+<? } // for ?>
+
<?php
for($i = count($adds)-1; $i >= 0; $i--) {
$dataStr[] = $adds[$i] - $dels[$i];
$labelStr[] = $labels[$i];
}
?>
<div style="clear:both; padding-top: 20px;">
-<h2>Grafische Darstellung</h2>
-<img src="http://chart.apis.google.com/chart?cht=lc&chs=600x100&chco=0077CC&chm=B,E6F2FA,0,0,0&chls=1,0,0&chd=t:<?= implode(',', $dataStr); ?>&chds=<?= min($dataStr)-1; ?>,<?= max($dataStr); ?>&chxt=x,y&chxl=0:|<?= $labelStr[0]; ?>||<?= $labelStr[count($labelStr)-1]; ?>|1:|<?= min($dataStr)-1; ?>|<?= max($dataStr); ?>" width="600" height="100" border="0" />
+<h2 style="margin-bottom: 0px;">Grafische Darstellung</h2>
+<small>der letzten <?=min(count($files), DAYS); ?> Tage.</small><br /><br />
+<img src="http://chart.apis.google.com/chart?cht=lc&chs=450x100&chco=E6F2FA,0077CC&chm=B,E6F2FA,0,0,0&chls=1,0,0&chd=t:0,0|<?= implode(',', $dataStr); ?>&chds=<?= min($dataStr)-1; ?>,<?= max($dataStr); ?>&chxt=x,y&chxl=0:|<?= $labelStr[0]; ?>||<?= $labelStr[count($labelStr)-1]; ?>|1:|<?= min($dataStr)-1; ?>|<?= max($dataStr); ?>" width="450" height="100" border="0" />
</div>
</body>

0 comments on commit 0001df3

Please sign in to comment.