Ticket #4916: ofdb.py-improved_url_parsing.diff

File ofdb.py-improved_url_parsing.diff, 1.3 KB (added by anonymous, 12 years ago)
  • ofdb.py

     
    137137
    138138                nodes = xpath.Evaluate("//A[starts-with(@href, 'film/')]",
    139139                                doc.documentElement)
     140                anodes = xpath.Evaluate("//A[starts-with(@href, 'view.php?page=film&')]",
     141                        doc.documentElement)
    140142
    141143                title_matches = []
    142144                uid_match = re.compile('/(\d+,.*)', re.I)
     
    144146                        rm = uid_match.search(title.getAttributeNS(EMPTY_NAMESPACE, 'href'))
    145147                        if rm:
    146148                                title_matches.append((rm.group(1), title.firstChild.nodeValue))
     149       
     150                # sometimes, we'll encounter links which look like view.php?page=film&
     151                # they don't contain the complete movie id so we have to dereference them
     152                auid_match = re.compile('\d+', re.I)
     153                for title in anodes:
     154                        arm = auid_match.search(title.getAttributeNS(EMPTY_NAMESPACE, 'href'))
     155                        if arm:
     156                                # get correct URL
     157                                path = title.getAttributeNS(EMPTY_NAMESPACE, 'href')
     158                                req = urllib2.Request(url = urlparse.urljoin(URL_BASE,path))
     159                                realurl = urllib2.urlopen(req).geturl()
     160                                rm = uid_match.search(realurl)
     161                                if rm:
     162                                        title_matches.append((rm.group(1), title.firstChild.nodeValue))
    147163
     164
    148165                for id, title in title_matches:
    149166                        print("%s:%s" % (id, title.strip()))
    150167        except: