예제 #1
1
    def fulltext_search(self, query, rows=None, start=None):
        """Does an advanced search on fulltext:blah.
        You get back a pair (x,y) where x is the total # of hits
        and y is a list of identifiers like ["foo", "bar", etc.]"""

        query = self._prefix_query('fulltext', query)
        result_list = self.raw_search(query, rows=rows, start=start)
        e = ElementTree()
        try:
            e.parse(StringIO(result_list))
        except SyntaxError as e:
            raise SolrError(e)

        total_nbr_text = e.find('info/range_info/total_nbr').text
        # total_nbr_text = e.find('result').get('numFound')  # for raw xml
        total_nbr = int(total_nbr_text) if total_nbr_text else 0

        out = []
        for r in e.getiterator('hit'):
            for d in r.find('metadata'):
                for x in list(d.getiterator()):
                    if x.tag == "identifier":
                        xid = six.text_type(x.text).encode('utf-8')
                        if xid.startswith('OCA/'):
                            xid = xid[4:]
                        elif xid.endswith('.txt'):
                            xid = xid.split('/')[-1].split('_')[0]
                        elif xid.endswith('_ZZ'):
                            xid = xid[:-3]
                        out.append(xid)
                        break
        return (total_nbr, out)
예제 #2
0
    def updatebq(self):
        from xml.etree.cElementTree import ElementTree
        tree = ElementTree()
        tree.parse(GSXML)
        tvlist = []
        for iptv in tree.findall('iptv'):
            name = iptv.findtext('name').title()
            protocol, serviceType, bufferSize, epgId = iptv.findtext(
                'type').split(':')
            uri = iptv.findtext('uri')
            if protocol in 'livestreamer':
                uri = 'http://localhost:88/' + uri
            uri = uri.replace(':', '%3a')
            service = '#SERVICE {s}:0:1:{e}:{e}:0:0:0:0:0:{u}:{n}\n'.format(
                s=serviceType, e=epgId, u=uri, n=name)
            tvlist.append((name, service))

        tvlist = sorted(tvlist, key=lambda channel: channel[0])
        with open(GSBQ, 'w') as f:
            f.write('#NAME GreekStreamTV\n')
            for name, service in tvlist:
                f.write(service)

        com = 'cat /usr/lib/enigma2/python/Plugins/Satdreamgr/UpdateBouquet/stream.xml ; rm /usr/lib/enigma2/python/Plugins/Satdreamgr/UpdateBouquet/stream.xml'
        out = os.popen(com)
        return list
예제 #3
0
def getEvents(feed):
    """
    Creates events from an ATOM feed with GeoRSS points.
    """
    events = []

    tree = ElementTree()
    tree.parse(feed)

    entries = ElementTree(tree).iter('{http://www.w3.org/2005/Atom}entry')
    for entry in entries:
        author = entry.find('{http://www.w3.org/2005/Atom}author')
        try:
            name = author.find('{http://www.w3.org/2005/Atom}name').text
            uri = author.find('{http://www.w3.org/2005/Atom}uri').text
        except AttributeError:
            continue

        try:
            point = entry.find('{http://www.georss.org/georss}point').text
            latitude = point.split()[0]
            longitude = point.split()[1]
        except AttributeError:
            continue

        published = parse_date(
            entry.find('{http://www.w3.org/2005/Atom}published').text
        )
        event = Event(name, uri, published, latitude, longitude)
        events.append(event)

    return events
예제 #4
0
def search(query):
    query = query.lower()
    parsed = expr.parseString(query)[0]
    res = parsed()
    print
    print("Searching for \"{}\"".format(query))
    if res[1]:
        print("Found {} results".format(len(res[0])))
        for file_id in list(res[0])[:5]:
            print(files[file_id])
            words = parsed.words()
            tree = ElementTree()
            tree.parse(files[file_id])
            body = tree.find('text').find('body')
            for p in body:
                words_copy = list(words)
                at_least_one = False
                for word in words_copy:
                    if word in word_reg_exp.findall(p.text.lower().encode('utf-8')):
                        at_least_one = True
                        words.remove(word)
                if at_least_one:
                    print("----| {}".format(p.text.encode('utf-8')))
            print
    else:
        print("Negative requests are not allowed")
    print
예제 #5
0
def list_articles(target_directory, supplementary_materials=False, skip=[]):
    """
    Iterates over archive files in target_directory, yielding article information.
    """
    listing = listdir(target_directory)
    for filename in listing:
        with tarfile.open(path.join(target_directory, filename)) as archive:
            for item in archive:
                if item.name in skip:
                    continue
                if path.splitext(item.name)[1] == '.nxml':
                    content = archive.extractfile(item)
                    tree = ElementTree()
                    tree.parse(content)

                    result = {}
                    result['name'] = item.name
                    result['article-contrib-authors'] = _get_article_contrib_authors(tree)
                    result['article-title'] = _get_article_title(tree)
                    result['article-abstract'] = _get_article_abstract(tree)
                    result['journal-title'] = _get_journal_title(tree)
                    result['article-date'] = _get_article_date(tree)
                    result['article-url'] = _get_article_url(tree)
                    result['article-license-url'] = _get_article_license_url(tree)
                    result['article-copyright-holder'] = _get_article_copyright_holder(tree)

                    if supplementary_materials:
                        result['supplementary-materials'] = _get_supplementary_materials(tree)
                    yield result
