导出有道云笔记

先使用有道云笔记导出全部内容

耐心等待导出完成

导出的效果(这是其中某个目录)

可以看到普通的文章格式导出为pdf,md格式导出还是的md格式

使用PHP的PDFParser解析PDF内容

先安装PDFParser,(如果没有安装composer,需要先安装它)进入showdoc根目录下,执行

composer require smalot/pdfparser

然后在showdoc根目录增加 import_from_pdf_and_md.php 文件,内容为:

//去掉超时限制,防止超时报错

set_time_limit(0);

require 'vendor/autoload.php';

//============配置参数 开始==================

//有道云导出的目录,也就是需要导入的文件根目录

$import_dir = 'C:\Users\Administrator\Desktop\youdao\2020-04-24-10-49';

$show_url = 'http://这里填写你的showdoc网址/';

$api_key = '这里填写你的项目api_key';

$api_token = '这里填写你的项目api_token';

//============配置参数 结束==================

// 浏览器友好的变量输出

function dump($var)

{

ob_start();

var_dump($var);

$output = ob_get_clean();

if (!extension_loaded('xdebug')) {

$output = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $output);

$output = '

' . htmlspecialchars($output, ENT_QUOTES) . '

';

}

echo '';

echo($output);

}

// 遍历所有的模型文件

function file_scan($path, &$fileArr)

{

$dirfat = dir($path);

while (false !== $entry = $dirfat->read()) {

if ($entry == '.' || $entry == '..' || $entry == '.svn') {

continue;

}

if (is_file($path . DIRECTORY_SEPARATOR . $entry)) {

$fileArr[] = $path . DIRECTORY_SEPARATOR . $entry;

} else {

file_scan($path . DIRECTORY_SEPARATOR . $entry, $fileArr);

}

}

$dirfat->close();

return $fileArr;

}

function curlPost($url, $data)

{

$ch = curl_init();

$params[CURLOPT_URL] = $url; //请求url地址

$params[CURLOPT_HEADER] = FALSE; //是否返回响应头信息

$params[CURLOPT_SSL_VERIFYPEER] = false;

$params[CURLOPT_SSL_VERIFYHOST] = false;

$params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回

$params[CURLOPT_POST] = true;

$params[CURLOPT_POSTFIELDS] = $data;

curl_setopt_array($ch, $params); //传入curl参数

$content = curl_exec($ch); //执行

curl_close($ch); //关闭连接

return $content;

}

//判断是否遍历过所有需要导入的文件,没有的话先遍历,方便后面一个一个文件导入,如果多个文件一起导入会导致PHP执行超时或超内存

$cache_path = dirname(__FILE__) . '/import_files.php';

if (!file_exists($cache_path)) {

$fileArr = [];

file_scan($import_dir, $fileArr);

file_put_contents($cache_path, json_encode($fileArr));

} else {

$fileArr = json_decode(file_get_contents($cache_path));

}

$number = intval($_GET['number']);

$url = $show_url.'import_from_pdf_and_md.php?number='.($number+1);

if (!isset($fileArr[$number])) {

//导入结束

dump('import finish!');

exit();

}

//获取具体某个文章的目录地址

$file_path = $fileArr[$number];

dump($file_path);

//这个$fileArr变量内容太大,先释放掉

unset($fileArr);

//从目录地址中获取分类和标题

$pathinfo = explode('\\', str_replace($import_dir . '\\', '', $file_path));

dump($pathinfo);

$file_title = array_pop($pathinfo);

$titleArr = explode('.', $file_title);

$ext = array_pop($titleArr);

$title = implode('.', $titleArr);

if ($ext == 'md') {

$content = file_get_contents($file_path);

} elseif ($ext == 'pdf') {

$parser = new \Smalot\PdfParser\Parser();

$pdf = $parser->parseFile($file_path);

$content = $pdf->getText();

}else{

echo "";

exit;

}

//通过showdoc API 上传数据

$api_url = $show_url.'server/index.php?s=/api/item/updateByApi';

$param['api_key'] = $api_key;

$param['api_token'] = $api_token;

$param['cat_name'] = implode('/', $pathinfo);

$param['page_title'] = $title;

$param['page_content'] = $content;

//dump($param);

$res = curlPost($api_url, $param);

dump($res);

echo "";

?>

注意“配置参数”部分要换成自己的实现参数,接下来需要安装下里面需要的PdfParser组件

执行导入

在浏览器里访问 http://这里填写你的showdoc网址/import_from_pdf_and_md.php 就可以自动完成导入。

注意:由于系统不是批量导入的,是一个文档一个文档地导入,每导入一个文档浏览器就自动刷新一次,因此在导入过程中不要关闭浏览器,同时由于没有做去重,因此只能执行一次,如果执行多次会导致文档重复。

后记:导入完成后对于md格式问题不大,但对于pdf格式,受限于PdfParser获取到的内容有可能出现异常或者格式不对。只能凑合着用。如正常情况是这样的

参考资料

https://blog.csdn.net/weixin_42139662/article/details/88037763

下载最新版的curl

https://curl.haxx.se/windows/

但导入后会莫名多一些空格,然后变成这样的

参 考资料

