DeppWang / youdaonote-pull

📝 一个一键导出 / 备份「有道云笔记」所有笔记的 Python 脚本。 A Python script to export/backup all the notes of the "Youdao Note".
MIT License
1.34k stars 292 forks source link

不支持新版有道云笔记 #57

Closed DrNaki closed 2 years ago

DrNaki commented 2 years ago

导出的内容变成这个了。显示暂时无法查看,但是之前写的笔记都正常 image

DrNaki commented 2 years ago

因为有每天在有道云笔记上写日记的习惯,所以精确地发现2022年1月18日之后的笔记被导出后都会变成这种格式。1月17日之前的笔记都没有问题。

Yun-ke commented 2 years ago

这个有办法解决吗

Yun-ke commented 2 years ago

或者有没有其他的比较好的可以一键导出的笔记软件可以推荐,太难了

DeppWang commented 2 years ago

原因可能是你编辑器版本过低导致的,建议在网页或者最新客户端重新打开一下笔记,再尝试下载,看是否可行

htb1290145 commented 2 years ago

我也遇到了这个问题,跟有没有图片无关。早期建的笔记可以导出,最近建的都是无法显示

DeppWang commented 2 years ago

我也遇到了这个问题,跟有没有图片无关。早期建的笔记可以导出,最近建的都是无法显示

换个 UA 试试

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'

修改 pull.py 代码

htb1290145 commented 2 years ago

我也遇到了这个问题,跟有没有图片无关。早期建的笔记可以导出,最近建的都是无法显示

换个 UA 试试

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'

修改 pull.py 代码

不行,有道云太狗了!!!

dycylmm commented 2 years ago

大佬,我不太会py,但是改了一下,我测试我的有道云,是解决了他们遇到的这个问题了。下边是我改动的地方

# pull.py
# 86行我换成了这个
FILE_URL = 'https://note.youdao.com/yws/api/personal/sync?_platform=web&_vendor=official-website&method=download&keyfrom=web&sev=j1&cstk=%s'

# 修改请求头的地方我我改了UA,并添加了最下边的3个属性
self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36',
            'Accept': '*/*',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
            'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
            'sec-ch-ua-mobile': '?0',
            'sec-ch-ua-platform': '"Windows"',
        }

# 另外在 437行我发现了一个bug,就是有的标题xml是没有level属性的,直接取就报错,所以我稍微改动了一下
elif 'heading' in child.tag:
                level = 1
                if 'level' in child.attrib:
                    level = child.attrib['level']
                else:
                    level = 0

                if level == 'a' or level == 'b':
                    level = 1
                for child2 in child:
                    if 'text' in child2.tag:
                        # 将 None 转为 "
                        if child2.text is None:
                            child2.text = ''
                        else:
                            new_content += f'%s ' % ("#" * int(level))
                        new_content += f'%s{nl}{nl}' % child2.text
                        break

这个问题,我猜测是因为有道云更新了一个新的版本
使用新版本写的笔记,再去用之前的请求去模仿,就认定成了你在使用旧版本的有道云,有道云就自动返回一个提示更新的.note文件,解析出来就像这个issue的图片一样。 我的改动就是看了看他们新增了哪些参数,添加上来了。但具体是添加哪处生效的我没有进行测试~

然后,还有一个问题是,关于使用cookies登录的,我看有道云也做了更新,下边是我用的模板

{
  "cookies": [
      [
          "YNOTE_CSTK",
          "",
          ".note.youdao.com",
          "/"
      ],
      [
          "YNOTE_LOGIN",
          "",
          ".note.youdao.com",
          "/"
      ],
      [
          "YNOTE_PERS",
          "",
          ".note.youdao.com",
          "/"
      ],
      [
          "YNOTE_SESS",
          "",
          ".note.youdao.com",
          "/"
      ],
      [
        "YNOTE_USER",
        "1",
        ".note.youdao.com",
        "/"
    ],
      [
          "JSESSIONID",
          "",
          "note.youdao.com",
          "/"
      ],
      [
          "OUTFOX_SEARCH_USER_ID",
          "",
          "note.youdao.com",
          "/auth"
      ],
      [
          "OUTFOX_SEARCH_USER_ID_NCOO",
          "",
          "note.youdao.com",
          "/login/acc/pe"
      ]
  ]
}
DeppWang commented 2 years ago

@dycylmm 厉害,我优化一下

DeppWang commented 2 years ago

此问题已修复