Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

移植到其他作业系统上 #1

Open
bandiaozimu opened this issue Aug 7, 2018 · 12 comments
Open

移植到其他作业系统上 #1

bandiaozimu opened this issue Aug 7, 2018 · 12 comments

Comments

@bandiaozimu
Copy link
Owner

我的系统是OSX,本程式若要在其它作业系统上运行,必需做修改,完成者,重谢。

@ghost
Copy link

ghost commented Aug 17, 2018

是不是用Java语音重新实现一遍比较好,这样很多依赖库可以选用Java对应的实现,curl类似的系统命令也可以找找Java实现库。

估计ffmpeg这样的库没办法之外,其他库应该都有办法整合进Java项目。

减少了对外部库的依赖,又提升了跨平台的可行性。

@bandiaozimu
Copy link
Owner Author

我不会java,要我整个重写很耗时。
但我在设计之初有留后路,故意把每个步骤都分开写,最上层用shell script包
只要行为相同,档名一样,都可用其它语言替换。

@Inori
Copy link

Inori commented Aug 22, 2018

perl也有windows和linux的解释器, 不需要换语言

@bandiaozimu
Copy link
Owner Author

主要的问题是我核心的功能都是依靠curl,ffmpeg,eyeD3等的外部库,还有一个档里连sed都偷懒用了system call,要移植只有两条路,在perl(或java等其它语言)里找到对应的实现,或是在windows和linux找到对应的外部库。我是比较推荐后者。

@bandiaozimu
Copy link
Owner Author

关于发布win,linux版本,可以用PAR,Cava Packager等工具:
https://oomake.com/question/227060
所以唯一的问题是找到外部库在各系统的取代方案。

@bandiaozimu
Copy link
Owner Author

bandiaozimu commented Sep 3, 2018

外部库的解法,第一是把system call 都从perl 脚本里抽离,放在shell script里。
本来这些外部库就该用shell script跟perl脚本作隔离,是我偷懒了。
幸好除了curl其他的外部库都是单一次调用,很容易抽离。
curl 则可以通过 if ( ! -e *****.html ) 的方式规避,这我已经有部分实现了,
更好的办法是用perl本身的库取代curl ,这并不难

抽离system call 还有个好处是在往后把shell script用跨平台的语言改写的时更容易,
例如perl可以透过$Config{osname}判断OS种类来决定调用哪些外部库:

use Config;

print "$Config{osname}\n";
print "$Config{archname}\n";

@sibadaaa
Copy link

sibadaaa commented Sep 4, 2018

eyeD3 有python 实现 可以在 win和linux环境下运行 FFmpeg也都能运行,我觉得最大的问题是shell script不能在win环境下使用。

@bandiaozimu
Copy link
Owner Author

bandiaozimu commented Sep 4, 2018

@sibadaaa 这是真的打到痛点了,shell script太好用我放不开手🤕。

@bandiaozimu
Copy link
Owner Author

我在script里用到find 跟 pipe ,在windows 下不确定有没有pipe,但有dir跟输出重导可以用:

https://stackoverflow.com/questions/1420965/redirect-windows-cmd-stdout-and-stderr-to-a-single-file

@sibadaaa
Copy link

sibadaaa commented Sep 7, 2018

为啥不使用perl或者python 对shell 部分进行重写?这样各个系统都能正常使用了。也不用考虑各种command line的差别

@bandiaozimu
Copy link
Owner Author

@sibadaaa 我就是打算用perl重写script,但我懒惰想调用外部库,所以才在搜集win 的command line资料。

系统差异可以在perl里先辨别系统,考虑到各系统对于解压,转档,镶封面,id3的工具可能不尽相同,这是必须做的。

@bandiaozimu
Copy link
Owner Author

我其实在写别的东西了,这边我就是慢慢找有用的资料,像command line 解压的工具,汇入foobar的方法等,都找齐了才会动手。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants