Changeset 2248


Ignore:
Timestamp:
10/10/2010 11:31:56 AM (4 years ago)
Author:
lowjoel
Message:

SourceForge? now includes the domain as well in their download page. Amend the parser to allow this.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/website/scripts/SourceForge.php

    r1959 r2248  
    4747        //Get the download page, using the cache if it exists. 
    4848        $document->loadHTML(SourceForge::Download('http://sourceforge.net' . $downloadPage, 60 * 60)); 
    49         file_put_contents('test.xml', $document->saveXML()); 
    50  
    5149        foreach ($document->getElementsByTagName('a') as $element) 
    5250        { 
     
    5755            $parent = $element->parentNode; 
    5856            if (is_a($parent, 'DOMElement') && $parent->tagName == 'td' && 
    59                 $parent->getAttribute('class') == 'tree' && 
    60                 urldecode($element->getAttribute('href')) == implode('/', $pathComponents)) 
     57                $parent->getAttribute('class') == 'tree') 
    6158            { 
    62                 //$grandParent is the <tr> node. 
    63                 $grandParent = $parent->parentNode; 
     59                $downloadUrlInfo = parse_url(urldecode($element->getAttribute('href'))); 
     60                if ($urlInfo['path'] == $downloadUrlInfo['path']) 
     61                { 
     62                    //$grandParent is the <tr> node. 
     63                    $grandParent = $parent->parentNode; 
    6464 
    65                 //Find the download column (currently the 5th) 
    66                 $i = 0; 
    67                 foreach ($grandParent->getElementsByTagName('td') as $cell) 
    68                 { 
    69                     if (++$i == 5) 
     65                    //Find the download column (currently the 5th) 
     66                    $i = 0; 
     67                    foreach ($grandParent->getElementsByTagName('td') as $cell) 
    7068                    { 
    71                         //We are at the 5th column, return the contents as an integer. 
    72                         $result = str_replace(',', '', $cell->textContent); 
    73                         return intval($result); 
     69                        if (++$i == 5) 
     70                        { 
     71                            //We are at the 5th column, return the contents as an integer. 
     72                            $result = str_replace(',', '', $cell->textContent); 
     73                            return intval($result); 
     74                        } 
    7475                    } 
    7576                } 
Note: See TracChangeset for help on using the changeset viewer.