<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>juust ~ php oddities &#187; api</title>
	<atom:link href="http://www.juust.org/index.php/tag/api/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.juust.org</link>
	<description>Link theory and search engine optimization</description>
	<lastBuildDate>Thu, 19 Jan 2012 09:39:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>how to get bing api search results in MsOffice VBA</title>
		<link>http://www.juust.org/index.php/how-to-get-bing-api-search-results-in-msoffice-vba/2011/12/</link>
		<comments>http://www.juust.org/index.php/how-to-get-bing-api-search-results-in-msoffice-vba/2011/12/#comments</comments>
		<pubDate>Sun, 25 Dec 2011 23:27:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[bing]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[seo tips and tricks]]></category>
		<category><![CDATA[serp]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[xhr]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1946</guid>
		<description><![CDATA[For the loyal VBA fans a quick snippet to grab search results from Bing in Access or Excel. There are few articles on the web about that, and that is a shame. So lets add some content on it to &#8230; <a href="http://www.juust.org/index.php/how-to-get-bing-api-search-results-in-msoffice-vba/2011/12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For the loyal VBA fans a quick snippet to grab search results from Bing in Access or Excel. There are few articles on the web about that, and that is a shame. So lets add some content on it to the web : first in MsAccess VBA and then in Excel, with a <a href="http://www.juust.org/wp-content/uploads/file/sample_workbook_vba_bing_api.xlsm">sample workbook</a> added.</p>
<p>Working with the BING API requires an Application Id you can get <a href="http://www.bing.com/toolbox/bingdeveloper/">at the Bing website</a>.</p>
<h2>Accessing the Bing Api in MsAccess VBA</h2>
<p>In the the VBA Ide, through the menu <em>T</em>ools <em>R</em>eferences I add a reference to the XML object library that contains the XMLHTTPRequest object, enabling me to make HTTP requests from VBA in the MsAccess database.</p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/add-xmlhttprequest-to-vba.png" rel="shadowbox[post-1946];player=img;"><img src="http://www.juust.org/wp-content/uploads/2011/12/add-xmlhttprequest-to-vba.png" alt="" title="add xmlhttprequest to vba" width="779" height="278" class="alignnone size-full wp-image-1947" /></a></p>
<p>The simple part is the http request string : </p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Dim</span> MyKeyword <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MyKeyword = <span class="st0">&quot;seo&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Dim</span> requestString <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; requestString = <span class="st0">&quot;http://api.bing.net/xml.aspx?&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Dim</span> AppId <span class="kw1">As</span> <span class="kw1">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; AppId = <span class="st0">&quot;(get one at the bing website)&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">&#39; Common request fields (required)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; requestString = requestString &amp; _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;AppId=&quot;</span> &amp; AppId &amp; <span class="st0">&quot;&amp;Query=&quot;</span> &amp; MyKeyword &amp; <span class="st0">&quot;&amp;Sources=Web&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">&#39; Common request fields (optional)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; requestString = requestString &amp; _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;&amp;Version=2.0&quot;</span> _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp; <span class="st0">&quot;&amp;Market=en-us&quot;</span> _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp; <span class="st0">&quot;&amp;Adult=Moderate&quot;</span> _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp; <span class="st0">&quot;&amp;Options=&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">&#39; Web-specific request fields (optional)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; requestString = requestString &amp; _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;&amp;Web.Count=10&quot;</span> _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp; <span class="st0">&quot;&amp;Web.Offset=0&quot;</span> _</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp; <span class="st0">&quot;&amp;Web.Options=DisableHostCollapsing+DisableQueryAlterations&quot;</span></div>
</li>
</ol>
</div>
<p>Then comes the working part, sending the actual request and receiving the XML response (<strong>objSvrHTTP.responseText</strong>) containing the search data. I use a DomDocument object and XPath to get at the XML data.</p>
<p>First sending the request</p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="kw1">Open</span> <span class="st0">&quot;GET&quot;</span>, requestString, <span class="kw1">False</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objSvrHTTP.<span class="me1">send</span> requestString</div>
</li>
</ol>
</div>
<p>then creating a domdocument and receiving the response in it</p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;Create the DomDocument Object</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Dim</span> oDoc <span class="kw1">As</span> MSXML2.<span class="me1">DOMDocument</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Set</span> oDoc = <span class="kw1">CreateObject</span><span class="br0">&#40;</span><span class="st0">&quot;MSXML2.DOMDocument&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; oDoc.<span class="me1">async</span> = <span class="kw1">False</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; oDoc.<span class="me1">validateOnParse</span> = <span class="kw1">False</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;Load the response in the DomDocument Object</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Dim</span> fSuccess <span class="kw1">As</span> <span class="kw1">Boolean</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; fSuccess = oDoc.<span class="me1">loadXML</span><span class="br0">&#40;</span>objSvrHTTP.<span class="me1">responseText</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">If</span> <span class="kw1">Not</span> fSuccess <span class="kw1">Then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">MsgBox</span> <span class="st0">&quot;failed&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Exit</span> <span class="kw1">Sub</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">If</span></div>
</li>
</ol>
</div>
<p>The response uses two namespaces and the data we actually want is in the &#8220;web&#8221; namespace, so before we start selecting nodes in the xml-tree we first indicate what namespace we want to access :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; oDoc<span class="sy0">.</span>SetProperty <span class="st0">&quot;SelectionNamespaces&quot;</span><span class="sy0">,</span> <span class="st0">&quot;xmlns:web=&#39;http://schemas.microsoft.com/LiveSearch/2008/04/XML/web&#39;&quot;</span></div>
</li>
</ol>
</div>
<p>The total search result pages is a top level node in the namespace :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Set xmlnode <span class="sy0">=</span> oDoc<span class="sy0">.</span>selectSingleNode<span class="br0">&#40;</span><span class="st0">&quot;//web:Total&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Debug<span class="sy0">.</span><span class="kw3">Print</span> xmlnode<span class="sy0">.</span>Text</div>
</li>
</ol>
</div>
<p>&#8230;but the good stuff is in the &#8220;WebResult&#8221; nodes in the xml tree, I can use an XPath reference <strong>//web:Webresult</strong> to access that node-collection and with a simple for-next iterate through the collection, selecting the single nodes containing the actual data.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Set oChildren <span class="sy0">=</span> oDoc<span class="sy0">.</span>selectNodes<span class="br0">&#40;</span><span class="st0">&quot;//web:WebResult&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">For</span> <span class="kw3">Each</span> oResult In oChildren</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Debug<span class="sy0">.</span><span class="kw3">Print</span> oResult<span class="sy0">.</span>selectSingleNode<span class="br0">&#40;</span><span class="st0">&quot;./web:Title&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span>Text</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Debug<span class="sy0">.</span><span class="kw3">Print</span> oResult<span class="sy0">.</span>selectSingleNode<span class="br0">&#40;</span><span class="st0">&quot;./web:Description&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span>Text</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Debug<span class="sy0">.</span><span class="kw3">Print</span> oResult<span class="sy0">.</span>selectSingleNode<span class="br0">&#40;</span><span class="st0">&quot;./web:Url&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span>Text</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Debug<span class="sy0">.</span><span class="kw3">Print</span> oResult<span class="sy0">.</span>selectSingleNode<span class="br0">&#40;</span><span class="st0">&quot;./web:DisplayUrl&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span>Text</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Debug<span class="sy0">.</span><span class="kw3">Print</span> vbCrLf</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">Next</span></div>
</li>
</ol>
</div>
<p>I output to the Immediate window aka Debug (under <em>V</em>iew, <em>I</em>mmediate Window or Ctrl+G)</p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/bing-api-in-vba-visual-basic-for-applications-msaccess-and-excel.png" rel="shadowbox[post-1946];player=img;"><img src="http://www.juust.org/wp-content/uploads/2011/12/bing-api-in-vba-visual-basic-for-applications-msaccess-and-excel.png" alt="" title="bing api in vba visual basic for applications msaccess and excel" width="765" height="248" class="alignnone size-full wp-image-1951" /></a></p>
<p>What can we do with it ? Let&#8217;s make a table for date, keyword, url, title, description, position</p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/access-nake-table.png" rel="shadowbox[post-1946];player=img;"><img src="http://www.juust.org/wp-content/uploads/2011/12/access-nake-table.png" alt="" title="access nake table" width="866" height="166" class="alignnone size-full wp-image-1954" /></a></p>
<p>and add some code to store the results we retrieve</p>
<div class="geshi no vb">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Dim</span> table1 <span class="kw1">As</span> DAO.<span class="kw1">Recordset</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Set</span> table1 = CurrentDb.<span class="me1">OpenRecordset</span><span class="br0">&#40;</span><span class="st0">&quot;Table1&quot;</span>, dbOpenTable<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">&#39;counter for position &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; i = <span class="nu0">0</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Set</span> oChildren = oDoc.<span class="me1">selectNodes</span><span class="br0">&#40;</span><span class="st0">&quot;//web:WebResult&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">For</span> Each oStruct In oChildren</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;i = i + <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">With</span> table1</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class="me1">AddNew</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">&#39;data from bing</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !TITLE = oStruct.<span class="me1">selectSingleNode</span><span class="br0">&#40;</span><span class="st0">&quot;./web:Title&quot;</span><span class="br0">&#41;</span>.<span class="me1">Text</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !Description = oStruct.<span class="me1">selectSingleNode</span><span class="br0">&#40;</span><span class="st0">&quot;./web:Description&quot;</span><span class="br0">&#41;</span>.<span class="me1">Text</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !url = oStruct.<span class="me1">selectSingleNode</span><span class="br0">&#40;</span><span class="st0">&quot;./web:Url&quot;</span><span class="br0">&#41;</span>.<span class="me1">Text</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">&#39;and some additional data</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !MYDATE = <span class="kw1">Now</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !POSITION = i</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !KEYWORD = MyKeyword</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">&#39;store the record</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class="me1">Update</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">With</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">Next</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; table1.<span class="kw1">Close</span></div>
</li>
</ol>
</div>
<p>There now that scratches the seo itch :<br />
<a href="http://www.juust.org/wp-content/uploads/2011/12/bing-api-seo-data-in-msaccess.png" rel="shadowbox[post-1946];player=img;"><img src="http://www.juust.org/wp-content/uploads/2011/12/bing-api-seo-data-in-msaccess.png" alt="" title="bing api seo data in msaccess" width="1071" height="224" class="alignnone size-full wp-image-1957" /></a></p>
<p>MsAccess stuff is a bit hard to put on the web as sample, so I&#8217;ll make a quick one in Excel and put it up for download.</p>
<h2>Accessing the Bing Api in Excel VBA</h2>
<p> <a href="http://www.juust.org/wp-content/uploads/file/sample_workbook_vba_bing_api.xlsm">there you go</a> : on sheet 1 you can fill in your AppID and keyword, click the butt(on&#8230;</p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/bing-api-in-excel-vba.png" rel="shadowbox[post-1946];player=img;"><img src="http://www.juust.org/wp-content/uploads/2011/12/bing-api-in-excel-vba.png" alt="" title="bing api in excel vba" width="623" height="236" class="alignnone size-full wp-image-1958" /></a></p>
<p>&#8230;and on sheet 2 you get the top 10 search results</p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/bing-api-in-excel-vba-sheet2.png" rel="shadowbox[post-1946];player=img;"><img src="http://www.juust.org/wp-content/uploads/2011/12/bing-api-in-excel-vba-sheet2.png" alt="" title="bing api in excel vba sheet2" width="1247" height="304" class="alignnone size-full wp-image-1959" /></a></p>
<p>It uses the cells B1 and B2 as named ranges for MyKeyword and AppID, and has the code in the enclosed module. It also contains one of my AppId&#8217;s so no querying nasty shit, please.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/how-to-get-bing-api-search-results-in-msoffice-vba/2011/12/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ga api sample : get pageviews</title>
		<link>http://www.juust.org/index.php/google-analytics-api-sample-get-pageviews/2009/05/</link>
		<comments>http://www.juust.org/index.php/google-analytics-api-sample-get-pageviews/2009/05/#comments</comments>
		<pubDate>Wed, 13 May 2009 14:58:01 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[ga]]></category>
		<category><![CDATA[namespaces]]></category>
		<category><![CDATA[simplexml]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=504</guid>
		<description><![CDATA[I was going to put that online : how to get the pageviews out of the google analytics api, using simplexml and php. Google use three namespaces in the output file which make it less easy accessible, so here&#8217;s a &#8230; <a href="http://www.juust.org/index.php/google-analytics-api-sample-get-pageviews/2009/05/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was going to put that online : how to get the pageviews out of the google analytics api, using simplexml and php. Google use three namespaces in the output file which make it less easy accessible, so here&#8217;s a quick sample of how to get your sites pageviews out of it :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//ids &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = site identifier (from the site data feed)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//metrics &nbsp; &nbsp; = what i want to see</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//start-date </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//end-date </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$feedUri</span> <span class="sy0">=</span> <span class="st0">&quot;https://www.google.com/analytics/feeds/data?ids=ga:10516419&amp;metrics=ga:pageviews&amp;start-date=2009-04-01&amp;end-date=2009-05-01&quot;</span><span class="sy0">;</span> &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$curl</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span> <span class="re1">$feedUri</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$headers</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;Authorization: GoogleLogin auth=&quot;</span><span class="sy0">.</span><span class="re1">$Authtoken</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//for authtoken : see previous post</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_HTTPHEADER<span class="sy0">,</span> <span class="re1">$headers</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYHOST<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYPEER<span class="sy0">,</span> <span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_VERBOSE<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//get the string containing the xml file</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$gA</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$curl</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>the feed has three namespaces (atom, opensearch and dxp/analytics), a simple way is accessing the ENTRY tags (from the Atom namespace), in that tag is one DXP: line and that has the answer to the question.</p>
<p>&lt;dxp:metric confidenceInterval=&#8217;0.0&#8242; name=&#8217;ga:pageviews&#8217; type=&#8217;integer&#8217; value=&#8217;755&#8242;/&gt;</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//load the string into a simple xml object</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$feed</span> <span class="sy0">=</span> simplexml_load_string<span class="br0">&#40;</span><span class="re1">$gA</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//take the atom namespace</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$children</span> <span class="sy0">=</span> &nbsp;<span class="re1">$feed</span><span class="sy0">-&gt;</span><span class="me1">children</span><span class="br0">&#40;</span><span class="st0">&#39;http://www.w3.org/2005/Atom&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//take the entry tags</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$parts</span> <span class="sy0">=</span> <span class="re1">$children</span><span class="sy0">-&gt;</span><span class="me1">entry</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$parts</span> <span class="kw1">as</span> <span class="re1">$entry</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//from the entry tag,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//access the dxp namespace</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$dxp</span> <span class="sy0">=</span> <span class="br0">&#40;</span>object<span class="br0">&#41;</span> <span class="re1">$entry</span><span class="sy0">-&gt;</span><span class="me1">children</span><span class="br0">&#40;</span><span class="st0">&#39;http://schemas.google.com/analytics/2009&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//METRIC contains the answer to the question</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//grab from the tag METRIC the attribute VALUE</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> &nbsp; <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$dxp</span><span class="sy0">-&gt;</span><span class="me1">metric</span><span class="sy0">-&gt;</span><span class="me1">attributes</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">value</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Important is using the (string) typecast, normally simplexml returns a simplexml object, when you force a string type, it gives the actual metric ga:pageview <strong>value</strong> attribute as number.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/google-analytics-api-sample-get-pageviews/2009/05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>google analytics have an api !</title>
		<link>http://www.juust.org/index.php/google-analytics-api-with-php-curl/2009/05/</link>
		<comments>http://www.juust.org/index.php/google-analytics-api-with-php-curl/2009/05/#comments</comments>
		<pubDate>Mon, 11 May 2009 17:32:52 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[ga]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=499</guid>
		<description><![CDATA[[note: over at ioncannon Carson McDonald made a cool google analytics plugin for wordpress, i use it on this blog, works fine]. An actual google analytics api, and I missed out on it. This api is already a month old &#8230; <a href="http://www.juust.org/index.php/google-analytics-api-with-php-curl/2009/05/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>[note: over at <a href="http://www.ioncannon.net/projects/google-analytics-dashboard-wordpress-widget/">ioncannon</a> Carson McDonald made a cool google analytics plugin for wordpress, i use it on this blog, works fine].</p>
<p>An actual google analytics api, and I missed out on it. This api is already a month old and i havent read anything on the blogs about it. </p>
<p>I found it half an hour ago, I havent checked it completely but it looks promising. Here is the first bit, basic authentication with php and curl.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$USER_EMAIL</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <span class="co1">// #Insert your Google Account email here</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$USER_PASS</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <span class="co1">//#Insert your password here</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//array with some general data</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$data</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;Email&quot;</span> <span class="sy0">=&gt;</span> <span class="re1">$USER_EMAIL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;Passwd&quot;</span> <span class="sy0">=&gt;</span> <span class="re1">$USER_PASS</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;accountType&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;GOOGLE&quot;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;source&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;curl-accountFeed-v1&quot;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;service&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;analytics&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$friends_url</span> <span class="sy0">=</span> <span class="st0">&#39;https://www.google.com/accounts/ClientLogin&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$curl</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span> <span class="re1">$friends_url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//http-post that contains the array as data</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_POST<span class="sy0">,</span> <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_POSTFIELDS<span class="sy0">,</span> <span class="re1">$data</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//go shove the https secure connection verification</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYHOST<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYPEER<span class="sy0">,</span> <span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_VERBOSE<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$googleAuth</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$curl</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//optional : some feedback</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//check if we get an error code from cUrl</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;echo curl_errno($curl).&quot;&lt;br /&gt;&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;echo &nbsp;curl_error($curl).&quot;&lt;br /&gt;&quot; ;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//print the body of the returned data</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;print_r($googleAuth);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//print all the headers</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;$info = curl_getinfo($curl);</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;print_r($info);</span></div>
</li>
</ol>
</div>
<p>somewhere in the garbled mess that curl returns is the Authorization token, starts with <strong>auth=</strong>.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$start</span> <span class="sy0">=</span> <span class="kw3">strpos</span><span class="br0">&#40;</span><span class="re1">$googleAuth</span><span class="sy0">,</span> <span class="st0">&quot;Auth=&quot;</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="nu0">5</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Authtoken</span> <span class="sy0">=</span> <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re1">$googleAuth</span><span class="sy0">,</span> <span class="re1">$start</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//echo $Authtoken;</span></div>
</li>
</ol>
</div>
<p>I put that token in the header of the next calls and google assumes  I am kosher : time to get the accounts feed  :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//add the authoritzation token as extra header</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$headers</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;Authorization: GoogleLogin auth=&quot;</span><span class="sy0">.</span><span class="re1">$Authtoken</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$friends_url</span> <span class="sy0">=</span> <span class="st0">&#39;https://www.google.com/analytics/feeds/accounts/default&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$curl</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span> <span class="re1">$friends_url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_HTTPHEADER<span class="sy0">,</span> <span class="re1">$headers</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYHOST<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYPEER<span class="sy0">,</span> <span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_VERBOSE<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$googleAccounts</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$curl</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//check errors</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> curl_errno<span class="br0">&#40;</span><span class="re1">$curl</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> curl_error<span class="br0">&#40;</span><span class="re1">$curl</span><span class="br0">&#41;</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">print_r</span><span class="br0">&#40;</span><span class="re1">$googleAccounts</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>And there it is : a whole list with weird codes, my account list :) seems easier than the other gData api&#8217;s.</p>
<p>note : the <a href="http://code.google.com/p/ga-api-http-samples/source/browse/trunk/src/v1/dataFeed.sh">google code curl example</a> does not show the &#8221; auth=&#8221; part of the token, they assume you use the entire line &#8220;auth=&#8230;&#8221; as token.</p>
<p>Once I have my spectacular visitor count in a sidebar widget I&#8217;ll blog another post on this one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/google-analytics-api-with-php-curl/2009/05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