예제 #6
0
    def add_from_file(self, filename):
        '''parses xml file and stores wanted details'''
        Gtk.Builder.add_from_file(self, filename)

        # extract data for the extra interfaces
        tree = ElementTree()
        tree.parse(filename)

        ele_widgets = tree.getiterator("object")
        for ele_widget in ele_widgets:
            name = ele_widget.attrib['id']
            widget = self.get_object(name)

            # populate indexes - a dictionary of widgets
            self.widgets[name] = widget

            # populate a reversed dictionary
            self._reverse_widget_dict[widget] = name

            # populate connections list
            ele_signals = ele_widget.findall("signal")

            connections = [(name, ele_signal.attrib['name'],
                            ele_signal.attrib['handler'])
                           for ele_signal in ele_signals]

            if connections:
                self.connections.extend(connections)

        ele_signals = tree.getiterator("signal")
        for ele_signal in ele_signals:
            self.glade_handler_dict.update(
                {ele_signal.attrib["handler"]: None})
예제 #7
0
파일: window.py 프로젝트: VsyachePuz/agui
    def __init__(self, name, file, parent=None):
        AWindow.__init__(self, name, file, parent)

        self.builder = Gtk.Builder()
        self.builder.add_from_file(self.file)
        self.item = self.builder.get_object(self.name)
        if self.parent is not None:
            self.item.set_transient_for(self.parent.item)

        self.types = {}
        for cls in self.classes:
            if hasattr(cls, 'type'):
                self.types[cls.type] = cls

        tree = ElementTree()
        tree.parse(self.file)
        ele_widgets = tree.getiterator("object")
        for ele_widget in ele_widgets:
            name = ele_widget.attrib['id']
            widget = self.builder.get_object(name)
            type = widget.__class__.__name__

            if type in self.types:
                self.widgets[name] = self.types[type](widget)
            else:
                self.other_widgets[name] = widget

        self.item.connect('delete-event', self.emit_closed)
예제 #8
0
def _getRoleInfo(base_url, method, acceptable_params, debug, **args):
	"""Makes the request and parses the response for its wrapper method"""
	#check if acceptable criteria was entered (prevents some errors)
	if not _correct_params(acceptable_params,**args):
		raise ValueError("At least one parameter with incorrect name given. Check http://devel.yahoo.com/igor/guide/rest_api.html for acceptable parameters")

	response = _GET(base_url, method, debug, **args)
	# parse the XML response
	tree = ElementTree()
	tree.parse(response)

	role_dic = {}
	members = []
	rules = []

	for elem in tree.iter():
		if elem.tag == "role":
			role_dic.update(elem.attrib)
		if elem.tag == "host":
			members.append( elem.attrib["name"] )
		if elem.tag == "rule":
			rules.append( elem.text )

	role_dic["members"] = members
	role_dic["rules"] = rules
	return Obj(role_dic)
예제 #9
0
    def fulltext_search(self, query, rows=None, start=None):
        """Does an advanced search on fulltext:blah.
        You get back a pair (x,y) where x is the total # of hits
        and y is a list of identifiers like ["foo", "bar", etc.]"""

        query = self._prefix_query('fulltext', query)
        result_list = self.raw_search(query, rows=rows, start=start)
        e = ElementTree()
        try:
            e.parse(StringIO(result_list))
        except SyntaxError as e:
            raise SolrError(e)

        total_nbr_text = e.find('info/range_info/total_nbr').text
        # total_nbr_text = e.find('result').get('numFound')  # for raw xml
        total_nbr = int(total_nbr_text) if total_nbr_text else 0

        out = []
        for r in e.getiterator('hit'):
            for d in r.find('metadata'):
                for x in list(d.getiterator()):
                    if x.tag == "identifier":
                        xid = six.text_type(x.text).encode('utf-8')
                        if xid.startswith('OCA/'):
                            xid = xid[4:]
                        elif xid.endswith('.txt'):
                            xid = xid.split('/')[-1].split('_')[0]
                        elif xid.endswith('_ZZ'):
                            xid = xid[:-3]
                        out.append(xid)
                        break
        return (total_nbr, out)
예제 #10
0
    def pagetext_search(self, locator, query, rows=None, start=None):
        """Does an advanced search on
               pagetext:blah locator:identifier
        where identifier is one of the id's from fulltext search.
        You get back a list of page numbers like [21, 25, 39]."""

        def extract(page_id):
            """TODO: DjVu format is deprecated. Is this function
            still even used?
            A page id is something like
            'adventsuburbanit00butlrich_0065.djvu',
            which this function extracts asa a locator and
            a leaf number ('adventsuburbanit00butlrich', 65). """

            g = re.search('(.*)_(\d{4})\.djvu$', page_id)
            a,b = g.group(1,2)
            return a, int(b)

        # try using qf= parameter here and see if it gives a speedup. @@
        # pdb.set_trace()
        query = self._prefix_query('pagetext', query)
        page_hits = self.raw_search(query,
                                    fq='locator:' + locator,
                                    rows=rows,
                                    start=start)
        XML = ElementTree()
        try:
            XML.parse(StringIO(page_hits))
        except SyntaxError as e:
            raise SolrError(e)
        page_ids = list(e.text for e in XML.getiterator('identifier'))
        return [extract(x)[1] for x in page_ids]
