首页 > 系统相关 >[解决方案] 几十行就能导出博客园文章的 shell 脚本

[解决方案] 几十行就能导出博客园文章的 shell 脚本

时间:2024-10-28 11:33:13浏览次数:1  
标签:md shell url CNBLOG 博客园 导出 echo page Authorization

几十行就能导出博客园文章的 shell 脚本

CNBLOG_USERCNBLOG_TOKEN 不建议粘贴直接放在脚本中,放在环境变量中执行更安全一些,不容易暴露 token。

#!/bin/bash

sync_cnblog() {
    API_URL="https://i.cnblogs.com/api/posts/list"

    # export CNBLOG_USER=xxx
    # export CNBLOG_TOKEN=yyy

    page=1
    page_size=10
    response=$(curl -s -H "Authorization-Type: PAT" -H "Authorization: Bearer $CNBLOG_TOKEN" "$API_URL?s=$page_size&p=$page")
    total_count=$(echo $response | jq -c ".postsCount")
    echo "[ Start ] Download articles count $total_count"

    download_count=0
    while [ $(((page - 1) * page_size)) -lt $total_count ]; do
        response=$(curl -s -H "Authorization-Type: PAT" -H "Authorization: Bearer $CNBLOG_TOKEN" "$API_URL?s=$page_size&p=$page")
        while read -r item; do
            title=$(echo "$item" | jq -r '.title')
            url=$(echo "$item" | jq -r '.url')
            date_published=$(echo "$item" | jq -r '.datePublished')
            is_markdown=$(echo "$item" | jq -r '.isMarkdown')

            if [ "$is_markdown" == "true" ]; then
                # Create filename, replace special char to '_', and add ".md" suffix
                # file_name="${date_published}_${title//[\/\\:*?\"<>|() ]/_}.md"
                file_name="${date_published}_${title}.md"

                # Add '.md' if no suffix
                # Replace '.html' to '.md'
                if [[ "$url" == *".html" ]]; then
                    url="${url%.html}.md"
                else
                    url="${url}.md"
                fi

                # Download
                echo "[ Download ]" "https:$url -> $file_name"
                curl -H "Authorization-Type: PAT" -H "Authorization: Bearer $CNBLOG_TOKEN" -so "$file_name" "https:$url"

                ((download_count++)) || true # set -e
            else
                echo "[ Skip ] $date_published $title"
            fi
        done < <(echo "$response" | jq -c '.postList[]')

        ((page++))
    done
    echo "[ End ] Download articles count $download_count"
}

sync_cnblog

标签:md,shell,url,CNBLOG,博客园,导出,echo,page,Authorization
From: https://www.cnblogs.com/shuqin/p/18510084

相关文章

  • Xshell6 要继续使用此程序,您必须应用最新的更新或使用新版本
    在xshell的使用过程中,经常会遇到“要继续使用此程序,您必须应用最新的更新或使用新版本”的提示对话框,其实简单点的就是把自己电脑的日期往前更改一年,然后再打开Xshell就行了(亲测可以)。解决办法使用二进制编辑器修改nslicense.dll文件文件位置:xshell安装根目录 具体步骤1、......
  • linux学习day2——shell脚本
    shell语法概论注释变量默认变量数组expr命令read命令echo命令printf命令test命令与判断符号[]判断语句循环语句函数exit命令文件重定向引入外部脚本1.shell语法——概论概论shell是我们通过命令行与操作系统沟通的语言。shell脚本可以直接在命令行中执行,也......
  • Adams导出图象/数据的主要设置
    步骤:Result——Postprocessor——File——Export。Export之后会有多种选项,以下列举常用的各个选项:1.PlotConfigFile:该选项会导出一个.plt文件,系AutoCAD打印文件。这一步会弹出界面:ConfigFileName是你要导出文件名称。Target是你要导出的路径。PageNames是你要导出的图......
  • [笔记] SpringBoot3 使用 EasyExcel 封装工具类实现 自定义表头 导出并实现 数据格式
    在现代企业应用中,数据导出功能是非常常见的需求。特别是在处理大量数据时,将数据导出为Excel文件不仅方便用户查看和分析,还能提高数据处理的效率。ApachePOI是一个常用的JavaExcel处理库,但它在处理大数据量时性能较差。为此,阿里巴巴开源了EasyExcel,这是一个基于Java......
  • Rat工具:vshell 4.9.3简单使用介绍
    前言:     最近在寻找合适的新的c2工具使用,cs的特征查的太严了不深入的修改特征随便就被威胁情报标红,于是打算使用市面上的一些c2工具看看哪些比较好用。        修改cs的特征需要花点时间去研究,这会是后期的一个方向,或许目前可以尝试使用新的rat来看看那些rat......
  • 博客园自定义页面样式
    TheFirsttoSay花了两天,重写了博客的页面样式。整体风格是按照_darkgreentrip_的风格去改的,使之更接近苯人的风格。最后在结尾放了一些格子可以用来导航,有好用的网站大概会放在这里。自己其实有做过导航站,但是由于挂在GitHub上,网速比较慢,现在扔在下面平时也稍微能用用()下面贴......
  • 红队老子养成记3 - 学会反弹shell的多种姿势,拿shell拿手软!!(全网最多姿势!)
    大家好,我是Dest1ny!今天还是讲redteam里比较重要的反弹shell!不会反弹shell,那你如何拿控制权限!今天满满干货,大家加油学!CLASS-1正向连接与反向连接详解1.正向连接正向连接是最常见的连接方式。当我们攻击了一台机器后,打开了该机器的一个端口,攻击者在自己的机器上主动连......
  • 使用easypoi处理工作簿多sheet导出
         普通的单表以及数据都是单列呈现的,没有各种合并单元格的样式可以直接使用easyexcel,使用注解加实体类,java实体类属性一一对应excel每列,直接导出非常简单。不过最近的需求非常复杂,需要导出的工作簿,里边有几十张sheet,而且每个sheet的表格样式都是花里胡哨的,而且还要......
  • Vue2 - 完美解决html2canvas截图不全问题,截屏导出的图片显示不全只有一部分或缺一块,vu
    前言该解决方案任意前端技术栈通用,不仅限Vue。在vue2(手机H5移动端/微信公众号H5页面)项目开发中,使用html2canvas截屏时发现有一部分未截取到少了一块截图不完整,导出保存图片时发现截图只有一半显示不全,另外还有一个问题就是截图时截取当前可视区域的问题(出现滚动条只保......
  • Java EasyExcel 导出报内存溢出的原因与解决方案
    JavaEasyExcel导出报内存溢出的原因与解决方案在现代企业级应用开发中,数据导出功能是一项常见且重要的任务。随着数据量的不断增长,如何高效、稳定地完成数据导出成为开发者面临的一大挑战。EasyExcel是阿里巴巴开源的一款基于Java的Excel处理工具,它以其高效、简洁的特性,广泛......