Package: scratchconnect
ScratchConnect v4.5.2Python Library to connect Scratch API and much more.This library can show the statistics of Users, Projects, Studios, Forums and also connect and set cloud variables of a
project!This library needs a Scratch account. Visit the Scratch Website:https://scratch.mit.edu/You also need to have the Python programming language installed on your computer.You need basic knowledge of Python. Using this library without the knowledge can be risky.InstallationTo install this library, just typepip install scratchconnectin the terminal (Command Prompt)ORRun this Python programimportosos.system('pip install scratchconnect')If you still have troubles while installing then go
tothis linkDocumentationDocumentation is taking a bit longer to make. It will be ready soon...Data Credits:These are the people who made the APIs so that this library can take data:Scratch APIby the Scratch TeamScratch DBby@DatOneLeftyon ScratchScratch Comments APIby@Sid72020123on ScratchSimple Forum APIby@Sid72020123on ScratchOcular APIby@Jeffaloon ScratchAviate APIby@NFlex23on ScratchI thank all these people.
- Owner (Sid72020123)Creating a Simple Connection:Following is a simple program to make a simple connection:Note: Don't put the username and password as it is when you host or share the code with others. While hosting, you can
use environment variables and while sharing, you can remove the username and password values. This will help in keeping
the password and other important things secured.importscratchconnectuser=scratchconnect.ScratchConnect("Username","Password")It will give an error if theusernameorpasswordis invalid.More Uses:Note: Some of the functions below can be only used by the logged in Scratcher. To get the stats of other users see the User Connection Documentationimportscratchconnectuser=scratchconnect.ScratchConnect("Username","Password")user.id()# Returns the ID of the useruser.thumbnail_url()# Returns the thumbnail URL of a useruser.messages_count()# Returns the messages count of the useruser.messages(all=False,limit=20,offset=0,filter="all")# Returns the messagesuser.clear_messages()# Clear your messagesuser.my_stuff_projects(order="all",page=1,sort_by="")# Get/Sort mystuff projectsuser.work()# Returns the 'What I am working on' of a Scratch profileuser.bio()# Returns the 'About me' of a Scratch profileuser.status()# Returns the status(Scratcher or New Scratcher) of a Scratch profileuser.joined_date()# Returns the joined date of a Scratch profileuser.country()# Returns the country of a Scratch profileuser.featured_data()# Returns the featured project data of the Scratch profileuser.projects()# Returns the list of shared projects of a useruser.followers_count()# Returns the follower count of a useruser.following_count()# Returns the following count of a useruser.total_views()# Returns the total views count of all the shared projects of a useruser.total_loves_count()# Returns the total loves count of all the shared projects of a useruser.total_favourites_count()# Returns the total favourites count of all the shared projects of a useruser.following()# Returns the list of the user followinguser.followers()# Returns the list of the user followersuser.favourites()# Returns the list of the user favouritesuser.toggle_commenting()# Toggle the commenting of the profileuser.follow_user(username="Sid72020123")# Follow a useruser.unfollow_user(username="Sid72020123")# UnFollow a useruser.set_bio(content="Hi!")# Set the bio or 'About Me' of the profileuser.set_work(content="Hi!")# Set the status or 'What I am Working On' of the profileuser.all_data()# Returns all the data of the useruser.site_health()# Returns the health of the Scratch Website.user.site_news()# Returns the news of the Scratch Website.user.site_front_page_projects()# Returns the front page projects of the Scratch Website.user.explore_projects(mode="trending",query="*")# Explore the projectsuser.explore_studios(mode="trending",query="*")# Explore the studiosuser.search_projects(mode="trending",search="*")# Search the projectsuser.search_studios(mode="trending",search="*")# Search the studiosuser.set_featured_project(project_id="1",label='featured_project')# Set the 'Featured Project' of a Scratch Profileuser.user_follower_history()# Return the follower history of the useruser.comments(limit=5,page=1)# Get comments of the profile of the useruser.ocular_data()# Returns the ocular data of the useruser.aviate_data(code=False)# Returns the Aviate Status of the useruser.search_forum(q="Hi!",order="relevance",page=0)# Search the forum########################################################################### IMPORTANT NOTE: To always get the updated data use the update_data() function##########################################################################user.update_data()# Update the dataConnect a Scratch User:To connect a Scratch User use theconnect_user()function. Use the following program to connect a Scratch User:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")user=login.connect_user(username="Sid72020123")user.id()# Returns the ID of the useruser.thumbnail_url()# Returns the thumbnail URL of a useruser.messages_count()# Returns the messages count of the useruser.work()# Returns the 'What I am working on' of a Scratch profileuser.bio()# Returns the 'About me' of a Scratch profileuser.status()# Returns the status(Scratcher or New Scratcher) of a Scratch profileuser.joined_date()# Returns the joined date of a Scratch profileuser.country()# Returns the country of a Scratch profileuser.featured_data()# Returns the featured project data of the Scratch profileuser.projects()# Returns the list of shared projects of a useruser.followers_count()# Returns the follower count of a useruser.following_count()# Returns the following count of a useruser.total_views_count()# Returns the total views count of all the shared projects of a useruser.total_loves_count()# Returns the total loves count of all the shared projects of a useruser.total_favourites_count()# Returns the total favourites count of all the shared projects of a useruser.following()# Returns the list of the user followinguser.followers()# Returns the list of the user followersuser.favourites()# Returns the list of the user favouritesuser.user_follower_history()# Return the follower history of the useruser.post_comment(content="Hi!")# Post a comment on the user's profileuser.report(field="")# Report a useruser.reply_comment(content="Hi!",comment_id=1)# Reply a commentuser.all_data()# Returns all the data of the useruser.comments(limit=5,page=1)# Get comments of the profile of the useruser.ocular_data()# Returns the ocular data of the useruser.aviate_data(code=False)# Returns the Aviate Status of the user########################################################################### IMPORTANT NOTE: To always get the updated data use the update_data() function##########################################################################user.update_data()# Update the dataConnect a Scratch Studio:To connect a Scratch Studio use theconnect_studio()function. Use the following program to connect a Scratch Studio:importscratchconnectuser=scratchconnect.ScratchConnect("Username","Password")studio=user.connect_studio(studio_id=1)studio.id()# Returns the studio IDstudio.title()# Returns the studio titlestudio.host_id()# Returns the studio owner/host IDstudio.description()# Returns the studio descriptionstudio.visibility()# Returns the studio visibilitystudio.is_public()# Returns whether a studio is publicstudio.is_open_to_all()# Returns whether a studio is open to allstudio.are_comments_allowed()# Returns whether a studio has comments allowedstudio.history()# Returns the history of the studiostudio.stats()# Returns the stats of the studiostudio.thumbnail_url()# Returns the thumbnail URL of the studiostudio.add_project(project_id=1)# Add a project to a studiostudio.remove_project(project_id=1)# Remove a project from a studiostudio.open_to_public()# Open the studio to publicstudio.close_to_public()# Close the studio to publicstudio.follow_studio()# Follow the studiostudio.unfollow_studio()# UnFollow the studiostudio.toggle_commenting()# Toggle the commenting of the studiostudio.post_comment(content="Hi!")# Post comment in the studiostudio.reply_comment(content="Hi!",comment_id=1)# Reply a comment in a studiostudio.delete_comment()# Delete comment in the studiostudio.report_comment(comment_id=1)# Report comment in the studiostudio.invite_curator(username="Sid72020123")# Invite a user to the studiostudio.accept_curator()# Accept the curator invitation in a studiostudio.promote_curator(username="Sid72020123")# Promote a user in the studiostudio.set_description(content="Hi!")# Set the description of a Studiostudio.set_title(content="Hi!")# Set the title of a Studiostudio.projects(all=False,limit=40,offset=0)# Get the projects of the studiostudio.comments(all=False,limit=40,offset=0)# Get the comments of the studiostudio.curators(all=False,limit=40,offset=0)# Get the curators of the studiostudio.managers(all=False,limit=40,offset=0)# Get the managers of the studiostudio.activity(all=False,limit=40,offset=0)# Get the activity of the studiostudio.all_data()# Returns all the data of a Scratch Studio########################################################################### IMPORTANT NOTE: To always get the updated data use the update_data() function##########################################################################studio.update_data()# Update the dataConnect a Scratch Project:To connect a Scratch Project use theconnect_project()function. Use the following program to connect a Scratch
Project:importscratchconnectuser=scratchconnect.ScratchConnect("Username","Password")project=user.connect_project(project_id=1)# Connect a project.project.author()# Returns the author of the projectproject.title()# Returns the title of the projectproject.notes()# Returns the notes(Notes or Credits) of the projectproject.instruction()# Returns the instructions of the projectproject.are_comments_allowed()# Returns whether the comments are allowed in a projectproject.stats()# Returns the stats of a projectproject.history()# Returns the history of a projectproject.remix_data()# Returns the remix data of a projectproject.visibility()# Returns whether the project is visibleproject.is_public()# Returns whether the project is publicproject.is_published()# Returns whether the project is publishedproject.thumbnail_url()# Returns the thumbnail url of a projectproject.assets_info()# Returns the Assets info of a projectproject.scripts()# Returns the scripts of a projectproject.love()# Love a projectproject.unlove()# UnLove a projectproject.favourite()# Favourite a projectproject.unfavourite()# UnFavourite a projectproject.comments(all=False,limit=40,offset=0,comment_id=None)# Returns the list of comments of a projectproject.remixes(all=False,limit=20,offset=0)# Returns the list of remixes of a projectproject.post_comment(content="Hi!")# Post a commentproject.reply_comment(content="Hi!",comment_id=1)# Reply a commentproject.toggle_commenting()# Toggle the commenting of a projectproject.turn_on_commenting()# Turn On the commenting of a projectproject.turn_off_commenting()# Turn Off the commenting of a projectproject.report(category="",reason="")# Report a projectproject.unshare()# Unshare a projectproject.view()# Just view a projectproject.set_thumbnail(file="")# Set the thumbnail of a projectproject.delete_comment(comment_id=1)# Delete a commentproject.report_comment(comment_id=1)# Report a commentproject.reply_comment(comment_id=1,content="Hi!")# Reply a commentproject.set_title()# Set the title of the projectproject.set_description()# Set the description of the projectproject.set_instruction()# Set the instruction of the projectproject.all_data()# Returns all the data of a Scratch Project########################################################################### IMPORTANT NOTE: To always get the updated data use the update_data() function##########################################################################project.update_data()# Update the dataWant to access and set the cloud variables of an unshared project?Use the Following Code:Note: By accessing an unshared project, some data may not be accessible to this library so some data might not appear.
You can get the scripts and connect cloud variables of an unshared project.importscratchconnectuser=scratchconnect.ScratchConnect("Username","Password")project=user.connect_project(project_id=1,access_unshared=True)# Use the 'access_unshared' parameter to access the unshared project.Connect Cloud Variables of a Scratch Project:To connect the cloud variables of a Scratch Project use theconnect_cloud_variables()function. Use the following
program to connect the cloud variables of a Scratch Project:importscratchconnectuser=scratchconnect.ScratchConnect("Username","Password")project=user.connect_project(project_id=1)variables=project.connect_cloud_variables()variables.get_variable_data(limit=100,offset=0)# Returns the cloud variable datavariables.get_cloud_variable_value(variable_name="Name",limit=100)# Returns the cloud variable value# Program to set cloud variables:set=variables.set_cloud_variable(variable_name="Name",value=123)# Set a Cloud Variableifset:print("Cloud Variable Updated!")Connect Cloud Variables of Turbowarp:To connect the cloud variables of a Turbowarp Project use theconnect_turbowarp_cloud()function. Use the following
program to connect the cloud variables of a Turbowarp Project:Note: Turbowarp doesn't provide any features to get the data, etc. so you can't do some actions with Turbowarp as in
ScratchNote: Use theacccess_unshared=Trueparameter of theconnect_project()function to connect the Turbowarp
Project even if it is unshared on Scratch!importscratchconnectuser=scratchconnect.ScratchConnect("Username","Password")project=user.connect_project(project_id=1)# Connect a Projecttw_cloud=project.connect_turbowarp_cloud(username="Username")# Connect the Turbowarp cloud with an optional parameter to change the username!tw_cloud.set_cloud_variable(variable_name="Name",value=0)# Set a Turbowarp variabletw_cloud.get_variable_data()# Get the data of the previous value of the variable. NOT CurrentError with Turbowarp Cloud?Sometimes there may be an error with the Turbowarp Cloud. Some Basic Errors are:1. I can't change the Cloud Variable ValueIf you can't change the Turbowarp Cloud Variable value using scratchconnect then first check if your code is correct. If
the problem still exists try with this
URL:https://turbowarp.org/<project ID>?cloud_host=wss://clouddata.turbowarp.org. Replace theproject IDwith your project ID.Encoding/Decoding Cloud Variables:In ScratchScratchConnect v2.0+ has some good features to encode/decode a cloud variable! See some examples below:ScratchConnect has a case-sensitive encoding/decoding system. For example both 'A' and 'a' are encoded/decoded
differently!Go tothis linkfor the Scratch version of Encoder/DecoderEncoding/Decoding a string:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")project=login.connect_project(1)# Connect the projectvariables=project.connect_cloud_variables()# Connect the project's cloud variablesencoded_string=variables.encode("Hi! This is a text!")# Encode a stringvariables.set_cloud_variable(variable_name='Name',value=encoded_string)variable_value=variables.get_cloud_variable_value(variable_name='Name')[0]# Get the variable valuedecoded_string=variables.decode(variable_value)# Decode a stringprint("Encoded: ",encoded_string)# Print the results to checkprint("Decoded: ",decoded_string)# Print the results to checkEncoding/Decoding a list:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")project=login.connect_project(1)# Connect the projectvariables=project.connect_cloud_variables()# Connect the project's cloud variablesdata=['A','B','C']encoded_string=variables.encode_list(data)# Encode a listvariables.set_cloud_variable(variable_name='Name',value=encoded_string)variable_value=variables.get_cloud_variable_value(variable_name='Name')[0]# Get the variable valuedecoded_string=variables.decode_list(variable_value)# Decode a listprint("Encoded: ",encoded_string)# Print the results to checkprint("Decoded: ",decoded_string)# Print the results to checkIn TurbowarpTo encode/decode a string/list in Turbowarp, the syntax is same as to encode/decode in Scratch. See aboveConnect a Scratch Forum:To connect a Scratch Forum use theconnect_forum_topic()function. Use the following program to connect a Scratch
Forum:importscratchconnectuser=scratchconnect.ScratchConnect("Username","Password")forum=user.connect_forum_topic(forum_id=1)forum.id()# Returns the id of the forumforum.title()# Returns the title of the forumforum.category()# Returns the category of the forumforum.closed()# Returns whether the forum is closed or notforum.deleted()# Returns whether the forum is deleted or notforum.time()# Returns the activity of the forumforum.post_count()# Returns the total post count of the forumforum.follow()# Follow a Forumforum.unfollow()# Unfollow a Forumforum.posts(page=1)# Get the post in Forum Topic of a specified page. Images and some other stuff will not appear!forum.ocular_reactions(post_id=123)# Get the ocular reactions of the postforum.topic_post_history(usernames="total",segment="1",range="30")# Get the post history of the topic########################################################################### IMPORTANT NOTE: To always get the updated data use the update_data() function##########################################################################forum.update_data()# Update the dataCloud EventsIf you want to handle various Cloud Events on Scratch, use the following code:In Scratch:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")project=login.connect_project(1)# Connect the projectcloud=project.connect_cloud_variables()# Connect the project's cloudevent=cloud.create_cloud_event()# Create a cloud event@event.on("connect")defconnect():print("Connected Cloud!")@event.on("set")defset(data):print("SET: ",data)@event.on("create")defcreate(data):print("CREATE: ",data)@event.on("delete")defdelete(data):print("DELETE: ",data)@event.on("disconnect")defdisconnect():print("Disconnected from Cloud!")event.start(update_time=1)# Start the event with update time# To Stop a Cloud Event, use the event.stop() functionIn Turbowarp:Use the same method as in Scratch but this time connect the cloud of a project on TurbowarpCloud StorageIMPORTANT NOTE: This feature is going to be discontinued in ScratchConect v5.0! Please use the new alternative feature: Cloud Requests.This is a special feature in ScratchConnect which is used to make a cloud storage system. Some features are:Create a variableSet a variableGet a variableDelete a variableDelete all variablesWait for a given timeSimple SyntaxNote: Maximum of 1024 characters can be set as a value to a variable. You can create any number of variables!First, you need to put a sprite in your project. Go tothis linkand
click 'see inside'. There will be all the instructions.To create a cloud storage in ScratchConnect use the code:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")project=login.connect_project(1)# Connect the projectcloud_storage=project.create_cloud_storage(file_name="data",rewrite_file=False,edit_access=['Sid72020123'],all_access=False)# Create a cloud storage. It will create a file in the specified location. Then there is 'edit_access' list which contains the users which have permission to edit(actually create and delete) the variables. Use the 'rewrite_file' argument if you want the file to be re-written again each time you write the program! You can set the 'all_access' to True if you want to give all the access to all users!cloud_storage.start_cloud_loop(update_time=1,print_requests=True)# Start the Cloud Storage. Use the 'update_time' to wait for the specified time. Use the 'print_requests' to print the request info in the console/output screen.Cookie LoginSometimes, the Scratch API blocks the login from online IDEs like Replit, etc. To overcome the issue, ScratchConnect
v2.5 or above has a feature to login directly with cookie. Example:How to get a cookie?You can get your cookie values by logging in with ScratchConnect locally on your computer and use the login object asprint(login.session_id)to get the required cookie value. Copy the value and store it in environment variable if you are using an online IDE like Replit!Note: Keep this values secured and use environment variables wherever necessary.importscratchconnectscratch_cookie={"Username":"Your username","SessionID":"Your SessionID",}# set the cookie dictionarylogin=scratchconnect.ScratchConnect(cookie=scratch_cookie)# Login with cookieNote: While running the above code, ScratchConnect will give a warning that some features might not work if the cookie
values are wrong. It's not an ERROR, it's a WARNINGAdvancedIn case the login from username and password fails, ScratchConnect also has a feature to login with a cookie when the
login with username and password fails! You just have to pass the username and password value and also the cookie in the
ScratchConnect class. Also, you need to set theauto_cookie_loginvariable toTrue. Example Code:importscratchconnectscratch_cookie={"Username":"Your username","SessionID":"Your SessionID",}# set the cookie dictionarylogin=scratchconnect.ScratchConnect(username="USERNAME",password="PASSWORD",cookie=scratch_cookie,auto_cookie_login=True)# Login with cookie and enable the auto_cookie_loginUsing ScratchConnect without loginWith ScratchConnect v3.1+, you can use it without login! Example code:importscratchconnectuser=scratchconnect.ScratchConnect()# Leave all the values empty to use this library without login!Note: If you login without a username and password, some features such as setting cloud variables, etc. may not work.
It will give you a warning when you use this library without login!TerminalScratchConnect v3.0+ has a feature called "Terminal" in which a user can get the data of Scratch User, Studio and
Project in the Python console.To use this feature, you need to install additional dependencies required, by
typingpip install scratchconnect[terminal]in the command prompt/terminal. Then, see the example code:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")terminal=login.create_new_terminal()# Create a new Terminal objectterminal.start()# Start the main terminal programYou can use many features in it. Just enterhelpto see the list of commands after the terminal starts.ChartsScratchConnect v3.0+ has a feature called "Chart" in which a user can get the data of Scratch User, Studio and Project
in graphical format.Note: This feature uses the librarypyhtmlchartto create graphs. Any other library can be used in later
versions.To use this feature, you need to install additional dependencies required, by
typingpip install scratchconnect[chart]in the command prompt/terminalUser Comparison Chart:See the example code:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")chart=login.create_new_chart()# Create a Chart objectuser_chart=chart.user_stats_chart(usernames=["griffpatch","Will_Wam","ScratchCat"])# Create users stats comparison chartuser_table=chart.user_stats_table(usernames=["griffpatch","Will_Wam","ScratchCat"])# Create users stats comparison tableuser_chart.open()# Open User chartuser_table.open()# Open User tableTo include only some required data in a chart or table, use theinclude_dataparameter of the chart or table
function and pass the value as list to get the required data.
Example:['Messages Count', 'Follower Count', 'Following Count']You can also use any one or more options from the following list:['Username','Messages Count','Follower Count','Following Count','Total Loves','Total Favourites','Total Projects Count']Studio Comparison Chart:See the example code:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")chart=login.create_new_chart()# Create a Chart objectstudio_chart=chart.studio_stats_chart(studio_ids=[100,101,102])# Create studio stats comparison chartstudio_table=chart.studio_stats_table(studio_ids=[100,101,102])# Create studio stats comparison tablestudio_chart.open()# Open Studio chartstudio_table.open()# Open Studio tableTo include only some required data in a chart or table, use theinclude_dataparameter of the chart or table
function and pass the value as list to get the required data.
Example:['Comments Count', 'Followers Count', 'Managers Count']You can also use any one or more options from the following list:['Studio ID','Comments Count','Followers Count','Managers Count','Projects Count']Project Comparison Chart:See the example code:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")chart=login.create_new_chart()# Create a Chart objectproject_chart=chart.project_stats_chart(project_ids=[104,105,106])# Create project stats comparison chartproject_table=chart.project_stats_table(project_ids=[104,105,106])# Create project stats comparison tableproject_chart.open()# Open Project chartproject_table.open()# Open Project tableTo include only some required data in a chart or table, use theinclude_dataparameter of the chart or table
function and pass the value as list to get the required data. Example:['Views', 'Loves', 'Favourites']You can also use any one or more options from the following list:['Project ID','Views','Loves','Favourites','Remixes','Version','Costumes','Blocks','Variables','Assets']User Follower History Chart:See the example code:importscratchconnectlogin=scratchconnect.ScratchConnect("Username","Password")chart=login.create_new_chart()# Create a Chart objectc=chart.user_followers_history_chart(username="griffpatch")# Followers History Chartt=chart.user_followers_history_table(username="griffpatch")# Followers History Tablec.open()# Open chartt.open()# Open tableUsing ScratchConnect in online IDEs like ReplitUsing the ScratchConnect version4.0.0+, you can use this library even on some online IDEs like Replit!But to keep your profile data safe, this supports onlyGETrequests and no cookie headers are passed to the proxy (which this feature uses).
You cannot perform any actions other thanGET, i.e., follow a user, post a comment, etc.But cloud variables work as it is a websocket connection.Remember to use environment variables to store your session ID if you are using this on an online IDE like Replit...To use ScratchConnect in online IDEs like Replit, you need to get your session ID (see Cookie-Login section above) and the code like:importscratchconnectsession_id="<your session id here>"cookie={"Username":"<your username>","SessionID":session_id}login=scratchconnect.ScratchConnect(online_ide_cookie=cookie)# Pass the cookie variable as a parameter to the ScratchConnect class# Your code here...Cloud RequestsThis feature was first released in version4.0.0of the ScratchConnect Python Library.
Using this, you will be able to send any amount of data to-and-from your Python program and any Scratch Project.The docs to use this feature arehereProjects made using ScratchConnectTo see the projects made using ScratchConnect, go to the
officialScratchConnect Projects StudioBug Reporting:All Bugs to be reported on myScratch ProfileorGithubChange Log:19/06/2021(v0.0.0.1) - First made the library and updated it.20/06/2021(v0.1) - Added many features.21/06/2021(v0.1.9) - Bug fixes.26/06/2021(v0.2.0) - Made Improvements and added new features.27/06/2021(v0.2.6) - Bug Fixes and update and made the 'Studio' class.03/07/2021(v0.4.5) - Added many functions and made the 'Project' class.04/07/2021(v0.5.0) - Update.05/07/2021(v0.5.1) - Updated the messages function.06/07/2021(v0.6.0) - Updated CloudConnection.08/07/2021(v0.7.5) - Updated CloudConnection.10/07/2021(v0.7.5) - Updated CloudConnection, made the Forum class and added DocString.13/07/2021(v0.9.7) - Added DocString.14/07/2021(v0.9.0) - Bug Fixes.15/07/2021(v1.0) - First Release!18/07/2021(V1.1) - Made the 'studio.get_projects()'.19/07/2021(v1.2) - Made the get comments, curators, managers of the studio13/08/2021(v1.3) - Added the get comments function14/08/2021(v1.4) - Updated the get messages function17/08/2021(v1.5) - Made some bug fixes18/09/2021(v1.7) - Made the ScratchConnect and User Classes fast and Improved methods19/09/2021(v1.8) - Made the Studio Class Faster and Improved methods25/09/2021(v1.8.5) - Updated the Project and User classes02/10/2021(v2.0) - Updated the Cloud and Forum Class10/10/2021(v2.0.1) - Fixed some cloud stuff11/10/2021(v2.1) - Added some features to Forum Class24/10/2021(v2.1.1) - Started making the scStorage Class29/10/2021(v2.1.1.1) - Fixed set_bio() and set_work() and updated the scDataBase30/10/2021(v2.2.5) - Updated the scStorage31/10/2021(v2.2.7) - Updated the scStorage25/11/2021(v2.3) - Updated the scStorage and CloudConnection13/12/2021(v2.3.5) - Started making the TurbowarpCloudConnection feature and added some methods to it14/12/2021(v2.4) - Updated and fixed mistakes in docs09/01/2022(v2.4.1) - Code Fixes25/01/2022(v2.4.2) - Added new Comment API16/03/2022(v2.5) - Fixed login and added cookie login feature26/03/2022(v2.6) - Added some more APIs27/03/2022(v2.6.3) - Added the Scratch Terminal Feature28/03/2022(v2.7.5) - Updated the Scratch Terminal Feature and added the Chart Feature29/03/2022(v2.8) - Updated the Charts Feature16/04/2022(v3.0) - Bug fixes and improvements30/04/2022(v3.0.5) - Code fix01/05/2022(v3.0.8) - Code fix and new features07/05/2022(v3.0.9) - Code fix12/05/2022(v3.1) - Updated the CloudConnection Class04/06/2022(v3.2) - Updated the ScratchConnect, CloudStorage, etc. Class05/06/2022(v3.3) - Updated the CloudEvents Class, etc08/06/2022(v3.3.5) - Added colored messages, etc11/06/2022(v3.4) - Updated and made the CloudStorage Feature faster05/08/2022(v3.4.1) - Planed and added some features of Online IDE login06/08/2022(v3.4.2) - Added the OnlineIDE feature to all the Scratch API based classes08/08/2022(v3.4.5) - Planned the Cloud Requests feature09/08/2022(v3.5) - Added some features to the Cloud Requests Class13/08/2022(v3.5.1) - Added some methods to the TurbowarpCloudConnection and CloudRequests classes and updated them14/08/2022(v3.5.6) - Updated the Cloud Requests Class15/08/2022(v3.6.0) - Updated the Cloud Requests Class16/08/2022(v3.6.0) - Updated the Cloud Requests Class and added some logs to the class20/08/2022(v3.7) - Added more logs to the Requests Class21/08/2022(v3.8) - Made the scImage Class27/08/2022(v3.9) - Reduced the size of encoded Image30/08/2022(v3.9.5) - Bug fixes and Improvements24/09/2022(v3.9.6) - Bug fixes and Improvements25/09/2022(v3.9.7) - Bug fixes and Improvements26/09/2022(v3.9.9) - Fixed many bugs in scCloudRequests14/12/2022(v4.0.0) - Fixed the arguments bug in the Cloud Requests feature15/12/2022(v4.0.0) - Bug fixes and improvements in the Cloud Requests feature24/15/2022(v4.1) - Bug fixes10/02/2023(v4.5) - Updated the CloudRequests feature and made it faster11/02/2023(v4.5) - First stable release of the Cloud Requests feature13/02/2023(v4.5.2) - Bug fixesCredits:This library is made by@Sid72020123on Scratch. Also, thanks to all
contributors.Contributors:The names of persons below are their Scratch Usernames.PersonRoleContributionSid72020123OwnerMade the library and most of its featuresAnkit_AnmolContributorFixed some things in the documentation and added some featuresChiroyceContributorAdded some features and cleaned up some codegod286ContributorFixed mistakes in the documentationmbrick2ContributorFixed Badge Consistency and added the Aviate status featureAidanER1ContributorUpdated the CloudConnection class and fixed some bugsSenievolIdeaGave the trick to make the encoded image data length much lower in Cloud Requestsawesome-llamaIdeaGave the trick to make the encoded image data length much lower in Cloud RequestsPPPDUDContributorFixed mistakes in the documentationIf I'm missing some people and their work in the contributors table, please contact Sid72020123 on Scratch