diff --git a/gowikipedia/Makefile b/gowikipedia/Makefile new file mode 100644 index 0000000..c541f8c --- /dev/null +++ b/gowikipedia/Makefile @@ -0,0 +1,12 @@ +# lists the changes to the Zinc page: +Zinc: + reset + go run zinc.go + +# - ID: 824303964, Parent ID: 824303909, User: 204.122.110.237, UserID: 0, Timestamp: 2018-02-06T15:26:48Z, Comment: /* Physical properties */ +# - ID: 824303909, Parent ID: 824303854, User: CLCStudent, UserID: 0, Timestamp: 2018-02-06T15:26:21Z, Comment: Reverted 1 edit by [[Special:Contributions/204.122.110.237|204.122.110.237]] ([[User talk:204.122.110.237|talk]]) to last revision by Onel5969. ([[WP:TW|TW]]) +# - ID: 824303854, Parent ID: 824287944, User: 204.122.110.237, UserID: 0, Timestamp: 2018-02-06T15:26:01Z, Comment: /* Zinc(II) compounds */ +# - ID: 824287944, Parent ID: 821850427, User: Onel5969, UserID: 0, Timestamp: 2018-02-06T13:21:44Z, Comment: Disambiguating links to [[Poppy]] (link changed to [[Poppy (flower)]]) using [[User:Qwertyytrewqqwerty/DisamAssist|DisamAssist]]. + +version: + go run getVersion.go diff --git a/gowikipedia/getVersion.go b/gowikipedia/getVersion.go new file mode 100644 index 0000000..fd01866 --- /dev/null +++ b/gowikipedia/getVersion.go @@ -0,0 +1,68 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "net/url" +) + +const wikipediaAPI = "https://en.wikipedia.org/w/api.php" + +type QueryResponse struct { + Batchcomplete string `json:"batchcomplete"` + Query struct { + Pages map[string]struct { + Pageid int `json:"pageid"` + Ns int `json:"ns"` + Title string `json:"title"` + Content string `json:"content"` + } `json:"pages"` + } `json:"query"` +} + +// - ID: 824303964, Parent ID: 824303909, User: 204.122.110.237, UserID: 0, Timestamp: 2018-02-06T15:26:48Z, Comment: /* Physical properties */ +// - ID: 824303909, Parent ID: 824303854, User: CLCStudent, UserID: 0, Timestamp: 2018-02-06T15:26:21Z, Comment: Reverted 1 edit by [[Special:Contributions/204.122.110.237|204.122.110.237]] ([[User talk:204.122.110.237|talk]]) to last revision by Onel5969. ([[WP:TW|TW]]) +// - ID: 824303854, Parent ID: 824287944, User: 204.122.110.237, UserID: 0, Timestamp: 2018-02-06T15:26:01Z, Comment: /* Zinc(II) compounds */ +// - ID: 824287944, Parent ID: 821850427, User: Onel5969, UserID: 0, Timestamp: 2018-02-06T13:21:44Z, Comment: Disambiguating links to [[Poppy]] (link changed to [[Poppy (flower)]]) using [[User:Qwertyytrewqqwerty/DisamAssist|DisamAssist]]. + + +func main() { + params := url.Values{} + params.Set("action", "query") + params.Set("format", "json") + params.Set("prop", "revisions") + params.Set("titles", "Zinc") + params.Set("rvprop", "content") + params.Set("rvslots", "main") + params.Set("rvlimit", "1") + params.Set("revids", "824287944") + + url := fmt.Sprintf("%s?%s", wikipediaAPI, params.Encode()) + + resp, err := http.Get(url) + if err != nil { + fmt.Printf("Error making request: %v\n", err) + return + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Printf("Error reading response: %v\n", err) + return + } + + var queryResponse QueryResponse + err = json.Unmarshal(body, &queryResponse) + if err != nil { + fmt.Printf("Error unmarshalling JSON: %v\n", err) + return + } + + for _, page := range queryResponse.Query.Pages { + fmt.Printf("Content for '%s' (revision ID: 825282998):\n\n", page.Title) + fmt.Println(page.Content) + } +} diff --git a/gowikipedia/zinc.go b/gowikipedia/zinc.go new file mode 100644 index 0000000..5b12c5d --- /dev/null +++ b/gowikipedia/zinc.go @@ -0,0 +1,76 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "net/url" +) + +const wikipediaAPI = "https://en.wikipedia.org/w/api.php" + +type QueryResponse struct { + Batchcomplete string `json:"batchcomplete"` + Continue struct { + RvContinue string `json:"rvcontinue"` + Continue string `json:"continue"` + } `json:"continue"` + Query struct { + Pages map[string]struct { + Pageid int `json:"pageid"` + Ns int `json:"ns"` + Title string `json:"title"` + Revisions []Revision `json:"revisions"` + } `json:"pages"` + } `json:"query"` +} + +type Revision struct { + Revid int `json:"revid"` + Parentid int `json:"parentid"` + User string `json:"user"` + Userid int `json:"userid"` + Timestamp string `json:"timestamp"` + Comment string `json:"comment"` +} + +func main() { + params := url.Values{} + params.Set("action", "query") + params.Set("format", "json") + params.Set("prop", "revisions") + params.Set("titles", "Zinc") + params.Set("rvlimit", "max") + params.Set("rvprop", "timestamp|user|comment|ids") + + url := fmt.Sprintf("%s?%s", wikipediaAPI, params.Encode()) + + resp, err := http.Get(url) + if err != nil { + fmt.Printf("Error making request: %v\n", err) + return + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + fmt.Printf("Error reading response: %v\n", err) + return + } + + var queryResponse QueryResponse + err = json.Unmarshal(body, &queryResponse) + if err != nil { + fmt.Printf("Error unmarshalling JSON: %v\n", err) + return + } + + for _, page := range queryResponse.Query.Pages { + fmt.Printf("Revisions for '%s':\n", page.Title) + for _, revision := range page.Revisions { + fmt.Printf("- ID: %d, Parent ID: %d, User: %s, UserID: %d, Timestamp: %s, Comment: %s\n", + revision.Revid, revision.Parentid, revision.User, revision.Userid, revision.Timestamp, revision.Comment) + } + } +}