<?
// Change things from here!!!
$adsenseUsername = “yourname@yourcompany.se”;
$adsensePassword = “yourpassword”;
$dbHostname = “localhost”;
$dbUsername = “dbUsername”;
$dbPassword = “dbPasswd”;
$dbName = “theDbName”;
$reports = Array(”1234″ => “channel1″,
“56215″ => “channel4″,
“35507″ => “channel3″);
// Stop changing things here!!!
$adsenseCookie = “adsenseCookie.txt”;
// Google time
putenv(’TZ=US/Pacific’);
$now = date(”Y-m-d H:i:s”);
$dbLink = mysql_pconnect($dbHostname, $dbUsername, $dbPassword) or die(’Could not connect to database: ‘.$dbHostname);
mysql_select_db($dbName, $dbLink) or die(’Could not find database: ‘.$dbName);
// Handle every report separately
foreach($reports as $id => $name)
{
$result = getAdsenseReport($id);
logChannel($name, $result, $now);
}
// Only functions below, to do all the magic.
// This function takes care of the sql part, that stores channel information.
function logChannel($channelName, $data, $time)
{
global $dbLink;
$sql = “INSERT INTO adsense( id,
channel,
reportedWhen,
impressions,
clicks,
rate,
cpm,
earnings)
VALUES ( NULL,
‘$channelName’,
‘$time’,
‘$data[impressions]’,
‘$data[clicks]’,
‘$data[rate]’,
‘$data[cpm]’,
‘$data[earnings]’)”;
mysql_query($sql, $dbLink);
}
// Gets the report for one channel (reportId).
// Formatting the respons in a pretty way, so we can work with it easily.
function getAdsenseReport($reportId)
{
$reportUrl = “/adsense/report/view-custom.do?reportId=”;
$result = getAdsenseInfo($reportUrl . $reportId);
// the next two rows must be on one row!!!
preg_match(’/\<tr class\=”totals”\>.*\<td.*\>.*\<\/td\>.*\<td.*\>(.*)\<\/td\>.*\<td.*\>(.*)\<\/td\>
.*\<td.*\>(.*)\<\/td\>.*\<td.*\>(.*)\<\/td\>.*\<td.*\>(.*)\<\/td\>.*<\/tr>/simU’, $result, $array);
foreach ($array as $key => $value)
{
$array[$key] = str_replace(Array(”USD”, “%”, “.”), “”, $value);
$array[$key] = str_replace(”,”, “.”, $array[$key]);
}
$info = Array( “impressions” => $array[”1″],
“clicks” => $array[”2″],
“rate” => $array[”3″],
“cpm” => $array[”4″],
“earnings” => $array[”5″]);
return $info;
}
// Accesses adsense to get the information.
// This is where all the magic happens, login and requesting the asked report.
function getAdsenseInfo($destination)
{
global $adsenseUsername, $adsensePassword, $adsenseCookie;
// Add login information to the url
$postdata = “destination=” . urlencode($destination) . “&username=” . urlencode($adsenseUsername) . “&password=” . urlencode($adsensePassword) . “&null=Login”;
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,”https://www.google.com/adsense/login.do”);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)”);
curl_setopt ($ch, CURLOPT_TIMEOUT, 20);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
return $result;
}
?> |