예제 #1
0
파일: lanvin.py 프로젝트: haizi-zh/firenze
def fetch(level=1, data=None, user='******', passwd=''):
    def func(data, level):
        """
        :param data:
        :param level: 0:国家;1:城市;2:商店列表
        """
        if level == 0:
            # 商店
            return [{'func': None, 'data': s} for s in fetch_stores(data)]
        else:
            return []

    # Walk from the root node, where level == 1.
    if data is None:
        data = {'url': 'http://cdn.lanvin.com/xml/footer/en/store-locator.xml',
                'brand_id': 10212, 'brandname_e': u'Lanvin', 'brandname_c': u'浪凡'}

    global db
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', data['brand_id']))

    results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data})
    db.disconnect_db()

    gs.commit_maps(1)

    return results
예제 #2
0
def fetch(level=1, data=None, user='******', passwd=''):
    def func(data, level):
        """
        :param data:
        :param level: 0:国家;1:城市;2:商店列表
        """
        if level == 0:
            # 商店
            return [{'func': None, 'data': s} for s in fetch_stores(data)]
        else:
            return []

    # Walk from the root node, where level == 1.
    if data is None:
        data = {
            'url': 'http://cdn.lanvin.com/xml/footer/en/store-locator.xml',
            'brand_id': 10212,
            'brandname_e': u'Lanvin',
            'brandname_c': u'浪凡'
        }

    global db
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' %
               ('stores', data['brand_id']))

    results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data})
    db.disconnect_db()

    gs.commit_maps(1)

    return results
예제 #3
0
def fetch(level=1, data=None, user='******', passwd=''):
    def func(data, level):
        """
        :param data:
        :param level: 0:洲;1:商店列表;2:具体商店
        """
        if level == 0:
            # 洲
            return [{'func': lambda data: func(data, 1), 'data': c} for c in get_continents(data)]
        elif level == 1:
            # 商店列表
            store_list = get_store_list(data)
            return [{'func': lambda data: func(data, 2), 'data': s} for s in store_list]
        elif level == 2:
            # 具体商店信息
            store = get_store_details(data)
            return [{'func': None, 'data': store}]
        else:
            return []

    global db
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id))

    # Walk from the root node, where level == 1.
    if data is None:
        data = {'url': url}
    results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data})
    db.disconnect_db()

    for i in xrange(4):
        gs.commit_maps(i)

    return results
예제 #4
0
파일: kenzo.py 프로젝트: haizi-zh/firenze
def fetch(level=1, data=None, user='******', passwd=''):
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id))

    try:
        html = cm.get_data(url)
    except Exception:
        print 'Error occured: %s' % url
        dump_data = {
            'level': 1,
            'time': cm.format_time(),
            'data': {
                'url': url
            },
            'brand_id': brand_id
        }
        cm.dump(dump_data)
        return []

    js = json.loads(html)
    store_list = []
    for s in js['data']['list']:
        entry = cm.init_store_entry(brand_id, brandname_e, brandname_c)
        cm.update_entry(
            entry, {
                cm.lat: string.atof(s['geo']['lat']),
                cm.lng: string.atof(s['geo']['lng'])
            })
        entry[cm.name_e] = s['contact']['title']
        entry[cm.addr_e] = cm.reformat_addr(s['contact']['address'])
        entry[cm.tel] = s['contact']['phone']
        entry[cm.fax] = s['contact']['fax']
        entry[cm.hours] = cm.reformat_addr(s['contact']['hours'])
        entry[cm.store_type] = s['contact']['selling']
        entry[cm.url] = host + s['link']

        gs.update_city_map(s['city'], s['country'], s['continent'])
        cm.update_entry(
            entry, {
                cm.continent_e: s['continent'],
                cm.country_e: s['country'],
                cm.city_e: s['city']
            })
        gs.field_sense(entry)

        print '(%s / %d) Found store: %s, %s (%s, %s)' % (
            brandname_e, brand_id, entry[cm.name_e], entry[cm.addr_e],
            entry[cm.country_e], entry[cm.continent_e])
        db.insert_record(entry, 'stores')
        store_list.append(entry)

    db.disconnect_db()
    gs.commit_maps(1)
    gs.commit_maps(3)
    return store_list
예제 #5
0
파일: lacoste.py 프로젝트: haizi-zh/firenze
def fetch(level=1, data=None, user='******', passwd=''):
    def func(data, level):
        """
        :param data:
        :param level: 0:国家;1:城市;2:商店列表
        """
        if level == 0:
            # 洲列表
            return [{
                'func': lambda data: func(data, level + 1),
                'data': s
            } for s in fetch_continents(data)]
        if level == 1:
            # 国家列表
            return [{
                'func': lambda data: func(data, level + 1),
                'data': s
            } for s in fetch_countries(data)]
        if level == 2:
            # 城市列表
            return [{
                'func': lambda data: func(data, level + 1),
                'data': s
            } for s in fetch_cities(data)]
        if level == 3:
            # 商店
            return [{'func': None, 'data': s} for s in fetch_stores(data)]
        else:
            return []

    # Walk from the root node, where level == 1.
    if data is None:
        data = {
            'url': 'http://www.lacoste.com/includes/api/stores.api.php',
            'brand_id': 10204,
            'brandname_e': u'LACOSTE',
            'brandname_c': u'鳄鱼'
        }

    global db
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' %
               ('stores', data['brand_id']))

    results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data})
    db.disconnect_db()

    gs.commit_maps(1)

    return results
