A Scratch parser that can generate Python code, ensuring that the logic remains as it is, only unable to run.
Project description
scratch-analyzer
English version README.md: README.english.md
Scratch 解析库。一个使用Python制作的能够分析Python代码的软件包。
介绍
历史
基础代码再2025年(发布仓库的1年前)编写,当时我有一个梦想,将Scratch翻译成一个Python上能够运行的程序,于是我写下了这个程序,原名Scratch2Python。
我凭借着我惊人的智慧写出了Scratch2Python的Scratch转换Python代码功能,虽然代码有一丢烂,但是转换相当成功。
然而,接下来的问题是,Scratch运行时阻挠了我。从代码历史你能看到,本项目最终使用Scratch4Python作为运行时库,但是很可惜,我跟他耗了几个月,最终失败。
那么此库为何而在
因为我的这个翻译器还是太好了,理论上还可以做到翻译成各种语言,虽然目前仅保证转换为Python是正常的。
我认为这个功能很不错,于是建立存储库并单独提取其代码转换功能。
那Scratch4Python呢
我不打算完全放弃他,但是请等我深造几年,吃透OpenGL后,再管它吧。我想到时候将他作为独立库发布,同时更名python-scratch-vm。到时候可以两个库结合使用。
目录结构
├── docs # 文档注释文件夹
│ ├── README.chinese.md # 中文文档
│ └── README.english.md # 英文文档
├── LICENSE # MIT
├── pyproject.toml # 项目配置
├── README.md -> docs/README.chinese.md # 自述文件符号链接
├── requirements.txt # 需求文件
└── src # 源代码
└── ScratchAnalyzer # 软件包目录
使用
首先下载软件包。注意使用时软件包名为ScratchAnalyzer。
准备
首先,请准备好Scratch项目的project.json,将Scratch文件的后缀名更改为.zip,然后解压,即可得到素材文件和project.json。分析文件只需要project.json,但是如果需要运行等,请加上素材文件。
分析
假设已经准备好环境,使用方法如下:
from ScratchAnalyzer import Project, Scratch
import json
from pathlib import Path
# 1.读取文件,需要解析为字典
with open("project.json", "r", encoding="utf-8") as file: # 使用UTF-8确保不会编码错误
data = json.load(file)
# 2.创建Project对象,自动建立代码分析树,并存储项目元数据
project = Project(data)
# 3.创建Scratch对象,自动分析素材列表等元数据
scratch = Scratch(project) # 要传入project,这样就能得到所有数据
# 4.生产,由于生产的是多文件,所以要指定输出目录
scratch.generate(Path("output"), language="python") # 第一个参数为输出目录,language为可选参数,默认为"python",暂不支持其他语言,在此留个TODO
# 5.output下即生产结果,对象析构安全,不需要手动管理
注意
目前我还没有修改软件包接口,因此用起来有些困难。请等待我重构接口,以让这个软件包更好使用。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scratchanalyzer-0.1.0.tar.gz.
File metadata
- Download URL: scratchanalyzer-0.1.0.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aac6290c455ab9c332619cc73ef64abc7de5a054c1dcc6510d2094dc2d7a23f0
|
|
| MD5 |
545ffcc09a4266ddc38b1dd33ee0eac0
|
|
| BLAKE2b-256 |
678b1a680dae14683ef8b3cb714ef96b26894c2366e7089ce4dc4560d99e1667
|
File details
Details for the file scratchanalyzer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: scratchanalyzer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
593291b6486c4b53a2c54865e75f94a09569bada3cbd94ed79d8c20c20d25985
|
|
| MD5 |
3f0546db8e027cc0e2a168507126da72
|
|
| BLAKE2b-256 |
c23231a656642e6874341a44a827e6ddcba3a4c4cfa2b353d110cf5ced8aef79
|