从上一篇我们了解到了如何安装 n8n

那么这节课我们尝试从github的个人仓库获取某个文件的内容

目标如下

content/business/1.how-to-use-money.mdx

总流程图

流程详解

第1步:申请 GitHub Personal Access Token (Classic)

在gitrhub 个人 设置选项 申请 GitHub Personal Access Token (Classic)

在第二步之前我们点击➕,会进行选择github节点,我们先获取文件列表所以选择 List files

第2步:获取content目录列表 (第一个 GitHub 节点)
  • 节点类型:GitHub

  • 作用:流程启动后,首先会执行这个节点。它的任务是连接到您配置好的某个 GitHub 仓库,并获取根目录下名为 content 的文件夹里面所有文件和子文件夹的列表。

  • 输出:一个包含多个项目的列表,每个项目都代表 content 目录下的一个文件或文件夹。

Credential to connect with (连接凭证): GitHub account 把我们刚申请的填入进去

  • User 为你的github用户

  • Access Token填入申请的key

  • Resource (资源): File - 操作的 GitHub 资源类型是“文件”。

  • Operation (操作): List - 资源执行的操作是“列出”。结合起来就是“列出文件”。

  • Operation (操作)和Resource (资源) 有其他的选项可以尝试结合

  • Repository Owner (仓库所有者): Shiinama - 指定了目标仓库是属于 Shiinama 这个用户或组织的。

  • Repository Name (仓库名称): blog - 指定了仓库的名字是 blog

  • Path (路径): content - 指定了要列出内容的具体路径是仓库根目录下的 content 文件夹。

这个仓库的名称结合起来就是我的项目地址 https://github.com/Shiinama/blog

我们来尝试执行一下就会看到

已经成功列出了仓库的文件目录

第3步:获取子目录列表文件 (第二个 GitHub 节点)

  • 节点类型:GitHub

  • 作用:这个节点接收上一步传来的列表。它很可能会遍历这个列表,如果发现某个项目是文件夹,它就会进入这个子文件夹,并获取该子文件夹内部所有文件的列表。

  • 输出:一个更详细的文件列表,包含了各个子目录下的文件信息(提到的 d1-and-drizzle.mdx 文件)。

同理在右上角添加github的 list files

左侧的是我们上一个获取content目录列表请求到的结果

中间的参数填写完, 点击 Execute Step 会执行显示结果在右侧

点击左侧path 选择复制

点击Execute step之后 我们可以在右侧得到显示的结果

这一步之后,我们得到的就是目录下所有mdx文件格式的文章了之后我们需要进行IF过滤空值

Path 为我们需要得到的内容, 对其进行IF判断 确保path的参数为 .mdx结尾 判空

第4步:IF 条件判断 (If)

  • 节点类型:逻辑判断 (Logic)

  • 作用:这是一个过滤器。它会检查从上一步获取到的每一个文件,并根据您设定的条件进行判断。条件是“文件名是否以 .mdx 结尾?”或者“文件类型是否是 file?”。

  • 分支

    • true (上):如果文件满足条件,就会从 true 路径输出。从图上看,目前 true 路径没有连接任何节点。

    • false (下):如果文件不满足条件,就会从 false 路径输出。在您的流程中,数据流从 false 路径继续向下走。

IF操作作为获取.mdx 防止.mdx内容为空的一层

IF的True节点进行连接下一个Code1节点

第5步:Code1 (第一个代码节点)

  • 节点类型:Code

  • 作用:这个节点接收从 IF 节点的 false 路径传来的文件数据。处理和准备 URL。例如:

    • 从文件数据中提取 url_links.self 字段。

    • 使用代码去掉 URL 中多余的 ?ref=main 部分,生成一个干净的、可用于请求原始文件内容的 URL。

左侧是待处理,

右侧是处理好的

代码如下

