[数据讨论][解包相关]下江小春也能轻松掌握的碧蓝档案提取工具

该博客介绍了如何使用Python脚本批量整理碧蓝档案游戏中的MediaPatch文件夹内的资源,包括CG、BGM等。脚本通过解析catalog.json文件,建立映射表并重命名及归档文件,提高了效率。文章提供了脚本代码,并指出某些文件位于数据包内无法直接提取。使用者需具备Python环境,并在指定文件夹内运行脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意

请先查看前置内容 下江小春也能看懂的碧蓝档案轻松解包思路

引言

朝禊佬在“下江小春也能看懂的碧蓝档案轻松解包思路”一文中提到了CG、BGM、卡池预览视频等提取方法:


这一部分的资源实际上并不需要依赖作案工具,在游戏目录com.YostarJP.BlueArchive中的MediaPatch文件夹内可以直接取用。
对其添加相关后缀,即可查看相关资源。


然而面对上千个文件名如随机乱码一般的文件名,一个一个重命名、查看再手动分类是不现实的。我们需要一种更高效的方法来提取这些文件。
于是,我开发了这样一个Python脚本供大家将这些乱七八糟的文件整理命名。
当然,您也可以按照如此思路自行编写脚本。

工作原理


com.YostarJP.BlueArchive\files\MediaPatch文件夹下主要包含三种类型的文件,如下图所示。

 

第一种有很长的文件名,无后缀;第二种是乱码_乱码.dat的形式,第三种就是那个catalog.json
简单观察发现,catalog.json里面存着完整的文件名和路径,另有名为Crc的属性,这个属性一定与某个.dat文件的后面一部分乱码一致,再查找发现,每一个.dat文件前一部分的乱码又与某一个一个无后缀文件对应。
于是处理的思路就很简单了。

我们先遍历所有.dat文件的文件名,将他们的映射关系构造成映射表记录下来,
然后读取catalog.json中的信息进行重命名和归档就行啦。

脚本


nga是不能传.py文件吗,为啥我传不上来?
贴个csdn链接凑合看吧。
 

from cmath import exp
from ftplib import error_perm
import json
import os
import shutil
from traceback import print_tb
convertx = {}

def mkdir(path):
    path=path.strip()
    path=path.rstrip("\\")
    isok=os.path.exists(path)
    if isok :
        return
    os.makedirs(path)
    print('成功建立文件夹'+path)

def make_dict():
    print('开始构建映射表...')
    namelist=os.listdir('.')
    for names in namelist:
        #print(names)
        if os.path.isdir(names) :
            continue
        if os.path.isfile(names):
            sp=names.split('.')
            if len(sp) == 2 and sp[1] == 'dat':
                drc=sp[0].split('_')
                convertx[int(drc[1])]=drc[0]
    print(convertx)
    print('映射表已构建完成')
    return

make_dict()
t=json.load(open('MediaCatalog.json'))
err_info = []
ok=er=0
for eles in t['Table'] :
    print(eles)
    target_path=t['Table'][eles]['path']
    details=target_path.split('/')[0:-1]
    nowpos='./'
    for dirs in details :
        mkdir(nowpos+dirs+'/')
        nowpos=nowpos+dirs+'/'
    try:
        #print(convertx[t['Table'][eles]['Crc']])
        shutil.copy('./'+convertx[t['Table'][eles]['Crc']],target_path)
        print('OK:已将文件 '+convertx[t['Table'][eles]['Crc']]+'复制到'+target_path )
        ok=ok+1
    except:
        print('ERROR:发生错误,未找到文件或错误的索引')
        err_info.append(eles)
        er=er+1
err_io=open('errors.txt','w')
for err_items in err_info:
    print(err_items,file=err_io)
err_io.close()
print('\n\n\n\n\n\n\n\n\n\n-----------------------------')
print('处理完成:'+str(ok)+' 个成功,'+ str(er)+' 个失败。')
print('所有引起错误的资源名已储存在当前文件夹下errors.txt中,请自行查看')
print('注意:"audio/bgm/mute"、"audio/bgm/theme_01"等文件无法找到是正常现象,他们出现在数据包(那个.obb文件)的asset文件夹下')
print('截止2022.6.28日,这样的总文件数应该是542个。(在com.YostarJP.BlueArchive\\files\\MediaPatch下运行结果)')

