<?php
/*
Hack Name: Adsense to RSS 
Version: 1.1
Hack URI: http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/
Description: Follow your Adsense earnings with an RSS reader
Author: Ozh
Author URI: http://planetOzh.com
*/

/*
 * Release History
 *
 * 1.1 (04/23/2006 - CGibson)
 * Fixed to work with recent modifications to Google AdSense
 * - Changed "csv" post data field to "outputFormat"
 * - Changed spliting of date from "/" to "-"
 *
 * 1.0 (10/07/2005)
 * Initial Release
*/

/************ SCRIPT CONFIGURATION ***********/
/*********************************************/

$username="you@email.com";
    
// your adsense username

$password="MySuPeRpAsSwOrD"
    
// your adsense password

$daterange 20 ;
    
// range of days to aggregate in RSS reader

$cookie="./.cookiefile";
        
// a temp file name - you mostly don't care about this
        // This will create a hidden file in the current directory. If it seems to fail,
        // replace with a full physical path (i.e. /home/you/temp/cookiefile)

/************ DO NOT MODIFY BELOW ************/
/*********************************************/

$daysbefore mktime(000date("m") , date("d") - $daterangedate("Y"));
list (
$d_from,$m_from,$y_from) = split(':',date("j:n:Y"$daysbefore));
list (
$d_to,$m_to,$y_to) = split(':',date("j:n:Y"));


/* Following lines are based on a script found on WMW forums */
/* http://www.webmasterworld.com/forum89/5349.htm */

$destination="/adsense/report/aggregate?"
    
."sortColumn=0"
    
."&reverseSort=false"
    
."&outputFormat=TSV_EXCEL"
    
."&product=afc"
    
."&dateRange.simpleDate=today"
    
."&dateRange.dateRangeType=custom"
    
."&dateRange.customDate.start.day=$d_from"
    
."&dateRange.customDate.start.month=$m_from"
    
."&dateRange.customDate.start.year=$y_from"
    
."&dateRange.customDate.end.day=$d_to"
    
."&dateRange.customDate.end.month=$m_to"
    
."&dateRange.customDate.end.year=$y_to"
    
."&unitPref=page"
    
."&reportType=property"
    
."&searchField="
    
."&groupByPref=date";

$postdata="destination=".urlencode($destination)."&username=".urlencode($username)."&password=".urlencode($password)."&null=Login";

$ch curl_init(); 
curl_setopt ($chCURLOPT_URL,"https://www.google.com/adsense/login.do"); 
curl_setopt ($chCURLOPT_SSL_VERIFYPEERFALSE); 
curl_setopt ($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_setopt ($chCURLOPT_TIMEOUT20); 
curl_setopt ($chCURLOPT_FOLLOWLOCATION,1); 
curl_setopt ($chCURLOPT_RETURNTRANSFER1); 
curl_setopt ($chCURLOPT_COOKIEJAR$cookie); 
curl_setopt ($chCURLOPT_COOKIEFILE$cookie); 
curl_setopt ($chCURLOPT_POSTFIELDS$postdata); 
curl_setopt ($chCURLOPT_POST1); 
$result curl_exec ($ch); 
curl_close($ch); 

$result=preg_split("/\n/",$result);
array_pop($result);
array_pop($result);
array_shift($result);
$result array_reverse($result);

header('Content-type: text/xml');
echo 
'<?xml version="1.0" encoding="iso-8859-1"?>';
echo 
"\n";
?>
<rss version="2.0" 
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<channel>
    <title><?php echo "$daterange days of Adsense"?></title>
    <link>https://www.google.com/adsense/</link>
    <description>An RSS feed of my Adsense earnings for the last <?php echo $daterange ?> days</description>
    <language>en</language>
<?php

$firstday
=1;

foreach (
$result as $line) {
    
$item = array();
    
$line str_replace("\x00",'',$line);
    
$line str_replace('"','',$line);
    list(
$day$pages$clicks$ctr$eCPM$income) = preg_split("/\s/",$line);
    
$item['title']= "<title>\$$income on $day</title>";
    
$item['guid'] = '<guid isPermaLink="false">' md5($username.$day) . "</guid>";
    
$day split('-',$day);
    
$day mktime(000$day[1] , $day[0], $day[2]);
    if (
$firstday == 1) {
        
$day date("D, d M Y H:i:s +0000");
        
$firstday 0;
    } else {
        
$day date("D, d M Y H:i:s +0000"$day);
    }
    
$item['pubDate'] = "<pubDate>$day</pubDate>";
    
$item['category'] = "<category>adsense</category>";
    
$item['description'] = "<description>\$$income ($clicks clicks on $pages pages : CTR = $ctr - eCPM = $eCPM)</description>";
    
$item['content'] = "<content:encoded><![CDATA[
    <table>
    <tr><td>Pages printed</td><td>Clicks</td><td>CTR</td><td>eCPM</td><td>Earnings</td></tr>
    <tr><td>
$pages</td><td>$clicks</td><td>$ctr</td><td>$eCPM</td><td>$income</td></tr>
    </table>
    ]]></content:encoded>"
;
    
    print 
"<item>\n";
    print 
$item['title'] ."\n";
    print 
$item['guid'] ."\n";
    print 
$item['pubDate'] ."\n";
    print 
$item['category'] ."\n";
    print 
$item['description'] ."\n";
    print 
$item['content'] ."\n";
    print 
"</item>\n";
    
    
}
?>
</channel>
</rss>