예제 #11
0
def extractImages(html):
    if html is None:
        return [], html
    
    tree = ElementTree()
    tree.parse(StringIO(html))
    imagetags = tree.findall(".//img")
    
    images = []
    for tag in imagetags:
        image = tag.get('src')
        path, name = os.path.split(image)
        if image not in images:
            images.append(image)
        tag.set('alt', name)
        tag.set('title', name)

    #index files for multipart storage
    index = {}
    for image in images:
        path, name = os.path.split(image)        
        index[image] = '0x%08x' % binascii.crc32(name)

    #update html email image tags 
    for tag in imagetags:
        image = tag.get('src')
        tag.set('src', "cid:%s" % index[image])
            
    html =  StringIO()
    tree.write(html)
    html.write("\n")
    return [index, html.getvalue()]
예제 #12
0
class _DXML(object):
    
    def __init__(self, path, tagmap={}, tagdefault=None, **options): 
        self._path, self._options = path, options
        self._tree = ElementTree()
        self._tree.parse(self._path)
        self.verbosity, self.traceback, self.graceful = 1, False, False
        self._tagmap = tagmap
        self._tagdefault = self._trivial if tagdefault is None else tagdefault
    
    def __iter__(self):
        
        self._preiter_hook()
        
        # Stage 1: namespaces
        for o in self._xml_namespaces(): # IGNORE:E1101
            yield o
            
        # Stage 2: resources
        r = self._tree.getroot() 
        for e in [r] + r.getchildren(): # IGNORE:E1101
            try: 
                for o in self._tagmap.get(e.tag, self._tagdefault)(e):
                    yield o
            except Exception, x: 
                self._except(Exception, x)
                    
        # Stage 3: inheritance etc.
        self._postiter_hook()
예제 #13
0
def extract_positions(url):
	tree = ElementTree()
	parser = XMLParser(encoding="iso-8859-1")
	data = urllib.urlopen(url)
	tree.parse(data, parser=parser)
	positions = tree.getroot().findall("team")
	allpos = []
	for pos in positions:
		realpos = pos.find("pos")
		latitude = float(realpos.attrib['a'])
		longitude = float(realpos.attrib['o'])
		speed = float(realpos.attrib['s'])
		course = float(realpos.attrib['c'])
		last_update = datetime.utcfromtimestamp(int(realpos.attrib["w"]))
		dtf = float(realpos.attrib['d'])

		_id = pos.attrib["id"]
		# pos = geo.xyz(latitude, latitude)

		# final object
		result = {}
		result["str_latitude"] = format_deg(latitude, "N", "S")
		result["str_longitude"] = format_deg(longitude, "E", "W")
		result["speed"] = speed
		result["course"] = course
		result["_id"] = _id
		result["dtf"] = dtf
		result["last_update"] = last_update

		allpos.append(result)
	return allpos
예제 #14
0
    def extractElement(self, elementpath, respdata):

        try:
            tree = ElementTree()
            tree.parse(StringIO(respdata))
        except:
            return None

        # Strip off the top-level item
        if elementpath[0] == '/':
            elementpath = elementpath[1:]
            splits = elementpath.split('/', 1)
            root = splits[0]
            if tree.getroot().tag != root:
                return None
            elif len(splits) == 1:
                return tree.getroot().text
            else:
                elementpath = splits[1]

        e = tree.find(elementpath)
        if e is not None:
            return e.text
        else:
            return None
예제 #15
0
    def __get_runtime_status(self, runtime_status_files):
        '''
        Helper funcion for montioring the status of the task.
        It reads the status files of all modules and reports which ones are still
        running.
        '''

        task_status = 'finished'
        running_module_slots = list()

        for (slot_name, status_file) in runtime_status_files.items():
            if not os.path.isfile(status_file):
                time.sleep(0.1)

            assert os.path.isfile(status_file), 'runtime status file %r not found.' \
                % status_file

            tree = ElementTree()
            tree.parse(status_file)
            status_file_xml_root_node = tree.getroot()
            node = status_file_xml_root_node.find('status')

            status = node.text.strip()

            if status == 'running':
                task_status = 'running'
                running_module_slots.append(slot_name)

        return (task_status, running_module_slots)
예제 #16
0
def list_articles(target_directory, supplementary_materials=False, skip=[]):
    listing = listdir(target_directory)
    for filename in listing:
        result_tree = ElementTree()
        result_tree.parse(path.join(target_directory, filename))
        for tree in result_tree.iterfind('article'):
            pmcid = _get_pmcid(tree)
            if pmcid in skip:
                continue

            result = {}
            result['name'] = pmcid
            result['doi'] = _get_article_doi(tree)
            result['article-categories'] = _get_article_categories(tree)
            result['article-contrib-authors'] = _get_article_contrib_authors(
                tree)
            result['article-title'] = _get_article_title(tree)
            result['article-abstract'] = _get_article_abstract(tree)
            result['journal-title'] = _get_journal_title(tree)
            result['article-year'], \
                result['article-month'], \
                result['article-day'] = _get_article_date(tree)
            result['article-url'] = _get_article_url(tree)
            result['article-license-url'], \
                result['article-license-text'], \
                result['article-copyright-statement'] = _get_article_licensing(tree)
            result['article-copyright-holder'] = _get_article_copyright_holder(
                tree)

            if supplementary_materials:
                result[
                    'supplementary-materials'] = _get_supplementary_materials(
                        tree)
            yield result