使用方法


先自行安装python,添加环境变量等。这类教程和资源很全,请自行查阅,就不赘述了。
贴一个教程:Python安装教程
将脚本复制到com.YostarJP.BlueArchive中的MediaPatch文件夹内
Windows上可按住左shift同时在文件夹内鼠标右键空白处,点击“在此处打开powershell窗口”(Win10)或“在此处打开命令提示符”(Win7)。
在弹出的窗口中输入“python [你写的文件名].py”
出现“开始构建映射表”等字样即为运行成功。等待程序自行结束即可。
提取出的所有文件都保存在多出来的几个文件夹里面,把那个拷走就行了。

一些值得注意的信息


就像在脚本内写的一样,"audio/bgm/mute"、"audio/bgm/theme_01"等文件无法找到是正常现象,他们出现在数据包(那个.obb文件)的asset文件夹下
截止2022.6.28日,这样的总文件数应该是542个。

补充:obb文件解包指北


obb文件可以在/Android/obb/com.YostarJP.BlueArchive/文件夹内找到
同样上传至电脑,将后缀名改为zip解压即可。
后续操作请查看朝禊佬的文章。

这是一款提取游戏资源的工具 开发环境:Windows XP SP2,Core2Duo E6700、内存 2 GB VC 2005 Express Edition运行环境:Windows XP Vista Win7 如何使用? 打开,请选择文件-> 打开的文件或窗口打开您想要部署并拖放的存档文件。 如果打开的文件支持与如此諦めれ (Oh 不相符,则打开但是,如果存档文件的内容是 AHX、 BMP、 JPG、 MID、 MPG、 OGG、 PNG、 WAV、 WMV 揪出可能的。[解压缩],选择您要检索的文件以后打开-k 是 > 选择中提取。如果您想要检索所有提取-k 是 > 提取所有。 此外,双击所选的文件的意见发挥是可能的。 基本设置列表设置字符颜色和背景色要显示文件信息的列表。 如何指定的颜色表示 16 小数 RGB (RRGGBB 格式)。 若要搜索文件或查找哪些类型的文件从归档文件不兼容设置。 如果您知道已存档的文件来检查只是可取 (表面速度)。精度的搜索OGG 寻找只能用"OggS",看看小小的检查设置。 我通常保持精度,以避免误报,很好。 提取设置-为每个文件夹中提取当您检查文件夹名称中包含要提取的文件夹来生成的文件的文件名。 -固定 OGG 文件 CRC当您检查正确的 CRC,以提取。不能播放由于 CRC 不匹配,可能能够在正确的 CRC 中发挥 OGG。 简单的解码功能,以实现和标记,会有人用简单的解码过程加密的文件。 到目前为止唯一脚本文件的 bmp、 jpg、 mpg、 ogg、 png、 tlg、 吉 hagil 里。 输出图像格式输出图像的文件格式。 谁想要最小化 PNG 是更好的空间。 0 表示无压缩的压缩级别,9 最大压缩。 此外,原始文件 (如 JPG 或 PNG 的 JPG 或 PNG 输出。 -执行 alpha 混合如果您检查,背景颜色设置为 alpha 混合和输出的 24 位。 好,如果不需要的 alpha 值,则检查。-背景色要使用 alpha 混合时价值。 如何指定的颜色表示 16 小数 RGB (RRGGBB 格式)。 -目标每次您提取对话框中显示指定每个指定目的地的时间。 "同一目的地文件夹"创建一个文件夹具有相同的名称和文件打开的如果到位置打开的文件和输出中。 存储文件具有相同的名称和它的位置创建一个文件夹,如果一个。 如果下面的文件夹,设置如下的输出文件夹。 缓冲区大小内存,用于提取文件的大小。 -临时文件夹一个位置来提取临时视图,如果您通过双击播放。 当您打开存档文件或当您退出 ExtractData 时,将删除暂时提取的文件。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值