Example #1
0
def fetch_trigrams():

    for tag in TARGET_TAGS:

        # This manual transfer to a list seems necessary, instead of interating
        # through the selected lines, due to an exception that is thrown
        # in the latter case.
        tag_pairs = []
        for bg in Bigram.select().where(Bigram.tag1 == tag):
            tag_pairs.append((bg.tag1, bg.tag2))

        for pair in tag_pairs:
            resp = session.get(make_url([pair[0], pair[1]]), params={
                'pagesize': 100,
                'site': 'stackoverflow',
            })
            respJson = resp.json()
            if 'items' not in respJson.keys():
                continue

            for i in respJson['items']:
                tags = [pair[0], pair[1], i['name']]
                tags_ord = sorted(tags)
                try:
                    tg = Trigram.create(tag1=tags_ord[0], tag2=tags_ord[1], tag3=tags_ord[2])
                except peewee.IntegrityError:
                    tg = Trigram.get(
                        Trigram.tag1 == tags_ord[0],
                        Trigram.tag2 == tags_ord[1],
                        Trigram.tag3 == tags_ord[2],
                    )
                tg.count = i['count']
                tg.save()