zrong / wiz2joplin

Migrate from WizNote to Joplin.
GNU General Public License v3.0
90 stars 21 forks source link

wiz_win modify #15

Open holoword opened 2 years ago

holoword commented 2 years ago

按照windows平台上的目录逻辑进行了修改,使得windows平台下可用,个人转换成功。 添加对运行平台判断,按平台使用不同代码,但未在mac os上测试过。 添加控制日志等级模块,使用utf-8编码输出,防止乱码。 添加 @mrcat122 的修改 增加识别 markdown 笔记类型中的本地图片链接 可能存在的问题: 群组笔记转换(个人没有使用过群组笔记,没法进行相应的测试。) 为知笔记的html格式下的代码块在转换过程中有很大的问题,暂时没时间解决。

abe520 commented 1 year ago

@mrcat122 https://s1.ax1x.com/2022/11/08/xzGz2n.png 有没办法把 joplin笔记的元信息插入到正文末尾(单独的)

holoword commented 1 year ago

@mrcat122 https://s1.ax1x.com/2022/11/08/xzGz2n.png 有没办法把 joplin笔记的元信息插入到正文末尾(单独的)

应该难度不大,具体去改一下joplin.py里面相应的func即可。

families commented 1 year ago

@holoword 确定windows系统能运行成功吗?我在window10里运行你的修改版,报错找不到文件,我的win系统没有data\attachments目录啊,data\attachments不应该是mac系统才有这个目录吗?现在不清楚要怎么修改?

