Alle kostenlosen Xbox 360 Avatar Items

Alle kostenlosen Xbox 360 Avatar Items

Bevor der Xbox 360 Store abgeschaltet wird, wollte ich noch mal alle kostenlosen Inhalte aktivieren. Dazu habe ich dann einmal mit dem Avatar Store angefangen.

Nach einer längeren Suche habe ich entdeckt, das es für Brands eigene Stores gibt. Durch ein wenig Recherche bin ich dann auf die ID 13001 gestoßen. Das ist der allgemein Default Brand in dem alle Items vorhanden sind. Kurzerhand habe ich dann folgendes Python Script gebastelt, damit ich alle Links als Markdown aufgelistet habe:

pip install requests beautifulsoup4 colorama

Im Grunde ganz einfach, durch das herausfinden der Seiten konnte ich den Crawler so schreiben das er immer jedes DIV mit der Product ID parsed, welches ein Free beeinhaltet.

import requests
from bs4 import BeautifulSoup
from colorama import Fore, Style, init

# Initialize colorama
init(autoreset=True)

def check_urls():
    base_url = "https://marketplace.xbox.com/en-US/AvatarMarketplace?brand=13001&pagesize=28&sortby=BestSelling&Page="
    free_text = '<span class="SilverPrice ProductPrice">Free</span>'
    timeout_duration = 10  # Timeout in seconds
    results = []

    for page_id in range(1, 534):  # Assuming a high upper limit for page iteration
        url = f"{base_url}{page_id}"
        try:
            response = requests.get(url, timeout=timeout_duration)
            
            if response.status_code == 200:
                soup = BeautifulSoup(response.text, 'html.parser')
                items = soup.find_all('div', id=lambda x: x and x.startswith('p'))

                for item in items:
                    if free_text in str(item):
                        link = item.find('a', class_='avatarItem')
                        if link:
                            product_id = link['data-product-id']
                            product_name = link.get_text(strip=True)
                            product_url = f"https://marketplace.xbox.com{link['href']}"
                            result_line = f"[{product_name}]({product_url})"
                            results.append(result_line)
                            print(f"{Fore.GREEN}Page {page_id} contains free content: {result_line}")
                    else:
                        print(f"{Fore.YELLOW}Page {page_id}: No free content found in item")

            else:
                print(f"Error accessing Page {page_id}: HTTP {response.status_code}")
        
        except requests.exceptions.Timeout:
            print(f"{Fore.RED}Page {page_id}: Timeout")
    
    # Save results to results.txt
    with open("results.txt", "w", encoding="utf-8") as file:
        for result in results:
            file.write(result + "\n")

if __name__ == "__main__":
    check_urls()

Dadurch kam ich auf 112 Gratis Produkte von den 14.929 Elementen. Knapp 20 Davon sind Crackdown die leider auf der Xbox 360 nicht angezeigt werden. Zudem gibt es dort keine Suchfunktion mehr für Avatar Items.

Die vollständige Liste:

Eine Lösung für das automatische Einlösen habe ich nicht gefunden. Da deutschsprachige Accounts ja aufgrund der Trennzeichen schon länger Probleme machen, konnte ich bislang nicht in Erfahrung bringen ob mein Account oder das System Probleme macht. Ggfs. liegt das auch an den Rate Limits in die ich gerade permanent laufe. Neben dem Crawling läuft meine Xbox 360 noch munter vor sich hin und downloadet.

Sowohl auf der Website, wie auch in der App war für mich nichts einlösbar. Auf der Xbox 360 funktionierte es Problemlos. Falls jemand eine Lösung hat, würde mich über einen Hinweis freuen.