예제 #17
0
 def _get_crumb(self):
     """Gets crumb by making the appropriate API call"""
     response = urllib2.urlopen("".join([self.base_url, "getCrumb"]))
     tree = ElementTree()
     tree.parse(response)
     for elem in tree.getroot().findall("crumb"):
         self.crumb = elem.text
예제 #18
0
    def pagetext_search(self, locator, query, rows=None, start=None):
        """Does an advanced search on
               pagetext:blah locator:identifier
        where identifier is one of the id's from fulltext search.
        You get back a list of page numbers like [21, 25, 39]."""
        def extract(page_id):
            """A page id is something like
            'adventsuburbanit00butlrich_0065.djvu',
            which this function extracts asa a locator and
            a leaf number ('adventsuburbanit00butlrich', 65). """

            g = re.search('(.*)_(\d{4})\.djvu$', page_id)
            a, b = g.group(1, 2)
            return a, int(b)

        # try using qf= parameter here and see if it gives a speedup. @@
        # pdb.set_trace()
        query = self._prefix_query('pagetext', query)
        page_hits = self.raw_search(query,
                                    fq='locator:' + locator,
                                    rows=rows,
                                    start=start)
        XML = ElementTree()
        try:
            XML.parse(StringIO(page_hits))
        except SyntaxError, e:
            raise SolrError, e
예제 #19
0
    def add_from_file(self, filename):
        '''parses xml file and stores wanted details'''
        Gtk.Builder.add_from_file(self, filename)

        # extract data for the extra interfaces
        tree = ElementTree()
        tree.parse(filename)

        ele_widgets = tree.getiterator("object")
        for ele_widget in ele_widgets:
            name = ele_widget.attrib['id']
            widget = self.get_object(name)

            # populate indexes - a dictionary of widgets
            self.widgets[name] = widget

            # populate a reversed dictionary
            self._reverse_widget_dict[widget] = name

            # populate connections list
            ele_signals = ele_widget.findall("signal")

            connections = [
                (name,
                ele_signal.attrib['name'],
                ele_signal.attrib['handler']) for ele_signal in ele_signals]

            if connections:
                self.connections.extend(connections)

        ele_signals = tree.getiterator("signal")
        for ele_signal in ele_signals:
            self.glade_handler_dict.update(
            {ele_signal.attrib["handler"]: None})
예제 #20
0
    def extractElement(self, elementpath, respdata):

        try:
            tree = ElementTree()
            tree.parse(StringIO(respdata))
        except:
            return None

        # Strip off the top-level item
        if elementpath[0] == '/':
            elementpath = elementpath[1:]
            splits = elementpath.split('/', 1)
            root = splits[0]
            if tree.getroot().tag != root:
                return None
            elif len(splits) == 1:
                return tree.getroot().text
            else:
                elementpath = splits[1]

        e = tree.find(elementpath)
        if e is not None:
            return e.text
        else:
            return None
예제 #21
0
def _getHostState(base_url, method, acceptable_params, debug, **args):
	"""Makes the request and parses the response for its wrapper method"""
	#check if acceptable criteria was entered (prevents some errors)
	if not _correct_params(acceptable_params,**args):
		raise ValueError("At least one parameter with incorrect name given. Check http://devel.yahoo.com/igor/guide/rest_api.html for acceptable parameters")
	
	response = _GET(base_url, method, debug, **args)
	# parse the XML response
	tree = ElementTree()
	tree.parse(response)

	pkg_list = []
	host_dic = {}
	#pkg_dic = {}
	set_dic = {}

	for elem in tree.iter():
		if elem.tag == "state":
			host_dic.update(elem.attrib)
		if elem.tag == "package":
			set_dic = {}
			pkg_list.append(elem.attrib)
		if elem.tag == "setting":
			set_dic.update({ elem.attrib.values()[0] : elem.text })
			pkg_list[-1]["setting"] = set_dic


	host_dic["packages"] = pkg_list		
	return Obj(host_dic)
def list_articles(target_directory, supplementary_materials=False, skip=[]):
    listing = listdir(target_directory)
    for filename in listing:
        result_tree = ElementTree()
        result_tree.parse(path.join(target_directory, filename))
        for tree in result_tree.iterfind('article'):
            pmcid = _get_pmcid(tree)
            if pmcid in skip:
                continue

            result = {}
            result['name'] = pmcid
            result['doi'] = _get_article_doi(tree)
            result['article-categories'] = _get_article_categories(tree)
            result['article-contrib-authors'] = _get_article_contrib_authors(tree)
            result['article-title'] = _get_article_title(tree)
            result['article-abstract'] = _get_article_abstract(tree)
            result['journal-title'] = _get_journal_title(tree)
            result['article-year'], \
                result['article-month'], \
                result['article-day'] = _get_article_date(tree)
            result['article-url'] = _get_article_url(tree)
            result['article-license-url'], \
                result['article-license-text'], \
                result['article-copyright-statement'] = _get_article_licensing(tree)
            result['article-copyright-holder'] = _get_article_copyright_holder(tree)

            if supplementary_materials:
                result['supplementary-materials'] = _get_supplementary_materials(tree)
            yield result
