TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua

 找回密码
 新人加入
查看: 10765|回复: 7
打印 上一主题 下一主题

tcaxPy.pyc 模块函数说明 [复制链接]

Rank: 4

楼主
发表于 2021-7-12 12:26:19 |显示全部楼层
本帖最后由 Seekladoom 于 2021-7-12 12:26 编辑

上面这些代码原来在TCAX的tcaxPy.py这个脚本文件里面啊,看了下这里面总算是明白t和animation代码的写法了。。。_(:з」∠)_

tcaxPy.png

Rank: 4

沙发
发表于 2021-7-14 14:09:56 |显示全部楼层
本帖最后由 Seekladoom 于 2021-7-14 14:15 编辑

追加粗体标签函数的说明

def b(a):                   # 粗体标签,a只能填0或1,表示粗体的关闭和打开

补充修改了def b的tcaxPy.py脚本,如果想给TCAX添加粗体标签请下载这个脚本并替换TCAX路径下的原tcaxPy.py脚本:
修改了def b的tcaxPy.py脚本.rar (7.96 KB, 下载次数: 1757)

修改前:
  1. def b():
  2.     return '\\b'
复制代码
修改后:
  1. def b(a):
  2.     return '\\b{0}'.format(int(a))
复制代码
这个其实是照着def p标签依葫芦画瓢改的,因为在用TCAX给字幕文件添加粗体标签\b1时发现写了以后还是不能跑,然后打开tcaxPy.py以后才发现了def b没写全。。。_(:з」∠)_

Rank: 4

板凳
发表于 2021-7-21 03:12:00 |显示全部楼层
本帖最后由 Seekladoom 于 2021-7-21 04:03 编辑

原来tcaxPy.pyc文件的源码在这里(图中有tcc关键字的地方即为TCAX读取tcc文件的实现代码):
https://github.com/milkyjing/TCA ... CAX/tcax/tcaxPy/d.c d.c截图.png

https://github.com/milkyjing/TCA ... AX/tcax/tcaxPy/py.c
这段2.png

https://github.com/milkyjing/TCA ... AX/tcax/tcaxPy/py.h
这段.png

鄙人目前水平有限,如果可以的话未来还是希望能够让TCAX的特效字幕制作流程简化到只需要ass和py文件就能用TCAX生成ASS和TCAS特效字幕了。。。_(:з」∠)_


Rank: 4

地板
发表于 2021-8-17 01:14:44 |显示全部楼层
本帖最后由 Seekladoom 于 2021-8-17 01:37 编辑

val_BegTime对应的底层代码在tcax.exe的py.c(第475、538行)、py.h、syl.c、syl.h、tcax.c、tcax.h这六个文件中。

主要是在py.c、syl.c、tcax.c这三个文件中,比如py.c中的这段:
  1. pLine->begTime1D = (int *)malloc(pLine->lines * sizeof(int));
复制代码


Rank: 4

5#
发表于 2021-8-17 01:40:03 |显示全部楼层
本帖最后由 Seekladoom 于 2022-1-29 01:14 编辑

def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):

对应的源码在tcax.c这个源码文件中:

  1. pReturnedBuf = tcaxpy_script_func_main(pTcaxPy, iLine, iText, nTexts, start, end, timeDiff, time, x, y, advance, text);
  2.                     if (!pReturnedBuf) {
  3.                         fclose(assfp);
  4.                         libtcas_write_header(&tcasFile, &tcasHeader, 0);
  5.                         libtcas_close_file(&tcasFile);
  6.                         printf("Fatal Error: failed to execute the tcaxPy_Main() function in the %i(th) user tcax py script.\n", i + 1);
  7.                         return -1;
  8.                     }
  9.                     if ((int)pReturnedBuf[0] > 0) {
  10.                         tcax_write_ass_string_to_file(assfp, (const wchar_t *)pReturnedBuf[1], (int)pReturnedBuf[0]);
  11.                         free(pReturnedBuf[1]);
  12.                     }
  13.                     if ((int)pReturnedBuf[2] > 0) {
  14.                         tcax_write_tcas_buffer_to_file(&tcasFile, &tcasHeader, (const tcas_unit *)pReturnedBuf[3], (int)pReturnedBuf[2]);
  15.                         free(pReturnedBuf[3]);
  16.                     }
  17.                     free(pReturnedBuf);
  18.                     SetConsoleCursorPosition(hStdout, coord);
  19.                     printf("Executing script %i of %i, progress: %.2f%%\n", i + 1, pAttributes->py_file_count, 100 * (index - offset) / (double)total);
  20.                     //printf("Progress: %.2f%c\n", 100 * (i + (index - offset) / (double)total) / pAttributes->py_file_count, '%');
  21.                 }
  22.                 index ++;
复制代码

单行重点标注:
  1. pReturnedBuf = tcaxpy_script_func_main(pTcaxPy, iLine, iText, nTexts, start, end, timeDiff, time, x, y, advance, text);
复制代码

追加补充:
TCAX源码的tcaxPy文件夹中的py.c文件的第437行也能找到def tcaxPy_Main相关信息,在py.c搜main即可
Main.png

Rank: 4

6#
发表于 2021-8-23 14:27:57 |显示全部楼层
tcaxPy.py脚本中的__tcax_data[31][i][j],这里是31,对应的就是:
val_Text             = 31        # 第i句卡拉OK歌词的第j个字符

其他的以此类推

Rank: 4

7#
发表于 2021-9-7 17:58:08 |显示全部楼层
本帖最后由 Seekladoom 于 2021-9-8 10:56 编辑
  1. def MakePath(FolderIndex = 0, ImageIndex = 0, MainFolder = 'src', SubFolder = 'list', ImageName = 'img', ImageType = '.png', PathType = 'pi'):
  2.     if PathType == 'pi':
  3.         img_path = '%s\%s%d\%s%04d%s' % (MainFolder, SubFolder, FolderIndex, ImageName, ImageIndex, ImageType)
  4.     elif PathType == 'sys':
  5.         img_path = '%s\%s%d\%s (%d)%s' % (MainFolder, SubFolder, FolderIndex, ImageName, ImageIndex, ImageType)
  6.     else:
  7.         img_path = '%s\%s%d\%s%04d%s' % (MainFolder, SubFolder, FolderIndex, ImageName, ImageIndex, ImageType)
  8.     return img_path
复制代码
MakePath函数在py特效脚本中没有ass_main行的情况下,也能直接生成带有挂图标签(\1img)的ass字幕行。PathType = 'pi'的pi全写应该是picture,代表图片路径,实际作用相当于相对路径

Rank: 4

8#
发表于 2022-2-11 21:27:12 |显示全部楼层
本帖最后由 Seekladoom 于 2022-2-11 22:29 编辑

RectClip函数仅在six大的如下帖子中用过:
ext_m003[Last Updated:2013/2/23]

但1.2.0版本的TCAX删除了该函数,故从1.1.9版本的TCAX中找出来并在此记录下来,方便后人:
  1. def RectClip(InitPosX, InitPosY, WD, HT, AN = 7, DENS = 1.0, SIZE = 1):       # 用点或方格的形式切割文字
  2.     RCLIP = []
  3.     for i in range(AdvInt(DENS * WD)):
  4.         for j in range(AdvInt(DENS * HT)):
  5.             RCLIP.append(clip(InitPosX + AdvInt(i / DENS), InitPosY + AdvInt(j / DENS), InitPosX + AdvInt(i / DENS) + SIZE, InitPosY + AdvInt(j / DENS) + SIZE))
  6.     return RCLIP
复制代码



您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-5-3 14:08

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH