{"id":37071862,"url":"https://github.com/eggplants/scrapbox-client","last_synced_at":"2026-01-14T08:26:21.931Z","repository":{"id":328362088,"uuid":"1115283734","full_name":"eggplants/scrapbox-client","owner":"eggplants","description":"Scrapbox (Helpfeel Cosense) Client","archived":false,"fork":false,"pushed_at":"2026-01-01T21:00:11.000Z","size":168,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-07T06:30:38.726Z","etag":null,"topics":["api-client","api-client-cli","cli","cosense","downloader","gyazo","helpfeel"],"latest_commit_sha":null,"homepage":"https://egpl.dev/scrapbox-client/","language":"Python","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/eggplants.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-12T16:04:53.000Z","updated_at":"2026-01-07T04:34:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/eggplants/scrapbox-client","commit_stats":null,"previous_names":["eggplants/scrapbox-client"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/eggplants/scrapbox-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggplants%2Fscrapbox-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggplants%2Fscrapbox-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggplants%2Fscrapbox-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggplants%2Fscrapbox-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eggplants","download_url":"https://codeload.github.com/eggplants/scrapbox-client/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eggplants%2Fscrapbox-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28413958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:16:59.381Z","status":"ssl_error","status_checked_at":"2026-01-14T08:13:45.490Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api-client","api-client-cli","cli","cosense","downloader","gyazo","helpfeel"],"created_at":"2026-01-14T08:26:21.343Z","updated_at":"2026-01-14T08:26:21.915Z","avatar_url":"https://github.com/eggplants.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scrapbox-client\n\n[![PyPI version](\n  \u003chttps://badge.fury.io/py/scrapbox-client.svg\u003e\n  )](\n  \u003chttps://badge.fury.io/py/scrapbox-client\u003e\n) [![CI](\n  \u003chttps://github.com/eggplants/scrapbox-client/actions/workflows/ci.yml/badge.svg\u003e\n  )](\n  \u003chttps://github.com/eggplants/scrapbox-client/actions/workflows/ci.yml\u003e\n)\n\n[Scrapbox (Helpfeel Cosense)](https://scrapbox.io/product) Client\n\n## Install\n\n```bash\npip install scrapbox-client\n```\n\n## CLI\n\n```shellsession\n$ sbc\nusage: sbc [-h] [--version] [--connect-sid CONNECT_SID | --connect-sid-file CONNECT_SID_FILE] {pages,all-pages,page,text,icon,file} ...\n\nScrapbox API client CLI\n\npositional arguments:\n  {pages,all-pages,page,text,icon,file}\n                        Available commands\n    pages               Get page list from a project\n    all-pages           Get all pages from a project\n    page                Get detailed information about a page\n    text                Get text content of a page\n    icon                Get icon URL for a page\n    file                Download a file from Scrapbox\n\noptions:\n  -h, --help            show this help message and exit\n  --version, -V         Show program's version number and exit\n  --connect-sid CONNECT_SID\n                        Scrapbox authentication cookie (connect.sid)\n  --connect-sid-file CONNECT_SID_FILE\n                        Path to file containing connect.sid (default: ~/.config/sbc/connect.sid)\n\nexamples:\n  sbc pages my-project --limit 10 --skip 10 --json\n  sbc all-pages my-project --batch-size 500 --json\n  sbc page my-project \"Page Title\" --json\n  sbc text my-project \"Page Title\"\n  sbc icon my-project \"Page Title\"\n  sbc file 60190edf1176d9001c13f8e8.png --output image.png\n\npriority of `connect.sid` source:\n  1. --connect-sid argument\n  2. --connect-sid-file argument\n  3. ~/.config/sbc/connect.sid file\n  4. SBC_CONNECT_SID environment variable\n```\n\n## Library\n\n### Overview\n\n```python\nfrom scrapbox.client import ScrapboxClient\n\nPROJECT_NAME = \"help-jp\"\nPAGE_TITLE = \"ブラケティング\"\n\n# Access public project without authentication\nwith ScrapboxClient() as client:\n    # Get page list\n    pages = client.get_pages(PROJECT_NAME, skip=0, limit=5)\n    print(f\"Project: {pages.project_name}\")\n    print(f\"Total pages: {pages.count}\")\n    print()\n    print(\"First 5 pages:\")\n    for page in pages.pages:\n        print(f\"  - {page.title} (views: {page.views})\")\n\n    print()\n    print()\n\n    # Get individual page details\n    print(\"Get page details:\")\n    page_detail = client.get_page(PROJECT_NAME, PAGE_TITLE)\n    print(f\"Title: {page_detail.title}\")\n    print(f\"Lines: {page_detail.lines_count}\")\n    print(f\"Characters: {page_detail.chars_count}\")\n    print(f\"First 5 lines:\")\n    for line in page_detail.lines[:5]:\n        print(f\"  {line.text}\")\n\n    print()\n    print()\n\n    # Get page text\n    print(\"Page text:\")\n    text = client.get_page_text(PROJECT_NAME, PAGE_TITLE)\n    print(text[:200] + \"...\")\n\n    print()\n    print()\n\n    # Get icon URL\n    print(\"Icon URL:\")\n    icon_url = client.get_page_icon_url(PROJECT_NAME, PAGE_TITLE)\n    print(icon_url)\n\nprint()\nprint()\n\n# Access private project with authentication\n# connect.sid is obtained from browser cookies\nprint(\"=== Example with authentication ===\")\nconnect_sid = \"s%3AykQ__xxxxx-.xxxxxxxxxxxxxxxxxxxxx%2Bxxxxxxxxx%2Bxxxxxxxxxxx\"\nwith ScrapboxClient(connect_sid=connect_sid) as client:\n    try:\n        pages = client.get_pages(\"your-private-pj\", limit=3)\n        print(f\"Project: {pages.project_name}\")\n        for page in pages.pages:\n            print(f\"  - {page.title}\")\n    except Exception as e:\n        print(f\"Error: {e}\")\n```\n\n### Image\n\n```python\nfrom scrapbox.client import ScrapboxClient\n\nwith ScrapboxClient() as client:\n    # Get image by specifying file ID\n    file_id = \"1a2b3c4d5e6f7g8h9i0j.JPG\"\n    print(f\"Fetching file: {file_id}\")\n    \n    try:\n        image_data = client.get_file(file_id)\n        print(f\"Successfully fetched: {len(image_data)} bytes\")\n        \n        # Save to file\n        output_path = \"downloaded_image.jpg\"\n        with open(output_path, \"wb\") as f:\n            f.write(image_data)\n        print(f\"Saved: {output_path}\")\n        \n    except Exception as e:\n        print(f\"Error: {e}\")\n\n    print()\n\n    # Can also fetch with full URL\n    print(\"Fetch with full URL:\")\n    try:\n        full_url = \"https://gyazo.com/da78df293f9e83a74b5402411e2f2e01\"\n        image_data2 = client.get_file(full_url)\n        print(f\"Successfully fetched: {len(image_data2)} bytes\")\n    except Exception as e:\n        print(f\"Error: {e}\")\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feggplants%2Fscrapbox-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feggplants%2Fscrapbox-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feggplants%2Fscrapbox-client/lists"}