예제 #23
0
def _getPropertyPermission(base_url, method, acceptable_params, debug, **args):
	"""Makes the request and parses the response for its wrapper method"""
	#check if acceptable criteria was entered (prevents some errors)
	if not _correct_params(acceptable_params,**args):
		raise ValueError("At least one parameter with incorrect name given. Check http://devel.yahoo.com/igor/guide/rest_api.html for acceptable parameters")

	response = _GET(base_url, method, debug, **args)
	# parse the XML response
	tree = ElementTree()
	tree.parse(response)

	acl_lst = []
	acl_dic = {}

	for elem in tree.iter():
		if elem.tag == "acl":
			if acl_dic:
				acl_lst.append( Obj(acl_dic) )
				acl_dic = {}
				
			acl_dic.update(elem.attrib)
		if elem.tag == "group":
			acl_dic[elem.text] = elem.attrib["perm"]
	
	if acl_dic:
		acl_lst.append( Obj(acl_dic) )
	return acl_lst
예제 #24
0
    def tweak_build_xml(self):
        runjdwp_args = [
            'transport=dt_socket',
            'server=y',
            'address=8765',
            'suspend=n',
        ]
        runjdwp_args = ','.join(runjdwp_args)
        jvm_debug_args = [
            '-Xdebug',
            '-Xrunjdwp:%s' % (runjdwp_args,),
        ]
        jvm_debug_args = ' '.join(jvm_debug_args)

        build_xml = self.get_build_xml()
        tree = ElementTree()
        tree.parse(build_xml)

        root = tree.getroot()
        targets = root.findall('target')
        for node in targets:
            if node.get('name') == 'run':
                java_node = node.find('java')
                SubElement(java_node, 'jvmarg', {
                    'line': jvm_debug_args,
                })
        tree.write(build_xml)
예제 #25
0
class LastParser(object):

    RSS_URL = "http://ws.audioscrobbler.com/2.0/user/{0}/recenttracks.rss"

    def __init__(self, user):
        self.tree = ElementTree()
        self.tree.parse(urllib2.urlopen(self.RSS_URL.format(user)))

    def get_songs(self, count=10):
        l = []
        for item in self.tree.getiterator("item"):
            d = {}
            for e in item:
                d[e.tag] = e.text
            l.append(d)
        return l[:count]
    
    def get_song(self):
        return self.get_songs(1)[0]

    def get_titles(self, count=10):
        l = [title.text for title in self.tree.getiterator("title")]
        return l[1:count + 1] # removing rss title

    def get_title(self):
        return self.get_titles(1)[0]
예제 #26
0
파일: clue.py 프로젝트: agiledata/pkglib
    def scrape_pkg_uri(self, uri, pkg):
        """
        Scrape package metadata from PyPi when it's running
        as the Clue Release Manager.

        Parameters
        ----------
        uri : `str`
            URI to page containing package's homepage
        pkg : `str`
            Package name
        """
        # Example entry:
        #<div class="distro-block distro-metadata">
        #  <h4>Metadata</h4>
        #  <dl>
        #    <dt>Distro Index Owner:</dt>
        #    <dd>acmepypi</dd>
        #    <dt>Home Page:</dt>
        #    <dd><a href="http://mysvn/acme.helloworld">
        #           http://mysvn/acme.helloworld</a></dd>
        #  </dl>
        #</div>
        tree = ElementTree()
        try:
            tree.parse(urllib2.urlopen(uri))
        except urllib2.HTTPError, e:
            raise UserError("Can't find repository URL for package %s (%s). "
                            "Has it been registered in PyPi?" % (pkg, e))
예제 #27
0
    def tweak_build_xml(self):
        runjdwp_args = [
            'transport=dt_socket',
            'server=y',
            'address=8765',
            'suspend=n',
        ]
        runjdwp_args = ','.join(runjdwp_args)
        jvm_debug_args = [
            '-Xdebug',
            '-Xrunjdwp:%s' % (runjdwp_args, ),
        ]
        jvm_debug_args = ' '.join(jvm_debug_args)

        build_xml = self.get_build_xml()
        tree = ElementTree()
        tree.parse(build_xml)

        root = tree.getroot()
        targets = root.findall('target')
        for node in targets:
            if node.get('name') == 'run':
                java_node = node.find('java')
                SubElement(java_node, 'jvmarg', {
                    'line': jvm_debug_args,
                })
        tree.write(build_xml)
예제 #28
0
    def scrape_pkg_uri(self, uri, pkg):
        """
        Scrape package metadata from PyPi when it's running
        as the Clue Release Manager.

        Parameters
        ----------
        uri : `str`
            URI to page containing package's homepage
        pkg : `str`
            Package name
        """
        # Example entry:
        #<div class="distro-block distro-metadata">
        #  <h4>Metadata</h4>
        #  <dl>
        #    <dt>Distro Index Owner:</dt>
        #    <dd>acmepypi</dd>
        #    <dt>Home Page:</dt>
        #    <dd><a href="http://mysvn/acme.helloworld">
        #           http://mysvn/acme.helloworld</a></dd>
        #  </dl>
        #</div>
        tree = ElementTree()
        try:
            tree.parse(urllib2.urlopen(uri))
        except urllib2.HTTPError, e:
            raise UserError("Can't find repository URL for package %s (%s). "
                            "Has it been registered in PyPi?" % (pkg, e))
예제 #29
0
파일: mimi.py 프로젝트: welchr/snipper
def mimi_fetch_interactions(gene_id, taxid=None):
    gene_id = str(gene_id)

    url = MIMI_INT_URL % gene_id

    try:
        if _SNIPPER_DEBUG:
            print "DEBUG: executing MiMI URL %s" % url
    except:
        pass

    xml = urllib2.urlopen(url, timeout=CON_TIMEOUT)
    tree = ElementTree()
    tree.parse(xml)

    go_pattern = re.compile("(.+) \[GO:(\d+)\]")

    def extract(pattern, string):
        match = pattern.search(string)
        if match:
            return match.groups()
        else:
            return (None, None)

    results = []
    for int_gene in tree.getroot().findall(
            "MiMI/Response/ResultSet/Result/InteractingGene"):
        other_gene = int_gene.find("GeneID").text
        interaction = GeneInteraction(gene_id, other_gene)

        for element in int_gene.getchildren():
            if element.tag == "TaxonomyID":
                interaction.set_tax(element.text)
            elif element.tag == "InteractionAttribute":
                type = element.get('type')
                if type == "Component":
                    tup = extract(go_pattern, element.text)
                    interaction.add_component(*tup)
                elif type == "Function":
                    tup = extract(go_pattern, element.text)
                    interaction.add_function(*tup)
                elif type == "Process":
                    tup = extract(go_pattern, element.text)
                    interaction.add_process(*tup)
                elif type == "Provenance":
                    interaction.add_provenance(element.text)
                elif type == "PubMed":
                    interaction.add_pubmed(element.text)
                elif type == "InteractionType":
                    interaction.add_interaction_type(element.text)

        # Taxonomy ID filter.
        if taxid != None:
            if interaction.taxon_id != taxid:
                continue

        results.append(interaction)

    return results
def get_major_category_from_pmid(pmid):
    url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=%s&retmode=xml' % pmid
    xml_file = _get_file_from_url(url)
    tree = ElementTree()
    tree.parse(xml_file)
    for e in tree.iterfind('PubmedArticle/MedlineCitation/MeshHeadingList/MeshHeading/DescriptorName'):
        if e.attrib['MajorTopicYN'] == 'Y':
            return _postprocess_category(e.text)
예제 #31
0
 def parse_xml(self, xml_file):
     tree = ElementTree()
     try:
         tree.parse(xml_file)
     except (SyntaxError):
         self.log("parse failed %s" % (xml_file))
         return None
     return tree
예제 #32
0
 def __init__(self, result_xml):
     et = ElementTree()
     try:
         w = result_xml.encode('utf-8')
         def tx(a): return (type(a), len(a))
         et.parse(StringIO(w))
     except SyntaxError, e:
         ptb = traceback.extract_stack()
         raise SolrError, (e, result_xml, traceback.format_list(ptb))
예제 #33
0
파일: util.py 프로젝트: djibi2/pdk
def parse_xml(source):
    '''Return an ElementTree.

    Includes comments and processing instructions.
    '''
    tree = ElementTree()
    pdk_parser = PDKXMLTreeBuilder()
    tree.parse(source, pdk_parser)
    return tree
예제 #34
0
파일: mimi.py 프로젝트: welchr/Snipper
def mimi_fetch_interactions(gene_id,taxid=None):
  gene_id = str(gene_id);
  
  url = MIMI_INT_URL % gene_id;
  
  try:
    if _SNIPPER_DEBUG:
      print "DEBUG: executing MiMI URL %s" % url;
  except:
    pass
  
  xml = urllib2.urlopen(url,timeout=CON_TIMEOUT);
  tree = ElementTree();
  tree.parse(xml);
  
  go_pattern = re.compile("(.+) \[GO:(\d+)\]");
  def extract(pattern,string):
    match = pattern.search(string);
    if match:
      return match.groups();
    else:
      return (None,None);
  
  results = [];
  for int_gene in tree.getroot().findall("MiMI/Response/ResultSet/Result/InteractingGene"):
    other_gene = int_gene.find("GeneID").text;
    interaction = GeneInteraction(gene_id,other_gene);
    
    for element in int_gene.getchildren():
      if element.tag == "TaxonomyID":
        interaction.set_tax(element.text);
      elif element.tag == "InteractionAttribute":
        type = element.get('type');
        if type == "Component":
          tup = extract(go_pattern,element.text);
          interaction.add_component(*tup);
        elif type == "Function":
          tup = extract(go_pattern,element.text);
          interaction.add_function(*tup);
        elif type == "Process":
          tup = extract(go_pattern,element.text);
          interaction.add_process(*tup);
        elif type == "Provenance":
          interaction.add_provenance(element.text);
        elif type == "PubMed":
          interaction.add_pubmed(element.text);
        elif type == "InteractionType":
          interaction.add_interaction_type(element.text);
    
    # Taxonomy ID filter. 
    if taxid != None:
      if interaction.taxon_id != taxid:
        continue;
    
    results.append(interaction);
    
  return results;
예제 #35
0
 def set_game_info(self, info):
     self.info = info
     tree = ElementTree()
     tree.parse(info["path"])
     link_node = tree.find("link")
     if link_node is not None:
         self.link_field.set_text(link_node.text.strip())
     else:
         self.link_field.set_text("")
예제 #36
0
    def __str__(self):
        tree = ElementTree()
        tree.parse(self.exc)

        for elem in tree.iter():
            if elem.tag == "msg":
                err_msg = elem.text

        return "".join(["\n", str(self.exc), "\nAPI Error Message: ", err_msg])
예제 #37
0
 def set_game_info(self, info):
     self.info = info
     tree = ElementTree()
     tree.parse(info["path"])
     link_node = tree.find("link")
     if link_node is not None:
         self.link_field.set_text(link_node.text.strip())
     else:
         self.link_field.set_text("")