예제 #6
0
def fetch(user='******', passwd=''):
    global db
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id))

    # Walk from the root node, where level == 1.
    results = fetch_stores(None, 0, None)

    db.disconnect_db()
    for i in xrange(4):
        gs.commit_maps(i)

    return results
예제 #7
0
def fetch(user='******', passwd=''):
    global db
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id))

    # Walk from the root node, where level == 1.
    results = fetch_stores(None, 0, None)

    db.disconnect_db()
    for i in xrange(4):
        gs.commit_maps(i)

    return results
예제 #8
0
파일: kenzo.py 프로젝트: haizi-zh/firenze
def fetch(level=1, data=None, user='******', passwd=''):
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id))

    try:
        html = cm.get_data(url)
    except Exception:
        print 'Error occured: %s' % url
        dump_data = {'level': 1, 'time': cm.format_time(), 'data': {'url': url}, 'brand_id': brand_id}
        cm.dump(dump_data)
        return []

    js = json.loads(html)
    store_list = []
    for s in js['data']['list']:
        entry = cm.init_store_entry(brand_id, brandname_e, brandname_c)
        cm.update_entry(entry, {cm.lat: string.atof(s['geo']['lat']),
                                cm.lng: string.atof(s['geo']['lng'])})
        entry[cm.name_e] = s['contact']['title']
        entry[cm.addr_e] = cm.reformat_addr(s['contact']['address'])
        entry[cm.tel] = s['contact']['phone']
        entry[cm.fax] = s['contact']['fax']
        entry[cm.hours] = cm.reformat_addr(s['contact']['hours'])
        entry[cm.store_type]=s['contact']['selling']
        entry[cm.url]=host+s['link']

        gs.update_city_map(s['city'], s['country'], s['continent'])
        cm.update_entry(entry,{cm.continent_e:s['continent'], cm.country_e:s['country'],
                               cm.city_e:s['city']})
        gs.field_sense(entry)

        print '(%s / %d) Found store: %s, %s (%s, %s)' % (
            brandname_e, brand_id, entry[cm.name_e], entry[cm.addr_e], entry[cm.country_e],
            entry[cm.continent_e])
        db.insert_record(entry, 'stores')
        store_list.append(entry)

    db.disconnect_db()
    gs.commit_maps(1)
    gs.commit_maps(3)
    return store_list
예제 #9
0
def fetch(level=1, data=None, user='******', passwd=''):
    def func(data, level):
        """
        :param data:
        :param level: 0:洲;1:商店列表;2:具体商店
        """
        if level == 0:
            # 洲
            return [{
                'func': lambda data: func(data, 1),
                'data': c
            } for c in get_continents(data)]
        elif level == 1:
            # 商店列表
            store_list = get_store_list(data)
            return [{
                'func': lambda data: func(data, 2),
                'data': s
            } for s in store_list]
        elif level == 2:
            # 具体商店信息
            store = get_store_details(data)
            return [{'func': None, 'data': store}]
        else:
            return []

    global db
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id))

    # Walk from the root node, where level == 1.
    if data is None:
        data = {'url': url}
    results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data})
    db.disconnect_db()

    for i in xrange(4):
        gs.commit_maps(i)

    return results
예제 #10
0
파일: lacoste.py 프로젝트: haizi-zh/firenze
def fetch(level=1, data=None, user='******', passwd=''):
    def func(data, level):
        """
        :param data:
        :param level: 0:国家;1:城市;2:商店列表
        """
        if level == 0:
            # 洲列表
            return [{'func': lambda data: func(data, level + 1), 'data': s} for s in fetch_continents(data)]
        if level == 1:
            # 国家列表
            return [{'func': lambda data: func(data, level + 1), 'data': s} for s in fetch_countries(data)]
        if level == 2:
            # 城市列表
            return [{'func': lambda data: func(data, level + 1), 'data': s} for s in fetch_cities(data)]
        if level == 3:
            # 商店
            return [{'func': None, 'data': s} for s in fetch_stores(data)]
        else:
            return []

    # Walk from the root node, where level == 1.
    if data is None:
        data = {'url': 'http://www.lacoste.com/includes/api/stores.api.php',
                'brand_id': 10204, 'brandname_e': u'LACOSTE', 'brandname_c': u'鳄鱼'}

    global db
    db = cm.StoresDb()
    db.connect_db(user=user, passwd=passwd)
    db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', data['brand_id']))

    results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data})
    db.disconnect_db()

    gs.commit_maps(1)

    return results