Phet离线HTML5数据

数据来自于:https://phet.colorado.edu/en/simulations/translated/zh_CN
缘起于前几日pdawiki有坛友发了这个mdx,严格来说是mdd吧。
phet_raw.7z (20.4 MB) 样例网页:wave-on-a-string_zh_CN.7z (250.7 KB)
个人从上述主页dump出来一份单html文件的网页,只有80几个网页,只要将每个网页中的body标签内的部分(最前面一部分是引用的license和repo信息,也是可以去掉的)提取出来,就可已把每个html文件的名字做词头压缩成mdx了(如此并不需要mdd),80几个词条的HTML5动画展示。计划过阵子将WebEngine(Chrome kernel)植入GoldenDict,需要部分测试的媒介,所以本想自己做这个mdx的,奈何掌握的正则手法不过关,所以把文件数据放上来,有能力又有空的坛友能做一下最好了,实在没得到时候我再处理。

我来 :grinning:

链接: https://pan.baidu.com/s/1qW51KNm76afd5HKmYn_N8g 提取码: 67ct

4 Likes

谢hua大!
先前试过pdawiki坛友的那个mdx,里面就两个词条,还用了iframe,gd直接就卡死掉了,不确定是脚本还是html5的问题,所以很需要个规范些的mdx测试。那个网站貌似干货不少,我这脱网页只能用idm(站点下载功能),太慢,就拖了80几个,刚好跟pdawiki上发的那个mdd里面的数量对起来,还有大量的flash动画就都没脱下来,倒是下来了没法用一堆jar文件。

感谢!
都是怎么处理的哈,这么快,我用正则搞了几个就没信心了

直接用python和bs4合并的

大神真是神速哈 :smiley:

淦 溜了

from bs4 import BeautifulSoup
import os

write1 = open('done.txt', 'w', encoding="utf8")

js_css = """<link rel="stylesheet" href="phet.css" type="text/css" ><script type="text/javascript" src="phet.js"></script>"""

div = '<div class="menu_single"><a href="entry://{}">{}</a></div>'

for _, __, files in os.walk("."):
    zh_entries = []
    eng_entries = []
    for file_name in files:
        if '.html' in file_name:
            print(file_name)
            # print(file_name)
            read1 = open(file_name, 'r', encoding="utf8")
            raw = BeautifulSoup(read1, 'html.parser')
            zh_entry = raw.title.string
            eng_entry = file_name.replace("_zh_CN.html", '').replace("-", ' ')

            write1.write(eng_entry + '\n' + js_css + str(raw.find("body")).replace('\n', '').replace('\r', '') + '\n</>\n')

            write1.write(zh_entry + '\[email protected]@@LINK=' + eng_entry + '\n</>\n')
            zh_entries.append(zh_entry)
            eng_entries.append(eng_entry)
# 目录
# temp = ""
# for i in range(len(zh_entries)):
#     temp += div.format(eng_entries[i],eng_entries[i] + "({})".format(zh_entries[i]))

# temp = js_css + temp
# write1.write('menu' + '\n' + js_css + str(raw.find("body")).replace('\n', '').replace('\r', '') + '\n</>\n')

write1.close()
1 Like

我不会大蟒蛇 :rofl:曾经跟孩子一起看过入门级的《与小卡特一起学Python》,孩子能接受,我怎么也接受不了,没有分号结尾的句子不习惯,但python的强制对齐真的时超喜欢 ---- 代码看上去太漂亮了,就是我看不懂

c语言格式化不是也能缩进嘛,我感觉看起来差不多,除了指针(淦!)

cpp一加指针,写个代码都要调半天

每个人的写作风格不一样,所以很多时候看别人的C/C++代码会很头疼 ---- 虽然大公司都会有编码规范,但遵照规范的寥寥无几吧 ---- 最多也就头文件遵守一下,维护起来看源码还是头大的

现在都用智能指针了吧 ---- 说实话我还是习惯于传统的指针,GoldenDict里面都是智能指针,维护了一段时间后我才发现智能指针还有那么多好处

对了,打包的时候 block size 设置大一点,直接把文件传上来吧。。这种情况,block size大,总大小就能小很多的,

别提了别提了,想起了被 ** * & && 支配的恐惧了

hua大讲的这个是不是mdx或mdd中的压缩相关的呢,我忽然想起来了,前阵子处理阿弥陀佛大的那个图片词典问题的时候,调试时候看每个数据块信息有个参数跟这个应该时相关的 ---- 我没有真正的理解它,所以并没有能从根本上彻底解决那个问题

我还在找,我把我用 mdxbuilder 4.0 的经验弄混了。。。
@atauzki 我刚才试了,大小没有变。。我以前有过改这个 record block size 的经验,改大之后文件大小变小了,这次不知道为啥。
这个 block size 还是让懂的人来说吧,我有一点相关的知识也是加密方法的 block。
估计是以多少字节为一个块来压缩。。。

3.5的也有相关的参数的,只是我从没去试过,所以不知所以然:

因为png图片数据本来就是使用了zip(?)压缩过的,所以那个词典mdd二进制数据中png文件数据大多都是没有再进行压缩的原始png内容,结合这个block size理解下来,我想彻底解决那个问题也是可以的 ---- 等闲下来我再整理下思路哈

设大了mdx大小没变化。源文件合并就140多兆

原始body中的内容,刚开始的那部分
window.phet.chipper.thirdPartyLicenseEntries = …
中和其后的
window.phet.chipper.dependencies = …
中的内容都删掉也没问题的,我手动试过一个,正则处理不来我就没动了