⌛ Unofficial archive of old Scratch projects

Overview

Unofficial archive of old Scratch projects

Due to the Scratch Team planning to remove the ability to view unshared projects (LLK/scratch-www#6773), I had the idea to archive as many old projects as possible with the purpose of preserving Scratch's community history.

Opening projects

The files all are automatically downloaded with the .sb3 extension for compatibility, but some older projects may not import correctly. If Scratch fails to import a project, then attempt to switch the file extension to either .sb2 or .sb

Contributing projects

Please, contribute! First, clone this repo to your computer or a cloud machine with plenty of space. Second, run npm install. Third, see what the most recent project is (the largest filename in the projects folder), then edit the index.js file's initialIndex and finalIndex variables accordingly. I recommend that you keep the initialIndex and finalIndex no more than 10000 apart - otherwise, you'll have some problems with RAM consumption. Once you've downloaded a lot of files, make a commit with a message like this:

[projects] to 36000

Make a PR and I'll merge it!

Future-proofing

The projects are currently stored in this GitHub repository. Once enough are downloaded that they exceed GitHub's limits, they will be compressed and uploaded to the Internet Archive.

Comments
  • Save projects in the correct file format (.sb vs .sb3)

    Save projects in the correct file format (.sb vs .sb3)

    There is something incredibly important to note- projects leading up to ID 3.8 million or so should be saved as .sb files, not .sb3.

    Additionally: Projects made in Scratch 1 will return a large binary file with a "ScratchV0" header (the file is the entire project.) Projects made in Scratch 2 and 3 will return a .JSON file (the .json, only, not any of the project's assets.)

    Some sort of routine should be written to determine if the file is a Scratch 1 project or a Scratch 2/3 project.

    opened by crs100 19
  • Save only project JSON file

    Save only project JSON file

    Isn't it better to save just the JSON files? this way less space is taken up and I'm pretty sure assets will remain publicly accessible.

    PR #8269 in scratch-gui adds the token to the project URL, but not the asset URL, and it's already been merged. Line #62 is the URL for the asset, and as you can see it doesn't contain an extra query parameter, unlike line #44, whose URL also contains the token as a query param. Since it has already been merged, and PR #6773 doesn't modify the assets url, it's pretty safe to assume that assets will remain public.

    The file modified in both the PRs that actually bring about this change is src/lib/storage.js

    wontfix 
    opened by Chiroyce1 19
  • GitHub File Limits

    GitHub File Limits

    Unfortunately, uploading all of the project files to this repository is pretty much impossible.

    GitHub only allows you to upload 100 files at a time. So I tried compressing 10,000 project files into a 7zip archive. That doesn't work either. GitHub has a 25mb limit on file sizes.

    So I decided to just upload the archive to The Internet Archive.

    Here's the link: https://archive.org/details/scratch-projects

    opened by MagentaSuperNova 17
  • Access to the Archive

    Access to the Archive

    @MagentaSuperNova you appear to be the only person with the ability to upload to the scratch-projects item on Archive.org. Is there a way that this could be more community accessible so that more project uploads don't have to go through you?

    question 
    opened by micahlt 6
  • Skipping projects

    Skipping projects

    I'm archiving projects 200000-210000 using SB-Auto, and some projects aren't being downloaded--for example, 201169 and 201171 were downloaded, but 201170 was skipped. Is this normal?

    opened by DogCatPuppyLover 2
  • Error: ERR_STREAM_WRITE_AFTER_END

    Error: ERR_STREAM_WRITE_AFTER_END

    I got the below error shortly after starting. I updated everything and re-cloned the repo, still no luck.

    Wrote project 50738
    Wrote project 50737
    Wrote project 50736
    node:events:505
          throw er; // Unhandled 'error' event
          ^
    
    Error [ERR_STREAM_WRITE_AFTER_END]: write after end
        at new NodeError (node:internal/errors:377:5)
        at _write (node:internal/streams/writable:320:11)
        at Writable.write (node:internal/streams/writable:335:10)
        at PassThrough.ondata (node:internal/streams/readable:766:22)
        at PassThrough.emit (node:events:527:28)
        at Readable.read (node:internal/streams/readable:539:10)
        at flow (node:internal/streams/readable:1023:34)
        at resume_ (node:internal/streams/readable:1004:3)
        at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
    Emitted 'error' event on WriteStream instance at:
        at WriteStream.onerror (node:internal/streams/readable:785:14)
        at WriteStream.emit (node:events:527:28)
        at emitErrorNT (node:internal/streams/destroy:151:8)
        at emitErrorCloseNT (node:internal/streams/destroy:116:3)
        at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
      code: 'ERR_STREAM_WRITE_AFTER_END'
    }
    
    Node.js v18.1.0
    
    bug 
    opened by MagentaSuperNova 2
  • Fix odd gaps

    Fix odd gaps

    In the data collection, there are gaps of projects that are not archived, that we need to archive.

    also, on an unrelated note, we can possibly archive projects after unshared projects block, because of scratchdb, we can try and get their jsons, and download the assets they reference, and zip it up, as I don’t think scratch has restrictions on what assets you can access.

    opened by CodeLikeCrazE 1
  • Format of sb3

    Format of sb3

    I've seen some messages about archiving scratch project files. That led me to this repository and so I saw this and wrote a script to get the json from the scratch api. I've successfully checked and downloaded files from the projects with ids up to a little less than 100k. I was wondering how the json files downloaded are converted to sb3 as when opening an actual sb3 I downloaded off the sight it was filled with garbage not json.

    opened by outercloudstudio 1
  • IMPORTANT - Blank Project Files!!!

    IMPORTANT - Blank Project Files!!!

    It appears all of the .sb3 files that have been archived so far are 0 bytes in size and are blank (excluding the first one for some reason). However, when you go to https://projects.scratch.mit.edu/5 (or any other project) and download the file, everything is there just as it should be.

    This appears to be a problem with getsb3 (https://sb3.micahlindley.com) and because the script is going to getsb3 to download the project files and not the Scratch API, blank project files are being archived.

    bug 
    opened by MagentaSuperNova 1
  • Forkphorus sb-dl Implementation

    Forkphorus sb-dl Implementation

    I am working on an implementation of Forkphors's sb downloader that automates the process of downloading Scratch project files, zipping the project JSON and the assets, and selecting the correct file extension.

    The goal is to have the user enter a starting and ending project IDs, and simply click a button to start the process. Since this is all done in the browser, it will be super easy for anyone to use.

    opened by MagentaSuperNova 0
  • Update index.js

    Update index.js

    Since the original index.js file wasn't actually archiving projects (#2), and was causing errors (#1), I decided to re-write it.

    It gets the project file from the Scratch API.

    I am aware it is not the fastest, but you don't want to flood the Scratch API (and get IP banned), and this way the next project download isn't started until the current one has finished.

    opened by MagentaSuperNova 0
  • Archive Contribution

    Archive Contribution

    Archive Contribution - 210001 through 210500

    I wanted to contribute a little bit. Hopefully, everything is in the correct format :).

    Link: https://archive.org/details/scratch-projects_202208 Project IDs: 210001-210500

    opened by Hmcg23 0
  • Inaccurate project count

    Inaccurate project count

    According to the readme, there have already been archived 100,000 projects, but dogcatpuppylover said they were working on 200,000-210,000, so it should prob be updated

    opened by return-misaPuding 0
  • Add a blank projects directory

    Add a blank projects directory

    Or in the instructions, add a step that asks you to make a new folder called projects or run mkdir projects. Currently, if you follow the instructions you'll get an error saying that the projects directory isn't found.

    opened by Chiroyce1 1
Owner
Micah Lindley
Self-taught teen designer and developer. CSS and Vue enthusiast, open-source fanatic. Learning Svelte. Webmaster @ Epic Solutions.
Micah Lindley
Unofficial HelmRelease search through awesome k8s-at-home projects

k8s at home search (unofficial) Search Flux HelmReleases through awesome k8s-at-home projects, check it out at https://whazor.github.io/k8s-at-home-se

Nanne 92 Jan 2, 2023
A simple web archive.

?? Garden A simple web archive. Moar screenshots! What is it? Garden is a (somewhat) simple web archiver I wrote in a weekend, in part to toy around w

Basil 4 Oct 12, 2022
🔍 Full stack engineers archive applet for Wechat.

Full Stack Engineers Archive Contributing We welcome you to join the development of this applet. Please see contributing document. ?? Also, we welcome

Wechat applet Development Team 3 May 24, 2022
⚡ Archive of all Zotero Translators co-created by participants of the Information Analysis course in 2018 to date.

awesome-translators 1. awesome-translators 维护小组 1.1 Translators 更新流程 1.2 Zotero 安装流程 1.3 Zotero 进阶资料 2. Translators 2.1 Translators 总览表 2.2 Translator

开智学堂 99 Dec 30, 2022
Archive for LeechersParadise.com, the free leech downloader.

LeechersParadise This project has no been archived due to the project being discontinued for many reasons. Thank you to the pirate community for makin

David 14 Nov 5, 2022
📄 UI clone from vercel old site (Using basic tools)

vercel old site A portfolio site, made using the latest technologies. In the construction of the site using Sass. Quality: 1) Benchmark test using a s

Pedromdsn 2 Mar 1, 2022
C2Ladders - a reconstruction of old a2oj Ladders with new and updated problemset

C2Ladders is rating wise list of Codeforces problems which were solved by many people who have had stable rating increase. It's a reconstruction of old a2oj Ladders with new and updated problemset.

Prince Gupta 45 Dec 11, 2022
The new modern discord token grabber & stealer, with discord password & token even when it changes (old. PirateStealer)

?? Discord Server - ?? Premium - ?? Builder - ?? Features Authors Stanley Bytixo Autist69420 PirateStealer (by Brooklyn inc) The new modern discord to

Stanley 143 Jan 6, 2023
The new modern discord token grabber & stealer, with discord password & token even when it changes (old. PirateStealer)

?? Discord Server - ?? Premium - ?? Builder - ?? Features Authors Stanley Bytixo Contributors Autist69420 HideakiAtsuyo PirateStealer (by Brooklyn inc

Stanley 2 Apr 12, 2022
Syncronize a YJS document to/from a plain old javascript object

y-pojo Syncronize a YJS document to/from a plain old javascript object This library enables multiple users to share state in the form of a Plain ol' J

null 17 Nov 12, 2022
Chrome & Firefox extension to return old Twitter layout from 2015.

OldTwitter (2022) Chrome extension to return old Twitter layout from 2015. This extension doesn't add any CSS on top of original Twitter. It's fully o

dimden 35 Jan 4, 2023
Rotating CSS dice in 3D using jQuery. Based on my old snippet on CodePen.

Dice Rotating CSS dice in 3D using jQuery. Based on my old CodePen Roll the dice!. Demo: https://alexerlandsson.github.io/dice/ How to use Include /do

Alexander Erlandsson 6 Dec 14, 2022
a temporary solution to revert to the old ui. the new ui was put into effect since april

Revert-YouTube-UI a temporary solution to revert to the old ui. the new ui was put into effect since april and is slowly rolling out to users. Feature

a person 8 May 10, 2023
This is the FARM Stack course, where you are going to learn how to build an application from scratch using FASTAPI, React and mongoDB

FARM-Stack-Course This is the FARM Stack course, where you are going to learn how to build an application from scratch using FASTAPI, React and mongoD

Bek Brace 121 Jan 2, 2023
Find your new favorite Scratch service.

Welcome to scratch-explorer ?? Like ocular and ScratchStats? You'll love some lesser-known sites like Itinerary and Aviate. Just browse the collection

null 8 Oct 3, 2022
A 3-D software rasterizer written from scratch in nothing but JavaScript

itch.io • Play in the browser Tmp3D is a 3-D software rasterizer written from scratch in nothing but plain-old JavaScript, just for kicks. It makes us

Emre 43 Nov 27, 2022
Monorepo project that shows the current weather data and weather forecast for next 7 days. Created from scratch to participate in a 14-days hackathon.

Climatic Monorepo project that shows the current weather data and weather forecast for next 7 days. Created from scratch to participate in a 14-days h

Luis Marsiglia 6 Jun 23, 2022
Responsive, auto-saving To-Do List single page application made from scratch using JavaScript only

Project Name To-Do List Website Name What's Next? (TO-DO List) Clone the Project git clone https://github.com/Zeraltz/todo-list.git Built With HTML, C

Andres Mauricio Cantillo 7 Jun 25, 2022
Responsive, auto-saving To-Do List made from scratch using JavaScript only, but refactoring the code into ES6 standard

Project Name ES6 AWESOME BOOKS Website Name AWSM BOOKS Project Website (GitHub Pages) https://github.com/Zeraltz/es6-awsm-books Clone the Project git

Andres Mauricio Cantillo 5 Jun 25, 2022