예제 #38
0
def parse_xml(source):
    '''Return an ElementTree.

    Includes comments and processing instructions.
    '''
    tree = ElementTree()
    pdk_parser = PDKXMLTreeBuilder()
    tree.parse(source, pdk_parser)
    return tree
def _get_pmcids_from_dois(dois):
    url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pmc&term=%s' % \
        '%20OR%20'.join([doi+'[doi]' for doi in dois])
    xml_file = _get_file_from_url(url)
    tree = ElementTree()
    tree.parse(xml_file)
    pmcids = []
    for e in tree.iterfind('IdList/Id'):
        pmcids.append(e.text)
    return pmcids
def get_categories_from_pmid(pmid):
    url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=%s&retmode=xml' % pmid
    xml_file = _get_file_from_url(url)
    tree = ElementTree()
    tree.parse(xml_file)
    categories = []
    for e in tree.iterfind('PubmedArticle/MedlineCitation/MeshHeadingList/MeshHeading/DescriptorName'):
        category = _postprocess_category(e.text)
        categories.append(category)
    return categories
예제 #41
0
def _get_pmcids_from_dois(dois):
    url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pmc&term=%s' % \
        '%20OR%20'.join([doi+'[doi]' for doi in dois])
    xml_file = _get_file_from_url(url)
    tree = ElementTree()
    tree.parse(xml_file)
    pmcids = []
    for e in tree.iterfind('IdList/Id'):
        pmcids.append(e.text)
    return pmcids
예제 #42
0
파일: Utils.py 프로젝트: ostende/Athantimes
    def parseStreamListAthanmenu(self):
        Athanlist1 = []
        tree = ElementTree()
        tree.parse(self.xml)
        for Athan in tree.findall('Choice'):
            Contnt = str(Athan.findtext('Contnt'))
            name = str(Athan.findtext('name'))
            Athanlist1.append({'Contnt': Contnt, 'name': name})

        return Athanlist1
예제 #43
0
def get_pmid_from_doi(doi):
    if not type(doi) == unicode:
        raise TypeError, "Cannot get PMID for DOI %s of type %s." % (doi, type(doi))
    url = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=%s' % doi
    xml_file = _get_file_from_url(url)
    tree = ElementTree()
    tree.parse(xml_file)
    try:
        return int(tree.find('IdList/Id').text)
    except AttributeError:
        return None
예제 #44
0
파일: xmlrpc.py 프로젝트: intiocean/pkglib
    def get_links(self, pkg_name):
        """
        Return the simple page links.
        """
        tree = ElementTree()
        try:
            tree.parse(urllib2.urlopen('%s/simple/%s' % (self.uri, pkg_name)))
        except (urllib2.HTTPError, exceptions.SyntaxError):
            return None

        return tree.getroot().findall('body/a')
예제 #45
0
    def get_links(self, pkg_name):
        """ Return the simple page links
        """
        tree = ElementTree()
        try:
            tree.parse(urllib2.urlopen('%s/simple/%s' % (self.uri, pkg_name)))
        except (urllib2.HTTPError, exceptions.SyntaxError):
            return None

        ns = self._get_namespace(tree)
        return tree.getroot().findall(ns + 'body/ul/li/a')
예제 #46
0
파일: stream.py 프로젝트: kingvuplus/test
    def parseStreamList(self):
        tvlist = []
        tree = ElementTree()
        tree.parse(self.xml)
        for iptv in tree.findall('iptv'):
            tvlist.append({'name': str(iptv.findtext('name')).title(),
             'icon': str(iptv.findtext('icon')),
             'type': str(iptv.findtext('type')),
             'uri': self.parseStreamURI(str(iptv.findtext('uri')))})

        return sorted(tvlist, key=lambda item: item['name'])
예제 #47
0
파일: Blofeld.py 프로젝트: levicole/Blofeld
 def __init__(self):
     self._path = os.path.dirname(os.path.abspath(__file__))
     print "Loading Rhythmbox database...",
     tree = ElementTree()
     tree.parse(database)
     self._entries = tree.findall("entry")
     self.songs = {}
     self.artists = {}
     self.albums = {}
     self.relationships = {}
     self.load_rhythmbox_db()
예제 #48
0
파일: Utils.py 프로젝트: ostende/Athantimes
    def parseListAthanAyames(self):
        Athanlist1 = []
        tree = ElementTree()
        tree.parse(self.xml)
        for Athan in tree.findall('ayames'):
            name = str(Athan.findtext('name'))
            date1 = str(Athan.findtext('date1'))
            date2 = str(Athan.findtext('date2'))
            Athanlist1.append({'name': name, 'date1': date1, 'date2': date2})

        return Athanlist1
예제 #49
0
파일: Utils.py 프로젝트: ostende/Athantimes
    def parseStreamListAthanmenu_1(self):
        Athanlist1 = []
        tree = ElementTree()
        tree.parse(self.xml)
        for Athan in tree.findall('Contry'):
            name = str(Athan.findtext('name'))
            url = str(Athan.findtext('url'))
            Id = str(Athan.findtext('Id'))
            Athanlist1.append({'name': name, 'url': url, 'Id': Id})

        return Athanlist1
예제 #50
0
파일: Utils.py 프로젝트: ostende/Athantimes
    def parseListAthanFlash(self):
        Athanlist1 = []
        tree = ElementTree()
        tree.parse(self.xml)
        for Athan in tree.findall('flash'):
            name = str(Athan.findtext('name'))
            url = str(Athan.findtext('url'))
            urimg = str(Athan.findtext('urimg'))
            Athanlist1.append({'name': name, 'url': url, 'urimg': urimg})

        return Athanlist1