(venv) C:\Users\Administrator\Desktop\wiz2joplin-master>w2j -o C:\Users\Administrator\Desktop\wiz2joplin-master\wiz2joplin_output -w F:\Wiz_note\ -u xxx@qq.com -t xxxxxx -a
Please read [C:\Users\Administrator\Desktop\wiz2joplin-master\wiz2joplin_output\w2j.log] to check the conversion states.
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Scripts\w2j-script.py", line 33, in <module>
    sys.exit(load_entry_point('w2j==0.4', 'console_scripts', 'w2j')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\__init__.py", line 64, in main
    ws = wiz.WizStorage(args.wiz_user, wiznote_dir, is_group_storage=False, work_dir=output_dir)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\wiz.py", line 366, in __init__
    root_data_dir = DataDir(self.user_dir.joinpath('data/'))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\wiz.py", line 216, in __init__
    raise FileNotFoundError(f'找不到文件夹 {self.attachments_dir.resolve()}!')
FileNotFoundError: 找不到文件夹 F:\Wiz_note\xxx@qq.com\data\attachments!

(venv) C:\Users\Administrator\Desktop\wiz2joplin-master>
holoword commented 1 year ago

@holoword 确定windows系统能运行成功吗?我在window10里运行你的修改版,报错找不到文件,我的win系统没有data\attachments目录啊,data\attachments不应该是mac系统才有这个目录吗?现在不清楚要怎么修改?

(venv) C:\Users\Administrator\Desktop\wiz2joplin-master>w2j -o C:\Users\Administrator\Desktop\wiz2joplin-master\wiz2joplin_output -w F:\Wiz_note\ -u xxx@qq.com -t xxxxxx -a
Please read [C:\Users\Administrator\Desktop\wiz2joplin-master\wiz2joplin_output\w2j.log] to check the conversion states.
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Scripts\w2j-script.py", line 33, in <module>
    sys.exit(load_entry_point('w2j==0.4', 'console_scripts', 'w2j')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\__init__.py", line 64, in main
    ws = wiz.WizStorage(args.wiz_user, wiznote_dir, is_group_storage=False, work_dir=output_dir)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\wiz.py", line 366, in __init__
    root_data_dir = DataDir(self.user_dir.joinpath('data/'))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\wiz.py", line 216, in __init__
    raise FileNotFoundError(f'找不到文件夹 {self.attachments_dir.resolve()}!')
FileNotFoundError: 找不到文件夹 F:\Wiz_note\xxx@qq.com\data\attachments!

(venv) C:\Users\Administrator\Desktop\wiz2joplin-master>

初步判断可能是判断系统环境出错了,首先麻烦看下在此venv下sys.platform的输出,看看是否是win32,脚本判断非win32时会执行mac下面的代码。 然后如果sys.platform执行输出不是的话,可以尝试自己改下循环,应该是可以的。 另外,麻烦告知下你使用的版本(python以及wiz版本)以及环境,我好自己测试一下。

families commented 1 year ago

应该是环境判断错了,报错的函数root_data_dir = DataDir(self.user_dir.joinpath('data/'))是在wiz_mac.py中定义的。

在此venv下sys.platform的输出

(venv) C:\Users\Administrator\Desktop\wiz2joplin-master>python
Python 3.11.1 (tags/v3.11.1:a7a450f, Dec  6 2022, 19:58:39) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.platform)
win32
>>>

@holoword 确定windows系统能运行成功吗?我在window10里运行你的修改版,报错找不到文件,我的win系统没有data\attachments目录啊,data\attachments不应该是mac系统才有这个目录吗?现在不清楚要怎么修改?

(venv) C:\Users\Administrator\Desktop\wiz2joplin-master>w2j -o C:\Users\Administrator\Desktop\wiz2joplin-master\wiz2joplin_output -w F:\Wiz_note\ -u xxx@qq.com -t xxxxxx -a
Please read [C:\Users\Administrator\Desktop\wiz2joplin-master\wiz2joplin_output\w2j.log] to check the conversion states.
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Scripts\w2j-script.py", line 33, in <module>
    sys.exit(load_entry_point('w2j==0.4', 'console_scripts', 'w2j')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\__init__.py", line 64, in main
    ws = wiz.WizStorage(args.wiz_user, wiznote_dir, is_group_storage=False, work_dir=output_dir)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\wiz.py", line 366, in __init__
    root_data_dir = DataDir(self.user_dir.joinpath('data/'))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Administrator\Desktop\wiz2joplin-master\~\w2j\venv\Lib\site-packages\w2j\wiz.py", line 216, in __init__
    raise FileNotFoundError(f'找不到文件夹 {self.attachments_dir.resolve()}!')
FileNotFoundError: 找不到文件夹 F:\Wiz_note\xxx@qq.com\data\attachments!

(venv) C:\Users\Administrator\Desktop\wiz2joplin-master>

初步判断可能是判断系统环境出错了,首先麻烦看下在此venv下sys.platform的输出,看看是否是win32,脚本判断非win32时会执行mac下面的代码。 然后如果sys.platform执行输出不是的话,可以尝试自己改下循环,应该是可以的。 另外,麻烦告知下你使用的版本(python以及wiz版本)以及环境,我好自己测试一下。

holoword commented 1 year ago

你试试改下 init.py中40行的if判断逻辑,让他执行from . import wiz_win as wiz看看能否解决问题。

families commented 1 year ago

你试试改下 init.py中40行的if判断逻辑,让他执行from . import wiz_win as wiz看看能否解决问题。

我搜索if sys.platform == "win32":,发现有两处判断是否是win32的,然后这两处代码逻辑都改了 然后删除文件夹重新解压后修改的,全流程重新执行了一遍,怎么还是报一样的错?话说我重新解压出来的新文件里面改的,应该不存在有缓存吧?但报一样的错,好像改动没生效,一整套流程试了几遍都还是报之前一样的错

holoword commented 1 year ago

你试试改下 init.py中40行的if判断逻辑,让他执行from . import wiz_win as wiz看看能否解决问题。

我搜索if sys.platform == "win32":,发现有两处判断是否是win32的,然后这两处代码逻辑都改了 然后删除文件夹重新解压后修改的,全流程重新执行了一遍,怎么还是报一样的错?话说我重新解压出来的新文件里面改的,应该不存在有缓存吧?但报一样的错,好像改动没生效,一整套流程试了几遍都还是报之前一样的错

那时是python init.py 然后加上相应参数看看? 再不行的话打下断点看看执行走向,我这几天没时间测试。

families commented 1 year ago

执行

你试试改下 init.py中40行的if判断逻辑,让他执行from . import wiz_win as wiz看看能否解决问题。

我搜索if sys.platform == "win32":,发现有两处判断是否是win32的,然后这两处代码逻辑都改了 然后删除文件夹重新解压后修改的,全流程重新执行了一遍,怎么还是报一样的错?话说我重新解压出来的新文件里面改的,应该不存在有缓存吧?但报一样的错,好像改动没生效,一整套流程试了几遍都还是报之前一样的错

那时是python init.py 然后加上相应参数看看? 再不行的话打下断点看看执行走向,我这几天没时间测试。

之前的问题解决了,现在运行起来了,产生输出了很多文件夹和html文件,然后中途报这个错误程序中断:

File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 508, in build_documents
    document.resolve(
  File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 215, in resolve
    self.resolve_attachments(attachments)
  File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 177, in resolve_attachments
    raise FileNotFoundError(msg)
FileNotFoundError: 找不到文件 None,请检查文档
families commented 1 year ago

执行

你试试改下 init.py中40行的if判断逻辑,让他执行from . import wiz_win as wiz看看能否解决问题。

我搜索if sys.platform == "win32":,发现有两处判断是否是win32的,然后这两处代码逻辑都改了 然后删除文件夹重新解压后修改的,全流程重新执行了一遍,怎么还是报一样的错?话说我重新解压出来的新文件里面改的,应该不存在有缓存吧?但报一样的错,好像改动没生效,一整套流程试了几遍都还是报之前一样的错

那时是python init.py 然后加上相应参数看看? 再不行的话打下断点看看执行走向,我这几天没时间测试。

之前的问题解决了,现在运行起来了,产生输出了很多文件夹和html文件,然后中途报这个错误程序中断:

File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 508, in build_documents
  document.resolve(
File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 215, in resolve
  self.resolve_attachments(attachments)
File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 177, in resolve_attachments
  raise FileNotFoundError(msg)
FileNotFoundError: 找不到文件 None,请检查文档

知道原因了,原来为知笔记很多附件找不到,话说为知笔记没开会员无法下载附件到本地吗?还是说为知笔记把我的附件弄丢了,反正我现在没开会员,然后点击下载附件下不下来,一键同步下载附件到本地也没用

holoword commented 1 year ago

执行

你试试改下 init.py中40行的if判断逻辑,让他执行from . import wiz_win as wiz看看能否解决问题。

我搜索if sys.platform == "win32":,发现有两处判断是否是win32的,然后这两处代码逻辑都改了 然后删除文件夹重新解压后修改的,全流程重新执行了一遍,怎么还是报一样的错?话说我重新解压出来的新文件里面改的,应该不存在有缓存吧?但报一样的错,好像改动没生效,一整套流程试了几遍都还是报之前一样的错

那时是python init.py 然后加上相应参数看看? 再不行的话打下断点看看执行走向,我这几天没时间测试。

之前的问题解决了,现在运行起来了,产生输出了很多文件夹和html文件,然后中途报这个错误程序中断:

File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 508, in build_documents
  document.resolve(
File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 215, in resolve
  self.resolve_attachments(attachments)
File "C:\Users\Administrator\Desktop\wiz2joplin\env\w2j\venv\Lib\site-packages
\w2j-0.5-py3.11.egg\w2j\wiz_win.py", line 177, in resolve_attachments
  raise FileNotFoundError(msg)
FileNotFoundError: 找不到文件 None,请检查文档

知道原因了,原来为知笔记很多附件找不到,话说为知笔记没开会员无法下载附件到本地吗?还是说为知笔记把我的附件弄丢了,反正我现在没开会员,然后点击下载附件下不下来,一键同步下载附件到本地也没用

这个我就不清楚了,我迁移后为知笔记只是作为存档使用了,而且似乎我自己的会员开到了25年,没有办法帮你验证这个问题。

families commented 1 year ago

@holoword 我导入为知笔记时无法导入笔记的标签,你也是这样吗?是不是我用的是最新的joplin,请求api不适配? @zrong

zrong commented 1 year ago

@holoword 我导入为知笔记时无法导入笔记的标签,你也是这样吗?是不是我用的是最新的joplin,请求api不适配? @zrong

先检查是否已经读取到了标签,再检查是否写入了 Joplin。