{"id":20548600,"url":"https://github.com/natescarlet/pixiv","last_synced_at":"2025-04-14T10:53:24.165Z","repository":{"id":38358144,"uuid":"225015497","full_name":"NateScarlet/pixiv","owner":"NateScarlet","description":"Pixiv go 客户端， 使用 Pixiv 网页 API。","archived":false,"fork":false,"pushed_at":"2025-04-03T22:26:58.000Z","size":426,"stargazers_count":34,"open_issues_count":7,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T00:02:23.504Z","etag":null,"topics":["client","pixiv","pixiv-api"],"latest_commit_sha":null,"homepage":"https://natescarlet.github.io/pixiv/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NateScarlet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-30T13:20:30.000Z","updated_at":"2025-04-03T22:26:51.000Z","dependencies_parsed_at":"2024-11-23T14:33:09.811Z","dependency_job_id":null,"html_url":"https://github.com/NateScarlet/pixiv","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NateScarlet%2Fpixiv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NateScarlet%2Fpixiv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NateScarlet%2Fpixiv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NateScarlet%2Fpixiv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NateScarlet","download_url":"https://codeload.github.com/NateScarlet/pixiv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248868774,"owners_count":21174756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","pixiv","pixiv-api"],"created_at":"2024-11-16T02:13:59.160Z","updated_at":"2025-04-14T10:53:24.158Z","avatar_url":"https://github.com/NateScarlet.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pixiv client for go\n\n[![godev](https://img.shields.io/static/v1?label=godev\u0026message=reference\u0026color=00add8)](https://pkg.go.dev/github.com/NateScarlet/pixiv/pkg)\n[![build status](https://github.com/NateScarlet/pixiv/workflows/Go/badge.svg)](https://github.com/NateScarlet/pixiv/actions)\n\nPixiv go 客户端， 使用 PIXIV 网页 API。\n\n[设计文档](https://natescarlet.github.io/pixiv/)\n\n- [x] 画作搜索\n- [x] 画作排行榜\n- [x] 画作详情\n- [x] 小说搜索\n- [ ] 小说排行榜\n- [x] 小说详情\n- [x] 渲染小说为 HTML\n- [ ] 用户详情\n\n详细使用方法以代码注释为准\n\n2024-08-27: 账号密码登录方式已失效，手动登录获取 PHPSESSID 代替\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"slices\"\n\n    \"github.com/NateScarlet/pixiv/pkg/client\"\n    \"github.com/NateScarlet/pixiv/pkg/artwork\"\n    \"github.com/NateScarlet/pixiv/pkg/novel\"\n    \"github.com/NateScarlet/pixiv/pkg/user\"\n)\n\n// 默认客户端用环境变量 `PIXIV_PHPSESSID` 登录。\n// 并且 User-Agent 使用 `PIXIV_USER_AGENT` 或库内置的默认值。\nclient.Default\n\n// 使用 PHPSESSID Cookie 登录 (推荐)。\nc := \u0026client.Client{}\nc.SetDefaultHeader(\"User-Agent\", client.DefaultUserAgent)\nc.SetPHPSESSID(\"PHPSESSID\")\n\n// 启用免代理，环境变量 `PIXIV_BYPASS_SNI_BLOCKING` 不为空时自动为默认客户端启用免代理。\n// 当前实现需求一个 DNS over HTTPS 服务，默认使用 cloudflare，可通过 `PIXIV_DNS_QUERY_URL` 环境变量设置。\n// 必须在其他客户端选项前调用 `BypassSNIBlocking`，因为对于封锁的域名它会使用一个更改过的 Transport 进行请求，无视在它之前进行的的设置。\nc := \u0026client.Client{}\nc.BypassSNIBlocking()\nc.SetDefaultHeader(\"User-Agent\", client.DefaultUserAgent)\n\n// 所有查询从 context 获取客户端设置, 如未设置将使用默认客户端。\nvar ctx = context.Background()\nctx = client.With(ctx, c)\n\n// 搜索画作 (默认最新排序)\npayload, _ := artwork.SearchV2(ctx, \"パチュリー・ノーレッジ\")\nfor item := range payload.Items() {\n    fmt.Println(item.Title(), \"by\", item.AuthorName())\n}\n\n// 高级搜索 (带过滤选项)\npayload, _ := artwork.SearchV2(ctx, \"パチュリー・ノーレッジ\",\n    artwork.SearchWithPage(3),              // 第3页\n    artwork.SearchWithContentRating(artwork.R18Content),\n    artwork.SearchWithMode(artwork.PartialTagSearch)\n)\n\n// 获取排行榜\nrank, _ := artwork.FetchRank(ctx,\n    artwork.DailyRank,                     // 每日榜\n    artwork.FetchRankWithDate(yesterday),  // 指定日期\n    artwork.FetchRankWithPage(2)           // 第二页\n)\nfor item := range rank.Items() {\n    fmt.Printf(\"第%d名: %s\", item.Position(), item.Title())\n}\n\n// 获取画作元数据\nart, _ := artwork.Fetch(ctx, \"22238487\")\nfmt.Println(\"作品描述:\", art.Description())\nfor tag := range art.Tags() {\n    fmt.Println(\"标签:\", tag)\n}\nfmt.Println(\"查看网页版:\", art.URL().String())\n\n// 获取画作全部分页\npages, _ := artwork.FetchPages(ctx, \"22238487\")\nfor page := range pages.Pages() {\n    fmt.Println(\"原图地址:\", page.OriginalURL())\n}\n\n// 搜索小说\nresult, err := novel.Search(ctx, \"パチュリー・ノーレッジ\")\nresult.JSON // json return data.\nresult.Novels() // []novel.Novel，只有部分数据，通过 `Fetch` 方法获取完整数据。\nnovel.Search(ctx, \"パチュリー・ノーレッジ\", novel.SearchOptionPage(2)) // 获取第二页\n\n// 小说详情\ni := \u0026novel.Novel{ID: \"11983096\"}\nerr := i.Fetch(ctx) // 获取小说详情, 直接更新 struct 数据。\n\n// 用户详情\ni := \u0026user.User{ID: \"789096\"}\nerr := i.Fetch(ctx) // 获取用户详情, 直接更新 struct 数据。\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatescarlet%2Fpixiv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnatescarlet%2Fpixiv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatescarlet%2Fpixiv/lists"}