├── .github └── workflows │ └── main.yml ├── .gitignore ├── README.md ├── cookie.png ├── go.mod ├── go.sum ├── main.go └── weixin.png /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: goreleaser 2 | 3 | on: 4 | create: 5 | tags: 6 | - v* 7 | 8 | jobs: 9 | goreleaser: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - 13 | name: Checkout 14 | uses: actions/checkout@v1 15 | - 16 | name: Set up Go 17 | uses: actions/setup-go@v1 18 | with: 19 | go-version: 1.13.x 20 | 21 | - name: Run Server GoReleaser 22 | uses: goreleaser/goreleaser-action@v1 23 | with: 24 | version: latest 25 | args: release --rm-dist 26 | env: 27 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | *.md 3 | *.html -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 批量导出CSDN博客 2 | > 批量导出`csnd`博客,并转化为`hexo`博客样式,如果你是用富文本编辑器写的则会导出`html`样式 3 | 4 | 注:有些文章可能获取不到造成进度条无法达到100%,如果走到99%,走不动了,直接取消即可 5 | 6 | # Quick start 7 | 8 | **安装** 9 | ```bash 10 | go get github.com/pibigstar/csdn-hexo 11 | ``` 12 | 13 | **使用** 14 | ```bash 15 | csdn-hexo -username 你的csdn用户名 -cookie 你csdn的cookie -page 1 16 | ``` 17 | > page不写,默认为下载全部页 18 | 19 | **完整示例** 20 | ```bash 21 | go run main.go -username "junmoxi" -cookie "UserName=junmoxi; UserToken=c3c29cca48be43c4884fe36d052d5851" 22 | ``` 23 | > 如果想下载别人的文章,那么将`username`更换为别人的即可,cookie还是用你的 24 | 25 | # 下载 26 | > 为了方便非Go语言用户使用,我也编译出了二进制文件,支持Windows、Linux和MAC用户 27 | 28 | [点击下载](https://github.com/pibigstar/csdn-hexo/releases/tag/v1.1) 29 | 30 | 31 | # cookie获取 32 |  33 | 34 | # 关注 35 | > 如果对你有所帮助,请给个star,你的支持是我最大的动力,欢迎关注我微信公众号,一起学习Go语言 36 | 37 |  -------------------------------------------------------------------------------- /cookie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pibigstar/csdn-hexo/4547468cda79e2d678a0c9eab956333146eb5153/cookie.png -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/pibigstar/csdn-hexo 2 | 3 | go 1.12 4 | 5 | require ( 6 | github.com/qianlnk/pgbar v0.0.0-20190929032005-46c23acad4ed 7 | github.com/qianlnk/to v0.0.0-20180426070425-a52c7fda1751 // indirect 8 | ) 9 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/qianlnk/pgbar v0.0.0-20190929032005-46c23acad4ed h1:/nQRgal0OAvl64fVVo0IrwlMt8vXypxc/a+N0Is80VY= 2 | github.com/qianlnk/pgbar v0.0.0-20190929032005-46c23acad4ed/go.mod h1:4YWkn3EVkh8c1BDlVmw+Zh2QLhs+MbAg4xy4RqcKMsA= 3 | github.com/qianlnk/to v0.0.0-20180426070425-a52c7fda1751 h1:3EYaPrwMGOaFxBbiLlsfRGFNlSLJ3ETjkPbTfkG5IGQ= 4 | github.com/qianlnk/to v0.0.0-20180426070425-a52c7fda1751/go.mod h1:HYAQIJIdgW9cGr75BDsucQMgKREt00mECJHOskH5n5k= 5 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "crypto/hmac" 5 | "crypto/sha256" 6 | "encoding/base64" 7 | "encoding/json" 8 | "flag" 9 | "fmt" 10 | "io/ioutil" 11 | "math/rand" 12 | "net/http" 13 | "net/url" 14 | "os" 15 | "regexp" 16 | "strings" 17 | "sync" 18 | "time" 19 | 20 | "github.com/qianlnk/pgbar" 21 | ) 22 | 23 | // Crawl posts from csdn 24 | // build posts to hexo style 25 | 26 | const ( 27 | ListPostURL = "https://blog.csdn.net/%s/article/list/%d?" 28 | PostDetailURL = "https://bizapi.csdn.net/blog-console-api/v3/editor/getArticle?id=%s&model_type=" 29 | HexoHeader = ` 30 | --- 31 | title: %s 32 | date: %s 33 | tags: [%s] 34 | categories: %s 35 | --- 36 | ` 37 | HtmlBody = ` 38 |
39 |