b3co/notion-mirror

一个 Notion 镜像

0.1.5 2022-08-29 05:38 UTC

This package is auto-updated.

Last update: 2024-09-12 16:01:47 UTC


README

一个用于读取 Notion 页面(可选)并将图像和视频上传到 S3 存储桶(并相应链接)的 PHP 方法。

这是我通过 composer 分发的第一个包,请多关照。

操作

准备服务

Notion

  1. 您必须在以下位置创建一个 Notion 集成 这里
  2. 因为我们目前没有向 Notion 写入,所以现在只需要 read 访问权限
  3. 获取 notion_token,类似于 secret_xxxxxxxxxx
  4. 对于您希望脚本读取的每个页面,您需要像图中所示将其与集成共享,这部分相当简单,但不易找到

inline

我的 Notion 集成称为 page mirror,使用您自己的,即第一步中创建的 ☝️

S3

  1. 创建一个 AWS S3 存储桶
  2. 获取 AWS_KEYAWS_SECRETAWS_REGIONBUCKET_NAME 注意默认情况下,图像将使用以下结构上传:s3.AWS_REGION.amazonaws.com/BUCKET_NAME/PAGE_ID/public/image/IMAGE_ID.jpg

CLI 调用

您必须创建一个 $config 对象,其中包含先前创建的服务访问变量,如下所示

$config = [
  'notion_token' => 'NOTION_TOKEN',
  'aws_key'      => 'AWS_KEY',
  'aws_secret'   => 'AWS_SECRET',
  'aws_region'   => 'AWS_REGION',
  'bucket_name'  => 'BUCKET_NAME',
];

现在您可以调用 Notion 对象。

$notion = new \b3co\notion\Notion($config);
$page   = $notion->getPage(PAGE_ID);
echo $page->toHtml();

Yii 调用

首先,在配置文件 web.phpconsole.php 中添加

$config = [
	...
	'components' => [
		...
		'notion' => [
			'class' => 'b3co\notion\YiiNotion',
		  'config' => [
		    'notion_token' => getenv('notion_token'),
		    'aws_key'      => getenv('aws_key'),
		    'aws_secret'   => getenv('aws_secret'),
		    'bucket_name'  => getenv('aws_bucket'),
		    'aws_region'   => getenv('aws_region'),
		  ]
		],
		...
  ]
	...
];

其次,使用 YiiNotion 对象获取一个 Notion 对象并执行相应操作。

class NotionController extends Controller {

  public function actionIndex($id) {
    define('VERBOSE', false);
    $notion = Yii::$app->get('notion')->getNotion();
    $page = $notion->getPage($id);
    echo $page->toHtml();

    return ExitCode::OK;
  }
}

模板(进行中)

默认情况下,为每个对象设置三个不同的导出模板

  1. 使用 $page→toHtml() 的 HTML
  2. 使用 $page→toMd() 的 Markdown
  3. 使用 $page→toString() 的纯文本

模板系列

您可以选择使用模板工厂,并在 $config->templates_dir/TEMPLATE_FAMILY/ 下创建一个模板系列。如果调用 $page->toTemplate(TEMPLATE_FAMILY)
系统将检查每个块类型模板,命名为 BLOCK_TYPE.template。例如,对于一个名为 basic 的模板系列,您将得到

inline

其中 imagepage块类型

每个模板可以使用任何给定的格式/语言,并使用对象的属性进行打印,例如 [:ATTRIBUTE],例如一个具有 urlcaption 的图像。

<div><img src='[:url]'>
  <div>[:caption]</div>
</div>

对象和属性的完整列表可在以下位置找到 这里

重要 🚨:如果找不到模板文件,则不会处理该块。

关于 toHtml 方法的说明

可以通过创建一个名为 html 的模板系列来覆盖 HTML 模板,如果找到块项模板,将使用该模板;如果没有,将回退到硬编码的 HTML 模板。

Notion 对象

支持的对象列表

  • 段落块
  • 一级标题块
  • 二级标题块
  • 三级标题块
  • 图像块
  • 待办事项块
  • 列列表和列块
  • 引用块
  • 项目符号列表项块
  • 代码块
  • 切换块
  • 分隔符块
  • 视频块
  • 编号列表项块(复杂,进行中)
  • 嵌入块
  • 方程式块
  • 表格行块
  • 表格块
  • 突出显示块
  • 子页面块

范围之外

  • 子数据库块
  • 文件块
  • PDF 块
  • 书签块
  • 目录块
  • 面包屑块
  • 链接预览块
  • 模板块
  • 页面链接块
  • 同步块

这个README文件是在Notion中创建和存储的,并使用此脚本转换为MD格式,最后更新时间2022-08-24 → .