// n8n Code Node
for (const item of items) {// --- 第1部分:处理顶层的 'url' 字段 (和之前一样) ---const topLevelUrl = item.json.url;if (typeof topLevelUrl === 'string' && topLevelUrl.includes('?')) {// 创建一个新的 'cleanUrl' 字段item.json.cleanUrl = topLevelUrl.split('?')[0];} else {item.json.cleanUrl = topLevelUrl;}// --- 第2部分:【新增】处理嵌套的 '_links.self' 字段 ---// 先安全地检查 _links 对象和 _links.self 字段是否存在if (item.json._links && typeof item.json._links.self === 'string') {const selfUrl = item.json._links.self;// 同样检查它是否包含 '?'if (selfUrl.includes('?')) {// 如果包含,就直接修改(覆盖)原始 `_links.self` 字段的值item.json._links.self = selfUrl.split('?')[0];}}}return items;

第6步:HTTP Request (HTTP请求节点)

  • 节点类型:HTTP Request

  • 作用:此节点会接收 Code1 处理好的干净 URL,然后向这个 URL 发起一个 HTTP GET 请求。它的目的就是获取文章的真正内容。您可能在这里设置了 Accept: application/vnd.github.raw 的 Header,来直接获取 Markdown 的源文本。

URL里面填写下面的self

我们需要添加请求头,让github了解到我们的请求的是私有仓库响应格式

Value里面需要填写我们申请的Key

格式:

token key //记得中间有空格

请求头名称 (Name): Accept 请求头

内容 (application/vnd.github.v3+json) 分解:

  • application/vnd.github:这是一个特定的媒体类型 (Media Type),表示这是针对 GitHub API 的请求。

  • v3:这部分指定了你希望使用 REST API 的 V3 版本。,可以确保你的应用不会因为未来 GitHub API 的版本更新而意外中断。

  • +json:这表示你希望服务器返回的数据是 JSON 格式

请求头名称 (Name): Accept

请求头值 (Value): application/vnd.github.raw

核心目的:直接获取文件的原始(Raw)内容。

执行 Execute step 右侧可以读取到文件的内容了

原文用markdown写的,输出原格式内容了

关于我的一些介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91914.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91914.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/91914.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式ID与幂等性面试题整理

分布式ID与幂等性面试题整理 文章目录分布式ID与幂等性面试题整理一、分布式ID1. 为什么需要分布式ID?2. 分布式ID的核心要求3. 常见分布式ID方案(1) UUID(2) 数据库自增(3) Redis自增(4) 雪花算法(Snowflake)(5) 美团Leaf/百度UidGenerator4. 雪花算法详解二、幂等…

node.js学习笔记1

目录 Node.js是什么 Node.js下载与安装 Buffer缓冲区 一些计算机硬件基础 程序运行的基本流程 Node.js是什么 node.js是一个JavaScript运行环境,或者说,node.js是一个可以运行JavaScript的软件。 可以用于开发服务端、桌面端、工具类应用。 服务器…

游戏开发日志

我来为您逐行详细讲解这个 ViewMgr.cs 文件。这是一个Unity游戏中的视野管理系统,用于优化游戏性能。## 文件结构概览这个文件主要包含以下几个部分: 1. 数据结构和接口定义 2. 视野管理器 ViewMgr 类 3. 工具类 ViewTools让我逐行为您讲解:#…

使用 PlanetScope 卫星图像绘制水质参数:以莫干湖为例

1.数据采集 我使用ArcGIS Pro 中的Planet Imagery插件下载了 2023 年 6 月 25 日的安卡拉莫干湖卫星图像。 图 1:使用 Planet 插件下载卫星图像 图 2:下载图像的日期和传感器选择 我查阅的研究中指出,使用无降水时期的卫星图像对于水质测定…

Docker部署前后端分离项目——多项目共享环境部署

目录 一、简介 二、文件目录结构 三、前端部署流程(多nginx) 3.1 前端打包 3.2 编写部署文件——项目1(consult-system) 3.3 编写部署文件——项目2(person-system) 3.4 前端部署至linux服务器 3.5…

学习笔记(39):结合生活案例,介绍 10 种常见模型

学习笔记(39):结合生活案例,介绍 10 种常见模型线性回归只是机器学习的 “冰山一角”!根据不同的任务场景(分类、回归、聚类等),还有许多强大的模型可以选择。下面我用最通俗易懂的语言,结合生活案例&#…

BabyAGI 是一个用于自构建自主代理的实验框架

这个最新的 BabyAGI 是一个用于自构建自主代理的实验框架 核心是一个新的函数框架 (functionz),用于存储、管理和执行数据库中的函数。它提供了一个基于图形的结构,用于跟踪导入、依赖函数和身份验证密钥,并具有自动加…

商业秘密视域下计算机软件的多重保护困境

作者:邱戈龙、柯坚豪重庆商业秘密律师广东长昊律师事务所引言:计算机软件保护的复杂性 在商业秘密保护的宏大版图中,计算机软件因其技术密集性和创新性占据着特殊地位。软件的真正价值不仅在于其代码本身,更在于其背后的流程、逻…

深入理解 Spring Boot 自动配置原理

Spring Boot 之所以能“开箱即用”,其核心就在于 自动配置机制(Auto Configuration)。本文将深入剖析 Spring Boot 自动配置的工作原理,从注解入手,再到底层的源码机制,揭开 Spring Boot 背后的“魔法”。 …

Ubuntu18.04开机启动执行脚本

#!/bin/bash # 运行 .NET Core 应用程序 dotnet /home/bruce/atg/SmartConsole.dll &# 打开浏览器 firefox 给文件权限sudo chmod 777 start.sh运行gnome-session-properties打开系统自带的一个启动程序

c语言进阶 字符函数和字符串函数

字符函数和字符串函数字符函数和字符串函数1. strlenstrlen 函数详解模拟实现1.计数器方式2.不能创建临时变量计数器(递归)3.指针-指针的方式2. strcpystrcpy 函数详解模拟实现3. strcatstrcat 函数详解模拟实现4. strcmpstrcmp 函数详解模拟实现5. strn…

(LeetCode 每日一题) 1233. 删除子文件夹 (排序)

题目:1233. 删除子文件夹 思路:排序,时间复杂度0(L*nlogn)。 文件夹a的子文件b,b字符串字典序列一定是大于a的,所以直接将字符串数组folder升序排序。每次只需判断当前字符串,是否是父文件夹数组v最后一个…

集成算法学习bagging,boosting,stacking

baggibg(rf随机森林) adaboostibg 用来展示 Project Jupyter | Home 展示源码 Eclipse IDE | The Eclipse Foundation Eclipse 下载 |Eclipse 基金会 教程8-Adaboost决策边界效果_哔哩哔哩_bilibili (23 封私信) 图解机器学习神器:Scikit-Learn - 知乎 Baggi…

HOOPS SDK赋能PLM:打造全生命周期3D数据管理与协作能力

在制造业和工业领域,产品全生命周期管理(PLM) 已成为驱动企业数字化转型、提升创新力与运营效率的核心引擎。一个高效的PLM平台不仅需要管理海量的设计数据,还必须在设计、制造、供应链、销售和服务等多个环节之间无缝流转信息&am…

解决 Selenium 页面跳转过快导致的内容获取问题:从原理到实践

在使用 Selenium 进行网页自动化操作时,很多开发者都会遇到一个头疼的问题:页面还没加载完,代码就已经执行到下一句了。结果要么是元素找不到,要么是获取的内容不完整,甚至直接抛出异常。今天我们就来聊聊如何优雅地解…

【Python练习】051. 编写一个函数,实现简单的定时器功能

051. 编写一个函数,实现简单的定时器功能 051. 编写一个函数,实现简单的定时器功能 代码说明: 示例运行: 扩展功能 代码说明: 实现Python定时器的几种方法 051. 编写一个函数,实现简单的定时器功能 以下是一个简单的Python函数,用于实现定时器功能。这个定时器可以设置…

springboot基础-demo

1.创建学生信息表 create table stu(id int unsigned primary key auto_increment comment ID,name varchar(100) comment 姓名,age tinyint unsigned comment 年龄,gender tinyint unsigned comment 性别, 1:男, 2:女,score double(5,2) comment 成绩,phone varchar(11) comme…

关于transformer的一些疑点总结

残差连接的作用 Transformer中的残差连接(Residual Connection)是其深层架构能稳定训练的核心设计之一,主要通过以下机制发挥作用: 1. 缓解梯度消失,支持深层训练 梯度保护机制:在反向传播时,…

【终极指南】解决 Windows 11 更新后 Docker 连接 localhost 奇慢(卡顿、超时十几秒)的通用方案

聪明人能看得出这是 ai 写的,但也是我亲身实践的,最后让 ai 总结写了一篇,放心食用 一、 结论先行(直接用)问题现象: 升级到某个 Windows 11 版本后,在本地访问 Docker 容器中部署的任何服务&am…

Stream API

Java 8 引入的 Stream API 是处理集合数据的强大工具,它允许你以声明式方式处理数据集合,支持各种聚合操作和并行处理。以下是 Stream API 的核心知识点及具体代码示例: 1. Stream 概述 Stream 是数据渠道,用于操作数据源&#xf…