コード例 #1
0
ファイル: eu_queue.py プロジェクト: MeTrina/RedisQueue
class EuQueue(object):
    def __init__(self,name,redis_que):
        self.crud = MongoCRUD()
        self.keys_count = app_keys
        self.keys = app_keys.keys()
        self.key_begin = self.app_keys_pop()
        # self.key = app_keys_count(self.key_begin)
        self.redis_queue = redis_que
        self.name = name
        self.db = redis.Redis()

    def app_keys_pop(self):
        if len(self.keys) > 0:
            key = self.keys.pop()
            return key
        else:
            print "*------*-*all app keys have been used*-*-----*"
            sys.exit()
    def app_keys_count(self, key):
        count  = self.keys_count[key]
        if count > 999:
            key = self.app_keys_pop()
            count  = self.keys_count[key]
        count  = count + 1
        self.keys_count[key] = count
        self.key_begin = key
        print self.key_begin
        print count
        return key


    def change_radius(self):
        radius = 500
        return radius

    def change_language(self):
        language = 'zh-TW'
        return language

    def get_url(self, location, type):
        print '*********'
        url = 'https://maps.googleapis.com/maps/api/place/search/json?sensor=false'
        url += '&language=%s' % self.change_language()
        url += '&location=' + '%s,%s' % (location['lat'], location['lng'])
        url += '&radius=%s' % self.change_radius() # 500 m
        url += '&types=%s' % '|'.join(type)
        url += '&key=%s' % self.app_keys_count(self.key_begin)
        url += '&pagetoken='
        return url
    def save_html(self, item):
        print "save html into eu_queue:", item
        self.db.rpush(self.name, item)
    def get_html(self):
        item = self.db.lpop(self.name)
        return item
    def parse_html_save(self, item):
    # Show the source
        time.sleep(2)
        josn_response = self.get_html()
        status = item['status']
        if status == 'OK':
            results = josn_response['results']
            # insert to mongo
            self.crud.save_html_insert(results)
            if 'next_page_token' in item:
                pagetoken = '&pagetoken=%s' % josn_response['next_page_token']
                url = re.sub(r'&pagetoken=.*', pagetoken, url)
                self.parse_html(url)
            else:
                pass
        elif status == 'OVER_QUERY_LIMIT':
            self.key = self.app_keys_pop()
            url = re.sub(r'&key=.*&pagetoken', '&key=%s&pagetoken' % self.key, url)
            self.parse_html(url)
        else:
            return
        '''
コード例 #2
0
class EuQueue(object):
    def __init__(self, name, redis_que):
        self.crud = MongoCRUD()
        self.keys_count = app_keys
        self.keys = app_keys.keys()
        self.key_begin = self.app_keys_pop()
        # self.key = app_keys_count(self.key_begin)
        self.redis_queue = redis_que
        self.name = name
        self.db = redis.Redis()

    def app_keys_pop(self):
        if len(self.keys) > 0:
            key = self.keys.pop()
            return key
        else:
            print "*------*-*all app keys have been used*-*-----*"
            sys.exit()

    def app_keys_count(self, key):
        count = self.keys_count[key]
        if count > 999:
            key = self.app_keys_pop()
            count = self.keys_count[key]
        count = count + 1
        self.keys_count[key] = count
        self.key_begin = key
        print self.key_begin
        print count
        return key

    def change_radius(self):
        radius = 500
        return radius

    def change_language(self):
        language = 'zh-TW'
        return language

    def get_url(self, location, type):
        print '*********'
        url = 'https://maps.googleapis.com/maps/api/place/search/json?sensor=false'
        url += '&language=%s' % self.change_language()
        url += '&location=' + '%s,%s' % (location['lat'], location['lng'])
        url += '&radius=%s' % self.change_radius()  # 500 m
        url += '&types=%s' % '|'.join(type)
        url += '&key=%s' % self.app_keys_count(self.key_begin)
        url += '&pagetoken='
        return url

    def save_html(self, item):
        print "save html into eu_queue:", item
        self.db.rpush(self.name, item)

    def get_html(self):
        item = self.db.lpop(self.name)
        return item

    def parse_html_save(self, item):
        # Show the source
        time.sleep(2)
        josn_response = self.get_html()
        status = item['status']
        if status == 'OK':
            results = josn_response['results']
            # insert to mongo
            self.crud.save_html_insert(results)
            if 'next_page_token' in item:
                pagetoken = '&pagetoken=%s' % josn_response['next_page_token']
                url = re.sub(r'&pagetoken=.*', pagetoken, url)
                self.parse_html(url)
            else:
                pass
        elif status == 'OVER_QUERY_LIMIT':
            self.key = self.app_keys_pop()
            url = re.sub(r'&key=.*&pagetoken', '&key=%s&pagetoken' % self.key,
                         url)
            self.parse_html(url)
        else:
            return
        '''