{"id":37984986,"url":"https://github.com/pierods/drisqus","last_synced_at":"2026-01-16T18:38:21.565Z","repository":{"id":57551069,"uuid":"94534872","full_name":"pierods/drisqus","owner":"pierods","description":"Drisqus is a high level Go client of Disqus' API.","archived":false,"fork":false,"pushed_at":"2017-07-12T07:55:12.000Z","size":2416,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T16:49:21.915Z","etag":null,"topics":["client","d3js","disqus","go","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pierods.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}},"created_at":"2017-06-16T10:46:35.000Z","updated_at":"2018-06-12T22:13:05.000Z","dependencies_parsed_at":"2022-09-26T18:41:18.772Z","dependency_job_id":null,"html_url":"https://github.com/pierods/drisqus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pierods/drisqus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierods%2Fdrisqus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierods%2Fdrisqus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierods%2Fdrisqus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierods%2Fdrisqus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pierods","download_url":"https://codeload.github.com/pierods/drisqus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierods%2Fdrisqus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28481016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: 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":["client","d3js","disqus","go","golang"],"created_at":"2026-01-16T18:38:21.495Z","updated_at":"2026-01-16T18:38:21.548Z","avatar_url":"https://github.com/pierods.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# drisqus - a high level client of Disqus' API, written in Go\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![](https://godoc.org/github.com/pierods/drisqus?status.svg)](http://godoc.org/github.com/pierods/drisqus)\n[![Go Report Card](https://goreportcard.com/badge/github.com/pierods/drisqus)](https://goreportcard.com/report/github.com/pierods/drisqus)\n[![Build Status](https://travis-ci.org/pierods/drisqus.svg?branch=master)](https://travis-ci.org/pierods/drisqus)\n\nDrisqus is a high level client of Disqus' API ((https://disqus.com/api/docs/)). Its underlying library is Gisqus (https://github.com/pierods/gisqus).\nDrisqus aims to cover endpoints that read data (GET method) for reporting, statistical and data drilling purposes.\n\nAs in Gisqus, Drisqus has the following limitations:\n* it only supports authentication in the form of \"Authenticating as the Account Owner\" (https://disqus.com/api/docs/auth/)\n* endpoints that require entity IDs (thread ID, forum ID etc) but where they can be provided implicitly by authentication have their wrappers \n  requiring those parameters explicitly in the method signature\n\nThe \"related\" parameter in many Disqus endpoints is not supported, since data returned through it can always be gotten with a direct call to the \nrespective api. In this sense, Drisqus covers the complete hierarchy of Disqus' object model.\n\n### Usage\nAfter having obtained an API key from Disqus (you must create an app for that on Disqus' control panel), one must obtain an instance of Gisqus and\nthen pass it to Drisqus:\n\n```Go\n    import  \"context\"\n    import  \"github.com/pierods/gisqus\"\n    import  \"github.com/pierods/drisqus\"\n    ...\n    g := NewGisqus(\"api key\")\n    d := NewDrisqus(g)\n    ctx, cancel := context.WithCancel(context.TODO())\n```\n\nOne can then proceed to make calls against Disqus' endpoints. Calls do not support timeouts, but they are cancellable (https://golang.org/pkg/context/).\n\n```Go\n    \n    forums, err := d.ForumInteresting(ctx)\n    if err != nil {\n        ...\n    }\n    fmt.Println(forums[0].Name)\n```\nMethods that support the \"pages\" parameter will retrieve pages of size 100 (or less when 100 is not supported by Disqus). If pages is set to -1, all pages are retrieved.\n\n### Data drilling and statistics\nDrisqus makes it really easy to drill down in Disqus' API and calculate statistics.\n\nAs an example, let's pick the latest thread from a forum and check out which comment authors don't have any replies to their posts.\n\n```Go\n    import  \"context\"\n    import  \"github.com/pierods/gisqus\"\n    import  \"github.com/pierods/drisqus\"\n    ...\n    g := NewGisqus(\"api key\")\n    d := NewDrisqus(g)\n    \n    ctx, cancel := context.WithCancel(context.TODO())\n    forums, err := d.ForumInteresting(ctx, 1)\n    if err != nil {\n        ...\n    }\n    forumID := forums[0].Forum.ID\n    threads, err := d.ForumThreadsQuick(ctx, forumID, 1)\n    if err != nil {\n        ...\n    }\n    threadID := threads[0].ID\n    posts, err := d.ThreadPostsQuick(ctx, threadID, -1)\n    if err != nil {\n        ...\n    }    \n    \n    postsByParent := make(map[string]*gisqus.Post)\n    for _, post := range posts {\n\t\tif post.Parent != \"0\" {\n\t\t\tpostsByParent[post.parent] = post    \t\n\t\t}        \n    }\n    \n    postsWithoutReplies := []*gisqus.Post\n    for _, post := range posts {\n        if _, exists := postsByParent[post.ID]; !exists {\n            postsWithoutReplies = append(postsWithoutReplies, post)  \n        }\n    }\n    \n    authorsWithoutRepliesMap := make(map[string]bool) \n    for _, post := range postsWithoutReplies {\n        authorsWithoutRepliesMap[post.Author.ID] = true\n    }\n    \n    authorsWithoutReplies := []string    \n    for authorID, _ := range authorsWithoutRepliesMap {\n        authorsWithoutReplies = append(authorsWithoutReplies, authorID)\n    }\n```\n\n#### d3.js support\nDrisqus includes a handful of methods for [d3.js](https://d3js.org/) support in the file drisqus_d3js.go. They make various kinds of aggregate data into\nslices, for use by many d3.js diagrams.\n\n\nAn example of diagrams with data created by MakePostCountSlice :\n\n![authors by post count](assets/authorsbypostcount.png)\n\n### Notes\nAll calls are cancellable, so they won't catastrophically block on a call chain.\n\nThe complete Disqus hierarchy is modeled:\n\n\n![hierarchy](assets/chart-api-relationships.png)\n\nexcept for Categories, since the vast majority of forums use only one category for all posts.\n\n### Endpoints covered\nhttps://disqus.com/api/docs/\n##### Forums\n* details\n* interestingForums\n* listCategories\n* listFollowers \n* listMostActiveUsers\n* listMostLikedUsers\n* listThreads\n* listUsers\n\n##### Threads\n* details\n* list\n* listHot \n* listPopular \n* listPosts\n* listUsersVotedThread\n* set\n\n##### Posts\n* details\n* getContext \n* list\n* listPopular\n\n##### Users\n* details \n* interestingUsers\n* listActiveForums\n* listActivity \n* listFollowers \n* listFollowing \n* listFollowingForums \n* listMostActiveForums \n* listPosts\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierods%2Fdrisqus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpierods%2Fdrisqus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierods%2Fdrisqus/lists"}