diff -r b61dd9190c0e -r d2f4d301e581 scripts/python/findpackage.py --- a/scripts/python/findpackage.py Wed Nov 18 12:21:26 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -# findpackage.py - finds which Symbian package contains a file (if any) by searching opengrok - -import urllib2 -import urllib -import os.path -import cookielib -import sys -import getpass -from BeautifulSoup import BeautifulSoup - -user_agent = 'findpackage.py script' -headers = { 'User-Agent' : user_agent } -top_level_url = "http://developer.symbian.org" - -COOKIEFILE = 'cookies.lwp' -# the path and filename to save your cookies in - -# importing cookielib worked -urlopen = urllib2.urlopen -Request = urllib2.Request -cj = cookielib.LWPCookieJar() - -# This is a subclass of FileCookieJar -# that has useful load and save methods -if os.path.isfile(COOKIEFILE): - cj.load(COOKIEFILE) - -# Now we need to get our Cookie Jar -# installed in the opener; -# for fetching URLs -opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) -urllib2.install_opener(opener) - -def login(): - loginurl = 'https://developer.symbian.org/main/user_profile/login.php' - - print >> sys.stderr, 'username: ', - username=sys.stdin.readline().strip() - password=getpass.getpass() - - values = {'username' : username, - 'password' : password, - 'submit': 'Login'} - - headers = { 'User-Agent' : user_agent } - - - data = urllib.urlencode(values) - req = urllib2.Request(loginurl, data, headers) - - response = urllib2.urlopen(req) - doc=response.read() - - if doc.find('Please try again') != -1: - print >> sys.stderr, 'Login failed' - return False - - cj.save(COOKIEFILE) - return True - -def findpackageforlibrary(filename, project): - - dotpos = filename.find('.') - - if dotpos != -1: - searchterm = filename[0:dotpos] - else: - searchterm = filename - - searchurl = 'https://developer.symbian.org/xref/sfl/search?q="TARGET+%s"&defs=&refs=&path=&hist=&project=%%2F%s' - url = searchurl % (searchterm, project) - req = urllib2.Request(url) - - response = urllib2.urlopen(req) - - doc=response.read() - - if doc.find('Restricted access') != -1: - if(login()): - # try again after login - response = urllib2.urlopen(req) - doc=response.read() - else: - return False - - - # BeatifulSoup chokes on some javascript, so we cut away everything before the
- try: - bodystart=doc.find('') - doc = doc[bodystart:] - except: - pass - - soup=BeautifulSoup(doc) - - # let's hope the HTML format never changes... - results=soup.findAll('div', id='results') - pkgname='' - try: - temp=results[0].a.string - fspos=temp.find('sf') - temp=temp[fspos+3:] - pkgpos=temp.find('/') - temp=temp[pkgpos+1:] - - endpkgpos=temp.find('/') - pkgname=temp[0:endpkgpos] - except: - print 'error: file \'%s\' not found in opengrok' % filename - else: - print 'first package with target %s: %s' % (searchterm,pkgname) - - return True - -def findpackageforheader(filename, project): - searchterm=filename - searchurl = 'https://developer.symbian.org/xref/sfl/search?q=&defs=&refs=&path=%s&hist=&project=%%2F%s' - url = searchurl % (searchterm, project) - - req = urllib2.Request(url) - - response = urllib2.urlopen(req) - - doc=response.read() - - if doc.find('Restricted access') != -1: - if(login()): - # try again after login - response = urllib2.urlopen(req) - doc=response.read() - else: - return False - - - # BeatifulSoup chokes on some javascript, so we cut away everything before the - try: - bodystart=doc.find('') - doc = doc[bodystart:] - except: - pass - - soup=BeautifulSoup(doc) - - # let's hope the HTML format never changes... - results=soup.findAll('div', id='results') - pkgname='' - try: - temp=results[0].a.string - fspos=temp.find('sf') - temp=temp[fspos+3:] - pkgpos=temp.find('/') - temp=temp[pkgpos+1:] - - endpkgpos=temp.find('/') - pkgname=temp[0:endpkgpos] - except: - print 'error: file \'%s\' not found in opengrok' % filename - else: - print 'package:', pkgname - - return True - - -if len(sys.argv) < 2: - print 'usage: findpackage.py