TimMcCool / scratchattach

Scratch API wrapper with support for almost all site features and cloud requests framework
MIT License
162 stars 39 forks source link

How do i get a Project from a list of them? #208

Open crzylemon opened 1 month ago

crzylemon commented 1 month ago
Warning: Caught error in request 'searchTrending' - Full error below
Traceback (most recent call last):
  File "C:\Users\#####\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\scratchattach\cloud_requests.py", line 116, in call_request
    output = req_obj["on_call"](*arguments) # Calls the request function and saves the function's returned data in the output variable
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\######\Documents\scratchattach\scratchBrowser.py", line 14, in searchTrending
    tempProject = projects[i]
                  ~~~~~~~~^^^
TypeError: list indices must be integers or slices, not Project

Here is the searchTrending function

@client.request
def searchTrending(): #called when client receives request
    response = ""
    projects = scratch3.search_projects(query="query", mode="trending", language="en", limit=40, offset=0)
    for i in projects:
        tempProject = projects[i]
        if len(projects) == i:
            response = response + tempProject.title + ";" + tempProject.author + ";" + tempProject.id
        else:
            response = response + tempProject.title + ";" + tempProject.author + ";" + tempProject.id + ":"
    return response

How am i supposed to get a Project from a list of them?

namtacs commented 1 month ago
@client.request
def searchTrending(): #called when client receives request
    response = ""
    projects = scratch3.search_projects(query="query", mode="trending", language="en", limit=40, offset=0)
    for p in projects:
        response += f"{p.title};{p.author};{p.id}:"
    return response

Basic python. You should look into Python beginner's guide

crzylemon commented 1 month ago
@client.request
def searchTrending(): #called when client receives request
    response = ""
    projects = scratch3.search_projects(query="query", mode="trending", language="en", limit=40, offset=0)
    for p in projects:
        response += f"{p.title};{p.author};{p.id}"
    response += ":"
    return response

Basic python. You should look into Python beginner's guide

I want the last one to not have a : , An example of a response i want is: title;author;id:title;author;id:title;author;id

namtacs commented 1 month ago
@client.request
def searchTrending(): #called when client receives request
    response = ""
    projects = scratch3.search_projects(query="query", mode="trending", language="en", limit=40, offset=0)
    for p in projects:
        response += f"{p.title};{p.author};{p.id}:"
    response = response[:-1]
    return response

or (with indexes)

@client.request
def searchTrending(): #called when client receives request
    response = ""
    projects = scratch3.search_projects(query="query", mode="trending", language="en", limit=40, offset=0)
    for idx, p in enumerate(projects):
        response += f"{p.title};{p.author};{p.id}"
        if idx != len(projects)-1: response += ":"
    return response
Elip100 commented 1 week ago
Warning: Caught error in request 'searchTrending' - Full error below
Traceback (most recent call last):
  File "C:\Users\#####\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\scratchattach\cloud_requests.py", line 116, in call_request
    output = req_obj["on_call"](*arguments) # Calls the request function and saves the function's returned data in the output variable
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\######\Documents\scratchattach\scratchBrowser.py", line 14, in searchTrending
    tempProject = projects[i]
                  ~~~~~~~~^^^
TypeError: list indices must be integers or slices, not Project

Here is the searchTrending function

@client.request
def searchTrending(): #called when client receives request
    response = ""
    projects = scratch3.search_projects(query="query", mode="trending", language="en", limit=40, offset=0)
    for i in projects:
        tempProject = projects[i]
        if len(projects) == i:
            response = response + tempProject.title + ";" + tempProject.author + ";" + tempProject.id
        else:
            response = response + tempProject.title + ";" + tempProject.author + ";" + tempProject.id + ":"
    return response

How am i supposed to get a Project from a list of them?

@client.request
def searchTrending(): #called when client receives request
response = ""
projects = scratch3.search_projects(query="query", mode="trending", language="en", limit=40, offset=0)
for i in range(len(projects) - 1):
tempProject = projects[i]
if len(projects) - 1 == i:
response = response + tempProject.title + ";" + tempProject.author + ";" + tempProject.id
else:
response = response + tempProject.title + ";" + tempProject.author + ";" + tempProject.id + ":"
return response

Here is updated code.

namtacs commented 1 week ago
@client.request
def searchTrending(): #called when client receives request
    response = ""
    projects = scratch3.search_projects(query="query", mode="trending", language="en", limit=40, offset=0)
    for i in range(len(projects) - 1):
        tempProject = projects[i]
        if len(projects) == i:
            response = response + tempProject.title + ";" + tempProject.author + ";" + tempProject.id
        else:
            response = response + tempProject.title + ";" + tempProject.author + ";" + tempProject.id + ":"
    return response

Here is updated code.

Please, do not use this code, it's unclear and even drops 1 project completely. For complete code, see my answer