예제 #51
0
파일: plugin.py 프로젝트: Akki01/dvbapp
def parseStreamDB(filename):
	tvlist = []
	tree = ElementTree()
	tree.parse(filename)

	for iptv in tree.findall('iptv'):
		n = str(iptv.findtext('name'))
		i = str(iptv.findtext('icon'))
		u = str(iptv.findtext('uri'))
		t = str(iptv.findtext('type'))
		tvlist.append({'name':n, 'icon':i, 'type':t, 'uri':u})
	return tvlist
예제 #52
0
파일: darcs.py 프로젝트: ezc/mercurial
 def xml(self, cmd, **kwargs):
     # NOTE: darcs is currently encoding agnostic and will print
     # patch metadata byte-for-byte, even in the XML changelog.
     etree = ElementTree()
     # While we are decoding the XML as latin-1 to be as liberal as
     # possible, etree will still raise an exception if any
     # non-printable characters are in the XML changelog.
     parser = XMLParser(encoding='latin-1')
     fp = self._run(cmd, **kwargs)
     etree.parse(fp, parser=parser)
     self.checkexit(fp.close())
     return etree.getroot()
예제 #53
0
	def parseStreamList(self):
		tvlist = []
		tree = ElementTree()
		tree.parse(self.xml)

		for iptv in tree.findall('iptv'):
			n = str(iptv.findtext('name'))
			i = str(iptv.findtext('icon'))
			u = str(iptv.findtext('uri'))
			t = str(iptv.findtext('type'))
			tvlist.append({'name':n, 'icon':i, 'type':t, 'uri':self.parseStreamURI(u)})
		return tvlist
예제 #54
0
 def _getresponse(self):
     r = self.h.getresponse()
     if r.status == 200:
         et = ElementTree()
         et.parse(r)
         if et.find('status').text == 'OK':
             return et
         raise NessusException(et.find('contents').text)
     elif r.status == 403:
         self.token = None
         raise NessusSessionException('Session timed out.')
     raise NessusException(r.read())
예제 #55
0
    def fulltext_search(self, query, rows=None, start=None):
        """Does an advanced search on fulltext:blah.
        You get back a pair (x,y) where x is the total # of hits
        and y is a list of identifiers like ["foo", "bar", etc.]"""

        query = self._prefix_query('fulltext', query)
        result_list = self.raw_search(query, rows=rows, start=start)
        e = ElementTree()
        try:
            e.parse(StringIO(result_list))
        except SyntaxError, e:
            raise SolrError, e
예제 #56
0
    def __init__(self, result_xml):
        et = ElementTree()
        try:
            w = result_xml.encode('utf-8')

            def tx(a):
                return (type(a), len(a))

            et.parse(StringIO(w))
        except SyntaxError, e:
            ptb = traceback.extract_stack()
            raise SolrError, (e, result_xml, traceback.format_list(ptb))
예제 #57
0
파일: plugin.py 프로젝트: popazerty/bh1
def parseStreamDB(filename):
	tvlist = []
	tree = ElementTree()
	tree.parse(filename)

	for iptv in tree.findall('iptv'):
		n = str(iptv.findtext('name'))
		i = str(iptv.findtext('icon'))
		u = str(iptv.findtext('uri'))
		t = str(iptv.findtext('type'))
		tvlist.append({'name':n, 'icon':i, 'type':t, 'uri':u})
	return tvlist
예제 #58
0
 def parseStreamList(self):
     tvlist = []
     tree = ElementTree()
     tree.parse(self.xml)
     for iptv in tree.findall("iptv"):
         tvlist.append({
             "name" : str(iptv.findtext("name")).title(),
             "icon" : str(iptv.findtext("icon")),
             "type" : str(iptv.findtext("type")),
             "uri"  : self.parseStreamURI(str(iptv.findtext("uri")))
         })
     return sorted(tvlist, key=lambda item: item["name"])
예제 #59
-1
파일: plugin.py 프로젝트: satdreamgr/Panel
    def updatebq(self):
        from xml.etree.cElementTree import ElementTree
        tree = ElementTree()
        tree.parse(GSXML)
        tvlist = []
        for iptv in tree.findall("iptv"):
            name = iptv.findtext("name").title()
            (protocol, serviceType, bufferSize, epgId) = iptv.findtext("type").split(":")
            uri = iptv.findtext("uri")
            if protocol in "livestreamer":
                uri = "http://localhost:88/" + uri
            uri = uri.replace(":", "%3a")
            service = "#SERVICE {s}:0:1:{e}:{e}:0:0:0:0:0:{u}:{n}\n".format(s=serviceType,e=epgId,u=uri,n=name)
            tvlist.append((name,service))

        tvlist=sorted(tvlist, key=lambda channel: channel[0]) #sort by name
        with open(GSBQ, "w") as f:
            f.write("#NAME GreekStreamTV\n")
            for (name, service) in tvlist:
                f.write(service)

	com = "cat /usr/lib/enigma2/python/Plugins/Satdreamgr/UpdateBouquet/stream.xml ; rm /usr/lib/enigma2/python/Plugins/Satdreamgr/UpdateBouquet/stream.xml"
	out = os.popen(com)

        return list