Ejemplo n.º 1
0
 def query_table(self, table, id_hash):
     conn = sqlite3.connect(sqlite_manifest)
     cur = conn.cursor()
     api = API()
     query = 'SELECT json FROM ' + table + ' WHERE id=\'' + str(
         api.int32(id_hash)) + '\''
     cur.execute(query)
     this_out = cur.fetchone()
     conn.commit()
     conn.close()
     # print(this_out)
     this_json = json.loads("".join(this_out))
     return this_json
Ejemplo n.º 2
0
    def update_public_milestones(self):
        d2_destiny_api_instance = destiny2.Destiny2()
        api = API()
        Milestones.objects.all()

        api_response = d2_destiny_api_instance.get_public_milestones()
        print(api_response)
        # TODO: create sql schema for this mess.
        print('///')
        for each in api_response["Response"]:
            activity_json = self.query_table('DestinyMilestoneDefinition',
                                             each)
            if int(each) != 4109359897 and int(each) != 463010297 and int(
                    each) != 383198939 and int(each) != 3245985898 and int(
                        each) != 534869653:
                print(
                    api.int32(each), '/', each, ' * ',
                    activity_json["displayProperties"]['name'], '/',
                    d2_destiny_api_instance.milestone_types(
                        activity_json['milestoneType']))
                activity_type = d2_destiny_api_instance.milestone_types(
                    activity_json['milestoneType'])
                activity_name = activity_json["displayProperties"]['name']
                activity_type = d2_destiny_api_instance.milestone_types(
                    activity_json['milestoneType'])
                activity_desc = activity_json["displayProperties"][
                    'description']
                # activity_icon = activity_json["displayProperties"]['icon']
                activity_icon = None
                activity_has_variant = 0
                start_date = None
                end_date = None
                if int(each) == 2171429505 or int(each) == 3660836525 or int(
                        each) == 3551755444:
                    # Find the Quests associated with a Milestone
                    for quest in api_response["Response"][each][
                            "availableQuests"]:
                        quest_json = self.query_table(
                            'DestinyInventoryItemDefinition',
                            quest["questItemHash"])
                        print(' >> ', quest_json['displayProperties']['name'],
                              quest_json['displayProperties']['icon'])
                        quest_hash = quest["questItemHash"]
                        quest_name = quest_json['displayProperties']['name']
                        quest_desc = quest_json['displayProperties'][
                            'description']
                        quest_icon = quest_json['displayProperties']['icon']
                        q = Variants(parent_hash_id=int(each),
                                     modifier_type="Quest",
                                     hash_id=int(quest_hash),
                                     name=quest_name,
                                     description=quest_desc,
                                     icon=quest_icon)
                        q.save()
                        activity_has_variant = 1
                        try:
                            # Are there Modifiers for the Quest?
                            for modifier in quest["activity"][
                                    'modifierHashes']:
                                modifier_json = self.query_table(
                                    'DestinyActivityModifierDefinition',
                                    modifier)
                                modifier_name = modifier_json[
                                    'displayProperties']['name']
                                modifier_icon = modifier_json[
                                    'displayProperties']['icon']
                                modifier_desc = modifier_json[
                                    'displayProperties']['description']
                                print('   >> MODIFIERS ', modifier_name,
                                      modifier_icon, modifier_desc)
                                m = Variants(parent_hash_id=int(each),
                                             modifier_type="Modifier",
                                             hash_id=int(modifier),
                                             name=modifier_name,
                                             description=modifier_desc,
                                             icon=modifier_icon)
                                m.save()
                        except:
                            pass
                        for variant in quest["activity"]['variants']:
                            # Are there Variants to the Quest?
                            this_variant = variant['activityHash']
                            # print(this_variant)
                            variant_json = self.query_table(
                                'DestinyActivityDefinition', this_variant)
                            # print(variant_json)
                            variant_mode_hash = variant_json[
                                'directActivityModeHash']  # HEROIC nightfall: 1350109474
                            # print(variant_mode_hash)
                            variant_mode_json = self.query_table(
                                'DestinyActivityModeDefinition',
                                variant_mode_hash)
                            variant_name = variant_mode_json[
                                'displayProperties']['name']
                            variant_icon = variant_mode_json[
                                'displayProperties']['icon']
                            variant_desc = variant_mode_json[
                                'displayProperties']['description']
                            print('   >> VARIANTS ', variant_name,
                                  variant_icon, variant_desc)
                            v = Variants(parent_hash_id=int(each),
                                         modifier_type="Variant",
                                         hash_id=int(this_variant),
                                         name=variant_name,
                                         description=variant_desc,
                                         icon=variant_icon)
                            v.save()
                            activity_has_variant = 1
                            for challenge in quest["challenges"]:
                                # print(challenge)
                                this_challenge = challenge["activityHash"]
                                if this_challenge == this_variant:
                                    challenge_json = self.query_table(
                                        'DestinyObjectiveDefinition',
                                        challenge["objectiveHash"])
                                    # print(challenge_json)
                                    challenge_name = challenge_json[
                                        'displayProperties']['name']
                                    # challenge_icon = challenge_json['displayProperties']['icon']
                                    challenge_desc = challenge_json[
                                        'displayProperties']['description']
                                    print('     >> CHALLENGES ',
                                          challenge_name, challenge_desc,
                                          this_challenge)
                                    # print('     >> CHALLENGES ', challenge)
                                    c = Variants(
                                        parent_hash_id=int(this_variant),
                                        modifier_type="Challenge",
                                        hash_id=int(
                                            challenge["objectiveHash"]),
                                        name=challenge_name,
                                        description=challenge_desc,
                                        icon=variant_icon)
                                    c.save()
                                    # if int(each) == 3551755444:
                                    #     for vendor in api_response["Response"][each]["vendors"]:
                                    #         vendor_json = query_table('DestinyVendorDefinition', vendor['vendorHash'])
                                    #         print('    >> VENDOR ', vendor_json)
                    if int(each) == 3660836525 or int(each) == 3551755444:
                        now_date = datetime.now(timezone.utc)
                        start_date = dateparser.parse(
                            api_response["Response"][each]["startDate"])
                        end_date = dateparser.parse(
                            api_response["Response"][each]["endDate"])
                        print('  >> ', start_date, end_date, now_date)
                        print('  >> DATE DIFF', end_date - now_date)
                elif int(each) != 2171429505 and int(
                        each) != 3245985898 and int(each) != 4109359897:
                    now_date = datetime.now(timezone.utc)
                    start_date = dateparser.parse(
                        api_response["Response"][each]["startDate"])
                    end_date = dateparser.parse(
                        api_response["Response"][each]["endDate"])
                    print('  >> ', start_date, end_date, now_date)
                    print('  >> DATE DIFF', end_date - now_date)
                m = Milestones(hash_id=int(each),
                               event_type=activity_type,
                               name=activity_name,
                               description=activity_desc,
                               icon=activity_icon,
                               start_date=start_date,
                               end_date=end_date,
                               has_variant=activity_has_variant)
                m.save()
            elif int(each) == 463010297:
                print(
                    api.int32(each), '/', each, ' * ',
                    activity_json['friendlyName'], '/',
                    d2_destiny_api_instance.milestone_types(
                        activity_json['milestoneType']))
                # print(milestone_types(activity_json['milestoneType']))
                quest_hash = quest["questItemHash"]
                activity_type = d2_destiny_api_instance.milestone_types(
                    activity_json['milestoneType'])
                activity_name = activity_json['friendlyName']
                activity_desc = quest_json['displayProperties']['description']
                activity_icon = quest_json['displayProperties']['icon']
                start_date = dateparser.parse(
                    api_response["Response"][each]["startDate"])
                end_date = dateparser.parse(
                    api_response["Response"][each]["endDate"])
                activity_has_variant = 1
                for quest in api_response["Response"][each]["availableQuests"]:
                    # print(quest.quest_item_hash)
                    quest_json = self.query_table(
                        'DestinyInventoryItemDefinition',
                        quest["questItemHash"])
                    print('  > ', quest_json['displayProperties']['name'],
                          quest_json['displayProperties']['icon'])
                    quest_hash = quest["questItemHash"]
                    quest_name = quest_json['displayProperties']['name']
                    quest_desc = quest_json['displayProperties']['description']
                    quest_icon = quest_json['displayProperties']['icon']
                    q = Variants(parent_hash_id=int(each),
                                 modifier_type="Quest",
                                 hash_id=int(quest_hash),
                                 name=quest_name,
                                 description=quest_desc,
                                 icon=quest_icon)
                    q.save()
                    activity_has_variant = 1
                m = Milestones(hash_id=int(each),
                               event_type=activity_type,
                               name=activity_name,
                               description=activity_desc,
                               icon=activity_icon,
                               start_date=start_date,
                               end_date=end_date,
                               has_variant=activity_has_variant)
                m.save()
            elif int(each) == 3245985898:
                print(
                    api.int32(each), '/', each, ' * ',
                    activity_json["displayProperties"]['name'], '/',
                    d2_destiny_api_instance.milestone_types(
                        activity_json['milestoneType']))
                activity_name = activity_json["displayProperties"]['name']
                activity_type = d2_destiny_api_instance.milestone_types(
                    activity_json['milestoneType'])
                activity_desc = activity_json["displayProperties"][
                    'description']
                activity_icon = activity_json["displayProperties"]['icon']
                start_date = None
                end_date = None
                for quest in api_response["Response"][each]["availableQuests"]:
                    for variant in quest["activity"]['variants']:
                        this_variant = variant['activityHash']
                        variant_json = self.query_table(
                            'DestinyActivityDefinition', this_variant)
                        variant_name = variant_json['displayProperties'][
                            'name']
                        variant_icon = variant_json['displayProperties'][
                            'icon']
                        variant_desc = variant_json['displayProperties'][
                            'description']
                        print('   >> VARIANTS ', variant_name, variant_icon,
                              variant_desc)
                        v = Variants(parent_hash_id=int(each),
                                     modifier_type="Variant",
                                     hash_id=int(this_variant),
                                     name=variant_name,
                                     description=variant_desc,
                                     icon=variant_icon)
                        v.save()
                        activity_has_variant = 1
                m = Milestones(hash_id=int(each),
                               event_type=activity_type,
                               name=activity_name,
                               description=activity_desc,
                               icon=activity_icon,
                               start_date=start_date,
                               end_date=end_date,
                               has_variant=activity_has_variant)
                m.save()
            elif int(each) == 534869653:
                # ITS XUR BABY
                print(
                    api.int32(each), '/', each, ' * ',
                    activity_json["displayProperties"]['name'], '/',
                    d2_destiny_api_instance.milestone_types(
                        activity_json['milestoneType']))
                activity_name = activity_json["displayProperties"]['name']
                activity_type = d2_destiny_api_instance.milestone_types(
                    activity_json['milestoneType'])
                activity_desc = activity_json["displayProperties"][
                    'description']
                activity_icon = activity_json["displayProperties"]['icon']
                start_date = None
                end_date = None
                for vendor in api_response["Response"][each]["vendors"]:
                    vendor_hash = vendor['vendorHash']
                    vendor_json = self.query_table('DestinyVendorDefinition',
                                                   vendor_hash)
                    vendor_name = vendor_json["displayProperties"][
                        'name'] + ' ' + vendor_json["displayProperties"][
                            'subtitle']
                    vendor_desc = vendor_json["displayProperties"][
                        'description']
                    vendor_icon = vendor_json["displayProperties"]['icon']
                    print('  > ', vendor_name, vendor_icon, vendor_desc)
                    v = Variants(parent_hash_id=int(each),
                                 modifier_type="Variant",
                                 hash_id=int(vendor_hash),
                                 name=vendor_name,
                                 description=vendor_desc,
                                 icon=vendor_icon)
                    v.save()
                    activity_has_variant = 1
                m = Milestones(hash_id=int(each),
                               event_type=activity_type,
                               name=activity_name,
                               description=activity_desc,
                               icon=activity_icon,
                               start_date=start_date,
                               end_date=end_date,
                               has_variant=activity_has_variant)
                m.save()
            else:
                print(api.int32(each), '/', each, ' * SUPPRESSED * ',
                      activity_json['friendlyName'])
                # print(activity_json)
            # print(activity_name, activity_type)
            print('---')