h ttp s:/ /b lo g .c sd n.n et/ w eix in _4 2139662/a rtic le /d eta ils /8 8037763

下 载最新版的curl

h ttp s:/ /c u rl.h axx.s e /w in d ow s/

如果你想导入带格式的,也可以参考我们下一个文档:有道云笔记批量导入到showdoc(二)

html导入有道云笔记,有道云笔记批量导入到showdoc(一)相关推荐

  1. 通过jsp向mysql批量导入数据_对大数据的批量导入MySQL数据库

    自己的库里有索引在用insert导入数据时会变慢很多 使用事务+批量导入 可以配置使用spring+mybatis整合的方式关闭自动提交事务(地址),选择批量导入每一百条导入使用list存储值传入到m ...

  2. java excel批量导入数据库数据_Java实现Excel数据批量导入数据库

    Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...

  3. txt 乱码_STATA数据导入——将TXT、EXCEL、SAS、SPSS数据/批量导入STATA

    作者:Misszhou早早早 邮箱:zlr1220@126.com 使用Stata进行数据分析时面临的第一个问题是如何将各种类型的数据转换为dta.格式,导入的途径主要有以下几种: Stat/Tran ...

  4. Alfresco Community 批量导入指南

    简介: <Alfresco Community 批量导入指南>详细介绍了Alfresco批量导入的原理.方法.操作步骤等,对了解和使用Alfresco具有重要参考价值. 目录: 1. 介绍 ...

  5. c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...

    向数据库的一张表中添加数据,可以采用单个添加,即一条数据.一条数据的添加:也可以采用批量导入,依次将好些条数据写入数据库的一张表中.文本借助实例<添加系列信息>讲解一种向数据库批量导入数据 ...

  6. 文本导入ORACLE快速,Oracle批量导入文本文件快速的方法(sqlldr实现)

    前言 最近做项目的时候需要导入一批3000多万条的POI数据到Oracle数据库,简单的插入导入速度太慢,使用sqlldr 批量导入3000多万条数据花了20分钟左右,速度还可以,现在分享给大家,具体 ...

  7. Vue 批量导入 excel 表格数据

    一.安装依赖 npm install file-saver xlsx -S npm install script-loader -D 二.按需引入(在用到的组件中引入) import * as XLS ...

  8. matlab 将txt导入excel,[转载]MATLAB  批量导入excel和txt文件的方法

    将一个文件目录下所有的文件名字全部倒入到一个文件中,除了使用ls函数以外,还可以使用 file=dir('C:UsersAdministratorDesktopMATLAB数据的导入导出以及试验的数据 ...

  9. matlab 批量导入excel,MATLAB  批量导入excel和txt文件的方法

    将一个文件目录下所有的文件名字全部倒入到一个文件中,除了使用ls函数以外,还可以使用 file=dir('C:\Users\Administrator\Desktop\MATLAB数据的导入导出以及试 ...

  10. Android手机免费批量导入Excel姓名手机号码为通讯录联系人

    对于管理人员(辅导员.人力资源或者其他管理人员)来说,批量导入数据是经常需要面对的事情.一个高效率的专业管理人员,需要有高效率的工具.为此,本篇博客将为您提供一个关于在Android手机免费批量导入e ...

最新文章

  1. Elasticsearch Java API 6.2(java client)
  2. matlab设置随机流的种子
  3. 为什么以前那种到处喝咖啡创业的场景一去不复返了?
  4. Makefile和Cmake的联系与区别
  5. hash值为负_java – HashCode给出负值
  6. JavaScript中圆括号()和方括号[]的一个特殊用法
  7. 计算机网络2020秋--第四次测验
  8. 如何理解UEFI的事件机制(三)——时钟中断
  9. 使电动机反转的matlab仿真图,基于simulink的Matlab仿真作业(电气工程专业)2
  10. 个人sublime定制
  11. IP地址最后一位斜杠是什么意思?比如192.168.1.10/27?还有IP地址和子网掩码相加得到的网络地址是什么意思
  12. 企业内部知识共享平台的搭建和应用
  13. windows server 2008r2更新server pack 1补丁包和勒索病毒nsa,永恒之蓝 补丁包
  14. r如何打开计算机窗口,如何进入运行窗口
  15. 移动硬盘装Ubuntu系统小记
  16. 三阶魔方入门基础教程
  17. springboot 对接 淘宝联盟
  18. 亲测3种个人在线网站建设的方法
  19. 踩坑 微信小程序开发mpvue使用iconfont,顺便解决偶现图标显示不正确
  20. 老子研究文献知识发现数据竞赛

热门文章

  1. Day5 - 前端高频面试题之计算机网络相关
  2. 安卓开发之开启子线程以及安卓的消息机制原理
  3. markdownpad2下载安装教程
  4. 硬盘MBR和GPT区别
  5. 两边定宽,中间自适应布局的四种实现方法
  6. Vs2012调试本地windows服务
  7. 每日linux命令学习-历史指令查询(history、fc、alias)
  8. (大数据工程师学习路径)第二步 Vim编辑器----Vim文档编辑
  9. 移动办公、企业-移动办公:移动过程中的办公触手可及-by小雨
  10. HLSL Tips 1:如何把输入映射到输出像素