GithubHelp home page GithubHelp logo

graw's People

Contributors

atrox avatar bogatuadrian avatar bravecorvus avatar gastrodon avatar hinsley avatar lluchs avatar michaelshobbs avatar stefanoj3 avatar tdakkota avatar turnage avatar ultralight-meme avatar wpwilson10 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

graw's Issues

How to sort a harvest by newest?

I've tried in a few different ways. Like for example:

mp := make(map[string]string)
harvest, err := bot.ListingWithParams("/" + rippingType + "/" + rippingIdentifier, mp)
mp["after"] = lastPostId
mp["sort"] = "newest" (as well as "new")

then saw in the rsort package there is a Sorter struct then tried this:

type Sorter interface {
    Sort(h reddit.Harvest) []string
}

var p Sorter
newHarvest := Sorter.Sort(p, harvest)

and

type Sorter interface {
   Sort(h reddit.Harvest) []string
}
newSorter := reddit.Sorter.New()
newHarvest := Sorter.Sort(newSorter, harvest)

but of course i'm missing something here as well. Unless you can't sort a listing?

Define and export error vars for Failer.

I should define and export error vars for common errors such as Reddit being temporarily unavailable so bots that implement Failer can compare against them and make better decisions about whether to stop.

More memory leak issue?

Hey so, I think there is another problem because my bot is still continually crashing (every 16 hours instead of every 3 hours now). I have a feeling there is a similar kind of leak, but I am unable to find it for some reason and might have to debug my code more systematically than I am. I wanted to create the issue just in case you were aware of something that might be causing this that I'm not seeing.

GetPostSelf having issues with long posts

Using the current GetPostSelf I've run into problems when sending large (over 6k chars) payloads since payloads get encoded and added to the URL. I've run into two different times where this has raised an issue.

Once just a random 400 error (reproducible) and the second time -with a larger payload- it gave me a 414 URI too long error (reproducible as well)

This could be fixed by sending the body in the actual body of the request.

I've started some changes here that should be non-breaking, but would like to know if you're also working on something like this?

Event Stream pauses for hours

Hello,

I'm using graw for an application that parses all posts and comments of a subreddit (/r/soccerstreams). Additionally, when a post is created it is getting polled for updates every 5 minutes (in order to check comment updates). The graw Rate is set to 15 seconds.

It seems like the event stream stops for me for no reason I can think of for ~1 hour and then gives me a batch of events when it resumes. I've set up some monitoring on my application that checks the time when a comment/post was created vs. when my application received it:

Grafana

You can see that I received a ton of Comment updates at around 18:45 with the difference between the comment being created and the comment being handled in graw higher than 90 seconds.

You can find my code on my GitHub, here are the most relevant links:

If you need more information, please do not hesitate to get back here.

As a side note, it seems like graw doesn't log much, I'm trying to set the graw logger but I don't think I've ever seen it output anything.

Thank you for even reading this already!

Option for a comment stream to specify limit size

I want to stream comments, yet the default 25 comments per call of
https://www.reddit.com/r/redditdev/comments.json
is not enough. Reddit does have an option to extend the size fo the return by doing
https://www.reddit.com/r/redditdev/comments.json?limit=100,
but I am not aware that graw implements this yet.

Can a way to access a sub's comments from a harvest be added?

What I had in mind:

harvest, _ := bot.Listing("/r/bottesting", "")
for _, comment := range harvest.Comments[:30] {
  // Do stuff with comment.Body
}

What you currently have to do to access them doesn't work exactly. (Or at least I can't figure it out. I'm not sure if I'm doing it wrong.)

// At least in my testing, this doesn't work.
harvest, _ := bot.Listing("/r/bottesting", "")
for _, post := range harvest.Posts[:5] {
  for _, reply := range post.Replies[:5] {
    // Do stuff with reply.Body
  }
}

How to stream mentions?

Hi I trying use this package to stream all mentions of one user

package main

import (
	"fmt"
	"log"

	"github.com/turnage/graw/reddit"
	"github.com/turnage/graw/streams"
)

func main() {
	bot, err := reddit.NewBotFromAgentFile("file.bot", 0)
	if err != nil {
		fmt.Println("Failed to create bot handle: ", err)
		return
	}

	kill := make(chan bool)
	errorChanel := make(chan error)

	resp, err := streams.Mentions(bot, kill, errorChanel)
	comment := <-resp
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s", comment.Body)
}

This code works to get the mention but dont stream all the news whow can make that? I search for documentation and cant found

Thanks

index out of range

Just tried to set up mention monitoring and such, and I've started getting:

panic: runtime error: index out of range

goroutine 39 [running]:
panic(0x8407e0, 0xc42000c100)
        /usr/local/go/src/runtime/panic.go:500 +0x1a1
github.com/turnage/graw/streams/internal/monitor.(*monitor).fixTip(0xc4203d9c80, 0x0, 0x0)
        /home/vendan/go/src/github.com/turnage/graw/streams/internal/monitor/monitor.go:128 +0x4ed
github.com/turnage/graw/streams/internal/monitor.(*monitor).Update(0xc4203d9c80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
        /home/vendan/go/src/github.com/turnage/graw/streams/internal/monitor/monitor.go:80 +0x33e
github.com/turnage/graw/streams.flow(0xaa7280, 0xc4203d9c80, 0xc420134120, 0xc420134180, 0xc420294720, 0xc420294780, 0xc4202947e0)
        /home/vendan/go/src/github.com/turnage/graw/streams/streams.go:230 +0x7c
created by github.com/turnage/graw/streams.stream
        /home/vendan/go/src/github.com/turnage/graw/streams/streams.go:207 +0xe9

whenever I mention my bot

Clarify "Script App" should be selected when registering the app

I was getting 401s when getting started and it took me some time to notice that I should have selected Script rather than Web App when registering my app. This is shown in the screenshot of the registered app, but not specifically called out so it's easy to miss.

user post docs

I am able to subscribe to subreddits and do actions based on posts using the documentation but I am having a hard time figuring out how to do the same based on a user. Say I post in subreddit A and i want to check that users post history to see if they posted the same thing in subreddit B.

are there resources or an example that I can view?

Weird "unexpected fault address" error

Hey, I'm not sure if this is at all my fault, but I got this stack trace today. I can't figure out what happened wrong and was wondering if you had seen anything like it before or knew something that I didn't. Thanks!

fatal error: fault
[signal SIGSEGV: segmentation violation code=0x80 addr=0x0 pc=0x4a82e8]

goroutine 212813943 [running]:
runtime.throw(0xb9e8b4, 0x5)
	/usr/local/go/src/runtime/panic.go:605 +0x95 fp=0xc422f0e970 sp=0xc422f0e950 pc=0x42bc15
runtime.sigpanic()
	/usr/local/go/src/runtime/signal_unix.go:374 +0x227 fp=0xc422f0e9c0 sp=0xc422f0e970 pc=0x4424c7
reflect.StructTag.Lookup(0x646465722e777777, 0x6d6f632e7469, 0xba451f, 0xc, 0xc422f0ee90, 0xfc0e50, 0xc4201b5030)
	/usr/local/go/src/reflect/type.go:1165 +0x38 fp=0xc422f0ea20 sp=0xc422f0e9c0 pc=0x4a82e8
reflect.StructTag.Get(0x646465722e777777, 0x6d6f632e7469, 0xba451f, 0xc, 0x0, 0xa6b9c0)
	/usr/local/go/src/reflect/type.go:1148 +0x49 fp=0xc422f0ea68 sp=0xc422f0ea20 pc=0x4a8289
vendor/github.com/mitchellh/mapstructure.(*Decoder).decodeStruct(0xc421a01370, 0x0, 0x0, 0xaac580, 0xc425d207b0, 0xb92040, 0xc4236cec00, 0x199, 0xc422f0f4e8, 0x4109d2)
	/go/src/vendor/github.com/mitchellh/mapstructure/mapstructure.go:706 +0xe26 fp=0xc422f0f400 sp=0xc422f0ea68 pc=0x6ec176
vendor/github.com/mitchellh/mapstructure.(*Decoder).decode(0xc421a01370, 0x0, 0x0, 0xaac580, 0xc425d207b0, 0xb92040, 0xc4236cec00, 0x199, 0x1, 0xc42956a380)
	/go/src/vendor/github.com/mitchellh/mapstructure/mapstructure.go:225 +0x6c3 fp=0xc422f0f518 sp=0xc422f0f400 pc=0x6e64d3
vendor/github.com/mitchellh/mapstructure.(*Decoder).Decode(0xc421a01370, 0xaac580, 0xc425d207b0, 0x0, 0x1)
	/go/src/vendor/github.com/mitchellh/mapstructure/mapstructure.go:180 +0xb3 fp=0xc422f0f578 sp=0xc422f0f518 pc=0x6e5de3
vendor/github.com/mitchellh/mapstructure.Decode(0xaac580, 0xc425d207b0, 0xa51900, 0xc4236cec00, 0x0, 0x0)
	/go/src/vendor/github.com/mitchellh/mapstructure/mapstructure.go:122 +0xa4 fp=0xc422f0f5b8 sp=0xc422f0f578 pc=0x6e59b4
vendor/github.com/turnage/graw/reddit.parsePost(0xc422f0f728, 0xc425d207b0, 0xba3d68, 0xb)
	/go/src/vendor/github.com/turnage/graw/reddit/parse.go:183 +0x6a fp=0xc422f0f600 sp=0xc422f0f5b8 pc=0x6f125a
vendor/github.com/turnage/graw/reddit.parseListing(0xc422a6eea0, 0x1a1e2, 0x1fe00, 0xa51b00, 0xc422a6eea0, 0x0, 0x0, 0x0, 0x0, 0xc423979810, ...)
	/go/src/vendor/github.com/turnage/graw/reddit/parse.go:147 +0x559 fp=0xc422f0f750 sp=0xc422f0f600 pc=0x6f0b39
vendor/github.com/turnage/graw/reddit.parseRawListing(0xc4230c8000, 0x1a1e2, 0x1fe00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/vendor/github.com/turnage/graw/reddit/parse.go:79 +0x11b fp=0xc422f0f7c8 sp=0xc422f0f750 pc=0x6f027b
vendor/github.com/turnage/graw/reddit.(*parserImpl).parse(0xfea8d8, 0xc4230c8000, 0x1a1e2, 0x1fe00, 0x1fe00, 0x0, 0x0, 0x411200, 0x120, 0xb1fda0, ...)
	/go/src/vendor/github.com/turnage/graw/reddit/parse.go:54 +0x5a fp=0xc422f0f888 sp=0xc422f0f7c8 pc=0x6efe1a
vendor/github.com/turnage/graw/reddit.(*reaperImpl).reap(0xc420b32780, 0xc4227f4b00, 0xa, 0xc4272b6a20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/vendor/github.com/turnage/graw/reddit/reaper.go:76 +0x239 fp=0xc422f0f978 sp=0xc422f0f888 pc=0x6f16e9
vendor/github.com/turnage/graw/reddit.(*scanner).Listing(0xc4203a0400, 0xc4227f4b00, 0xa, 0xc423962de0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/vendor/github.com/turnage/graw/reddit/scanner.go:42 +0x1f1 fp=0xc422f0fa98 sp=0xc422f0f978 pc=0x6f21b1
vendor/github.com/turnage/graw/reddit.(*bot).Listing(0xc420b35140, 0xc4227f4b00, 0xa, 0xc423962de0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	<autogenerated>:1 +0xde fp=0xc422f0fbb8 sp=0xc422f0fa98 pc=0x6f312e
vendor/github.com/turnage/graw/streams/internal/monitor.(*monitor).harvest(0xc429fe9c80, 0xc423962de0, 0x9, 0x14, 0xc424068000, 0x14, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/vendor/github.com/turnage/graw/streams/internal/monitor/monitor.go:96 +0xc9 fp=0xc422f0fce8 sp=0xc422f0fbb8 pc=0x9c9bc9
vendor/github.com/turnage/graw/streams/internal/monitor.(*monitor).Update(0xc429fe9c80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/go/src/vendor/github.com/turnage/graw/streams/internal/monitor/monitor.go:87 +0xd2 fp=0xc422f0fe58 sp=0xc422f0fce8 pc=0x9c97c2
vendor/github.com/turnage/graw/streams.flow(0xf6ea20, 0xc429fe9c80, 0xc422708cc0, 0xc422708d20, 0xc4236d57a0, 0xc4236d5800, 0xc4236d5860)
	/go/src/vendor/github.com/turnage/graw/streams/streams.go:253 +0x1c7 fp=0xc422f0ffa8 sp=0xc422f0fe58 pc=0x9cb2b7
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:2337 +0x1 fp=0xc422f0ffb0 sp=0xc422f0ffa8 pc=0x45c131
created by vendor/github.com/turnage/graw/streams.stream
	/go/src/vendor/github.com/turnage/graw/streams/streams.go:230 +0xe9

Support for new modmail

As a Reddit mod, having new modmail stream functionality would be very helpful. It's API endpoints are a bit different from a normal listing, so it's a bit more of a PITA to implement

Getting "invalid request :path" when trying to run use type Lurker's Thread.

Trying something simple like,

package main

import (
        "fmt"

        "github.com/turnage/graw/reddit"
)

func main() {
        bot, err := reddit.NewBotFromAgentFile("buysale.agent", 0)
        if err != nil {
                fmt.Println("Failed to create bot handle: ", err)
                return
        }

        harvest, err := bot.Thread("https://www.reddit.com/r/hai_test/comments/9qa4wo/buyselltrade_102033/?ref=share&ref_source=link")
        if err != nil {
                fmt.Println("fail: ", err)
                return
        }
		fmt.Println(harvest.Title)
}

receiving,

fail: Get https://oauth.reddit.com/https://www.reddit.com/r/hai_test/comments/9qa4wo/buyselltrade_102033/%3Fref=share&ref_source=link.json?raw_json=1: invalid request :path "https://www.reddit.com/r/hai_test/comments/9qa4wo/buyselltrade_102033/%3Fref=share&ref_source=link.json?raw_json=1"

Use graw in a one-shot script

I'm trying to do something very simple... sending out simple direct messages to a bulk of users.

My problem is that the examples only showcase how to write bots that react to certain events...

The way I see it graw is the most complete reddit api implementation in Go but can I use it for something like this?

Edit:
In Python this would be a 4 line script but I would like to do this in Go because the processing that needs to be done before is already happening there

import praw

r = praw.Reddit(user_agent='...')
r.login()

r.send_message('user', 'subject', 'subject')

Contribution guidelines

There should be a documented guideline for contributions for external contributors. It should outline:

  • Coding conventions
  • File/folder naming conventions
  • Project structure
  • Git conventions
  • Testing conventions/requirements
  • Anything else that would benefit from being specified and standardized for newcomers and currently existing contributors alike

At first, a CONTRIBUTING.md would certainly suffice in laying out the ground principles for contribution.

All comments event stream

Is there any way we could set up monitoring for every comment in a subreddit? I can get the list of all comments at a url like https://www.reddit.com/r/generalsio/comments.json

Add custom http.Client support (#66) (2b1f1db) breaks Scripts

Commit 2b1f1db breaks trivial script implementations.

E.g.

package main

import (
	"fmt"

	"github.com/turnage/graw/reddit"
)

const (
	UserAgent = "darwin:grawtest:0.0.1 (by /u/iwinulose)"
)

func main() {
	script, err := reddit.NewScript(UserAgent, 0)
	if err != nil {
		fmt.Println("Unable to create script:", err)
		return
	}

	h, err := script.Listing("/u/iwinulose", "")
	if err != nil {
		fmt.Println("Listing err", err)
		return
	}
	for _, p := range h.Posts {
		fmt.Println("Got post", p.Title)
	}
}

$ go run test.go
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x72018f]

goroutine 1 [running]:
github.com/turnage/graw/reddit.(*agentForwarder).RoundTrip(0xc00000e280, 0xc000148100, 0xc00000e280, 0x0, 0x0)
/home/charlesduyk/go/src/github.com/turnage/graw/reddit/agentforwarder.go:17 +0xcf
net/http.send(0xc000148000, 0x8587a0, 0xc00000e280, 0x0, 0x0, 0x0, 0xc000010040, 0xffffffffffffffff, 0x1, 0x0)
/usr/local/go/src/net/http/client.go:252 +0x43e
net/http.(*Client).send(0xc00007cea0, 0xc000148000, 0x0, 0x0, 0x0, 0xc000010040, 0x0, 0x1, 0x7ff6b0dca400)
/usr/local/go/src/net/http/client.go:176 +0xfa
net/http.(*Client).do(0xc00007cea0, 0xc000148000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/client.go:699 +0x44a
net/http.(*Client).Do(...)
/usr/local/go/src/net/http/client.go:567
github.com/turnage/graw/reddit.(*baseClient).Do(0xc000010030, 0xc000148000, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/charlesduyk/go/src/github.com/turnage/graw/reddit/client.go:36 +0x7c
github.com/turnage/graw/reddit.(*reaperImpl).reap(0xc000146000, 0x7d8aa8, 0xc, 0xc00007ced0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/home/charlesduyk/go/src/github.com/turnage/graw/reddit/reaper.go:68 +0x17e
github.com/turnage/graw/reddit.(*scanner).Listing(0xc000012d50, 0x7d8aa8, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/home/charlesduyk/go/src/github.com/turnage/graw/reddit/scanner.go:42 +0x1a2
main.main()
/home/charlesduyk/versionControl/dedup.git/cmd/dedup/dedup.go:20 +0x135

Checkout 2b1f1db^ to return to a working state.

Deleted posts break subreddit monitor sync.

Any time a post is saved as the current "tip", it renders the bot engine vulnerable to having its sync with the subreddit(s) it monitors derailed by an inconsiderate user deleting their post.

Listing doesn't continue from the last post.

I'm trying to get all the posts from a subreddit/user page.

Notice that, for instance, listing #94 is the same in all four iterations of listing posts and also with each new iteration the listing gets decreased by one post.

I think my issue is with the infinite loop but I'm not sure.

My code:

package main

import (
	"fmt"
	"github.com/turnage/graw/reddit"
)


var ripType = "r"
var identifier = "yogapants"
var lastPostID string

func main(){
	bot, err := reddit.NewBotFromAgentFile("creds", 0)

	if err != nil {
		fmt.Println("Failed to fetch credentials ", err)
		return
	}
	for {
		harvest, err := bot.Listing("/" + ripType + "/" + identifier, lastPostID)

		if err != nil {
			fmt.Printf("Failed to fetch /%s/%s: %v\n", ripType, identifier, err)
			return
		}

		for i := 0; i < len(harvest.Posts); i++ {
			post := harvest.Posts[i]
			fmt.Printf("[%d] Current post: %s, title: %s, last post: %s\n", i, post.Name, post.URL, lastPostID)
		}
		lastPostID = harvest.Posts[len(harvest.Posts)-1].Name
	}
}

My output:

[1] Current post: t3_e07mgl, title: https://i.redd.it/95ice5022b041.jpg, last post: 
[2] Current post: t3_e08il8, title: https://gfycat.com/impassionedopulentislandwhistler, last post: 
[3] Current post: t3_e080nb, title: https://i.imgur.com/czPRzsT.jpg, last post: 
[4] Current post: t3_e04e6s, title: https://i.redd.it/0l5gdxj5y9041.jpg, last post: 
[5] Current post: t3_dzywqv, title: https://i.redd.it/tpdcrf3ym7041.jpg, last post: 
[6] Current post: t3_e04a78, title: https://gfycat.com/richangelicarabianoryx, last post: 
[7] Current post: t3_e02t7k, title: https://i.imgur.com/IprundK.jpg, last post: 
[8] Current post: t3_e0471b, title: https://i.imgur.com/2TizHCb.jpg, last post: 
[9] Current post: t3_dzs07u, title: https://i.imgur.com/Ezmhov1.jpg, last post: 
[10] Current post: t3_dzyip6, title: https://i.redd.it/bxksuggke7041.jpg, last post: 
[11] Current post: t3_e023p8, title: https://i.imgur.com/8himz7r.gifv, last post: 
[12] Current post: t3_dzmg5h, title: https://i.imgur.com/eReHtQt.jpg, last post: 
[13] Current post: t3_dzpn1v, title: https://i.redd.it/eu1bgb3vqxz31.jpg, last post: 
[14] Current post: t3_dzkmk7, title: https://i.redd.it/rylueoul22041.jpg, last post: 
[15] Current post: t3_e019lv, title: https://i.redd.it/n9rsav1ot8041.jpg, last post: 
[16] Current post: t3_dzrtl8, title: https://i.imgur.com/Yo0Y9Nd.jpg, last post: 
[17] Current post: t3_dzwoqr, title: https://i.imgur.com/RPz7Vbv.jpg, last post: 
[18] Current post: t3_dzkrys, title: https://i.redd.it/8exlwv8j42041.jpg, last post: 
[19] Current post: t3_dznwzx, title: https://i.redd.it/7t09sw1763041.jpg, last post: 
[20] Current post: t3_dzkmt0, title: https://i.redd.it/ckup7u5o22041.jpg, last post: 
[21] Current post: t3_dzuqv2, title: https://i.imgur.com/KiLCGIo.jpg, last post: 
[22] Current post: t3_dzssq5, title: https://i.redd.it/r3p844bzs4041.jpg, last post: 
[23] Current post: t3_dzsn3b, title: https://i.imgur.com/IqXDFaO.jpg, last post: 
[24] Current post: t3_dzmuq7, title: https://i.redd.it/cjzlx6fit2041.jpg, last post: 
[25] Current post: t3_dzk164, title: https://i.redd.it/sgn485wju1041.jpg, last post: 
[26] Current post: t3_dzklsx, title: https://i.redd.it/yorr8kwa22041.jpg, last post: 
[27] Current post: t3_dzgjym, title: https://i.redd.it/jvpbfty680041.jpg, last post: 
[28] Current post: t3_dzukqt, title: https://i.imgur.com/u3vmUI3.jpg, last post: 
[29] Current post: t3_dzkywu, title: https://i.redd.it/a3k9tdet62041.jpg, last post: 
[30] Current post: t3_dz6wy4, title: https://gfycat.com/bleakfatcurassow, last post: 
[31] Current post: t3_dz9xc9, title: https://i.redd.it/5nyji9hhaxz31.jpg, last post: 
[32] Current post: t3_dzk5q6, title: https://i.imgur.com/Ijc9QzJ.jpg, last post: 
[33] Current post: t3_dzlwsm, title: https://i.redd.it/5nj29rd3i2041.jpg, last post: 
[34] Current post: t3_dz8sz6, title: https://gfycat.com/violetuncommonalbacoretuna, last post: 
[35] Current post: t3_dz8qi7, title: https://i.imgur.com/eHjUY9W.jpg, last post: 
[36] Current post: t3_dzcfoe, title: https://i.imgur.com/4CuYn7q.jpg, last post: 
[37] Current post: t3_dzbb9f, title: https://i.imgur.com/T1lVKLg.jpg, last post: 
[38] Current post: t3_dyzca4, title: https://i.imgur.com/pGRIwiJ.jpg, last post: 
[39] Current post: t3_dz5gd6, title: https://i.redd.it/i52ltr50pvz31.jpg, last post: 
[40] Current post: t3_dz5w14, title: https://i.redd.it/9k74vx5juvz31.jpg, last post: 
[41] Current post: t3_dz46n4, title: https://i.redd.it/gkhgboeq8vz31.jpg, last post: 
[42] Current post: t3_dzb3sa, title: https://gfycat.com/warmheartedboldkillerwhale, last post: 
[43] Current post: t3_dz6259, title: https://i.imgur.com/Qd0WnQD.jpg, last post: 
[44] Current post: t3_dz263d, title: https://i.imgur.com/Js3e3G1.jpg, last post: 
[45] Current post: t3_dywlrd, title: https://gfycat.com/thickdistortedethiopianwolf, last post: 
[46] Current post: t3_dz2zra, title: https://i.imgur.com/1IpoanE.jpg, last post: 
[47] Current post: t3_dysttb, title: https://i.imgur.com/3GtCVKS.jpg, last post: 
[48] Current post: t3_dyqp86, title: https://i.redd.it/a2ganho0jpz31.jpg, last post: 
[49] Current post: t3_dyjtsq, title: https://i.imgur.com/1dwSIZl.jpg, last post: 
[50] Current post: t3_dyqpek, title: https://gfycat.com/safeunfoldeddaddylonglegs, last post: 
[51] Current post: t3_dyz49p, title: https://i.redd.it/xq9ba4riwsz31.jpg, last post: 
[52] Current post: t3_dyq4bd, title: https://imgur.com/Mh1sfgq.jpeg, last post: 
[53] Current post: t3_dz1nkq, title: https://i.redd.it/jxg9nstt8uz31.jpg, last post: 
[54] Current post: t3_dyml70, title: https://i.redd.it/i5xrqtn05oz31.jpg, last post: 
[55] Current post: t3_dytaid, title: https://gfycat.com/gloriousimpartialharvestmouse, last post: 
[56] Current post: t3_dyk3vn, title: https://imgur.com/ibHocTs, last post: 
[57] Current post: t3_dyl6tf, title: https://i.imgur.com/reHFldi.jpg, last post: 
[58] Current post: t3_dyl75d, title: https://i.imgur.com/odmsWUx.jpg, last post: 
[59] Current post: t3_dy5amo, title: https://i.redd.it/b62oldukzgz31.jpg, last post: 
[60] Current post: t3_dyh1dc, title: https://i.imgur.com/dgBfmWO.jpg, last post: 
[61] Current post: t3_dygb38, title: https://i.redd.it/i66uilyt0lz31.jpg, last post: 
[62] Current post: t3_dyitpe, title: https://i.redd.it/zo6zb205hmz31.jpg, last post: 
[63] Current post: t3_dye2gp, title: https://gfycat.com/vacantbogusjellyfish, last post: 
[64] Current post: t3_dyjrws, title: https://i.redd.it/r7jtika8xmz31.png, last post: 
[65] Current post: t3_dyc0u0, title: https://i.redd.it/lxa1770bajz31.jpg, last post: 
[66] Current post: t3_dyeq0f, title: https://i.redd.it/qx4y4hjtakz31.jpg, last post: 
[67] Current post: t3_dyckl9, title: https://i.imgur.com/wSZzU83.jpg, last post: 
[68] Current post: t3_dyw2jv, title: https://i.redd.it/jvg5mwnsgrz31.jpg, last post: 
[69] Current post: t3_dy1yv2, title: https://i.redd.it/i363ge2pjfz31.jpg, last post: 
[70] Current post: t3_dy47fc, title: https://i.imgur.com/jpb3Iq3.jpg, last post: 
[71] Current post: t3_dy3x2c, title: https://gfycat.com/shimmeringsnoopybactrian, last post: 
[72] Current post: t3_dy748h, title: https://i.imgur.com/GBiT8xR.jpg, last post: 
[73] Current post: t3_dy2s2i, title: https://i.redd.it/fvy9dlgsyfz31.jpg, last post: 
[74] Current post: t3_dxtyoo, title: https://i.imgur.com/NPvGhDi.png, last post: 
[75] Current post: t3_dxtx6f, title: https://i.redd.it/3kgib4t9rbz31.jpg, last post: 
[76] Current post: t3_dxqwwy, title: https://gfycat.com/watchfulshorttermiaerismetalmark, last post: 
[77] Current post: t3_dxzivh, title: https://i.imgur.com/rYcAfur.jpg, last post: 
[78] Current post: t3_dxwhl3, title: https://i.imgur.com/Vyx2OQW.jpg, last post: 
[79] Current post: t3_dxr7oc, title: https://i.imgur.com/qCEvBys.jpg, last post: 
[80] Current post: t3_dxpklr, title: https://gfycat.com/happygoluckyflusteredfoal, last post: 
[81] Current post: t3_dxg1ld, title: https://gfycat.com/shadowyanguishedcopepod, last post: 
[82] Current post: t3_dxkhdc, title: https://imgur.com/0TDmoAO, last post: 
[83] Current post: t3_dxfcgz, title: https://gfycat.com/downrightsmoggyguineapig, last post: 
[84] Current post: t3_dxi30j, title: https://gfycat.com/blueregalinchworm, last post: 
[85] Current post: t3_dx9fxs, title: https://i.redd.it/nqohnn1zx2z31.jpg, last post: 
[86] Current post: t3_dxf95x, title: https://i.imgur.com/RTFDc73.jpg, last post: 
[87] Current post: t3_dxcijg, title: https://i.redd.it/me8mnznt24z31.jpg, last post: 
[88] Current post: t3_dx6xt7, title: https://i.redd.it/ygfromxfw1z31.png, last post: 
[89] Current post: t3_dxapki, title: https://gfycat.com/jovialjoyousfalcon, last post: 
[90] Current post: t3_dx4zl8, title: https://imgur.com/ucZWADq, last post: 
[91] Current post: t3_dxfwb2, title: https://i.redd.it/v58362gxd5z31.jpg, last post: 
[92] Current post: t3_dxd309, title: https://i.imgur.com/Kv1ievf.jpg, last post: 
[93] Current post: t3_dx8qyt, title: https://i.imgur.com/rzXrhNl.jpg, last post: 
[94] Current post: t3_dwvb6m, title: https://i.redd.it/gc2j7529fwy31.jpg, last post: 
[95] Current post: t3_dx2par, title: https://i.imgur.com/PXXWdiU.jpg, last post: 
[96] Current post: t3_dwz9lj, title: https://i.imgur.com/X6SLSUO.gifv, last post: 
[97] Current post: t3_dx282q, title: https://i.redd.it/fh9jqgrr7zy31.jpg, last post: 
[98] Current post: t3_dx0apk, title: https://i.redd.it/bfjh93y5cyy31.jpg, last post: 
[99] Current post: t3_dx1ull, title: https://i.redd.it/7skrb7tuguy31.jpg, last post: 
[0] Current post: t3_e04b7u, title: https://gfycat.com/impassionedopulentislandwhistler, last post: t3_dx1ull
[1] Current post: t3_e07mgl, title: https://i.redd.it/95ice5022b041.jpg, last post: t3_dx1ull
[2] Current post: t3_e08il8, title: https://gfycat.com/impassionedopulentislandwhistler, last post: t3_dx1ull
[3] Current post: t3_e080nb, title: https://i.imgur.com/czPRzsT.jpg, last post: t3_dx1ull
[4] Current post: t3_e04e6s, title: https://i.redd.it/0l5gdxj5y9041.jpg, last post: t3_dx1ull
[5] Current post: t3_dzywqv, title: https://i.redd.it/tpdcrf3ym7041.jpg, last post: t3_dx1ull
[6] Current post: t3_e04a78, title: https://gfycat.com/richangelicarabianoryx, last post: t3_dx1ull
[7] Current post: t3_e02t7k, title: https://i.imgur.com/IprundK.jpg, last post: t3_dx1ull
[8] Current post: t3_e0471b, title: https://i.imgur.com/2TizHCb.jpg, last post: t3_dx1ull
[9] Current post: t3_dzs07u, title: https://i.imgur.com/Ezmhov1.jpg, last post: t3_dx1ull
[10] Current post: t3_dzyip6, title: https://i.redd.it/bxksuggke7041.jpg, last post: t3_dx1ull
[11] Current post: t3_e023p8, title: https://i.imgur.com/8himz7r.gifv, last post: t3_dx1ull
[12] Current post: t3_dzmg5h, title: https://i.imgur.com/eReHtQt.jpg, last post: t3_dx1ull
[13] Current post: t3_dzpn1v, title: https://i.redd.it/eu1bgb3vqxz31.jpg, last post: t3_dx1ull
[14] Current post: t3_dzkmk7, title: https://i.redd.it/rylueoul22041.jpg, last post: t3_dx1ull
[15] Current post: t3_e019lv, title: https://i.redd.it/n9rsav1ot8041.jpg, last post: t3_dx1ull
[16] Current post: t3_dzrtl8, title: https://i.imgur.com/Yo0Y9Nd.jpg, last post: t3_dx1ull
[17] Current post: t3_dzwoqr, title: https://i.imgur.com/RPz7Vbv.jpg, last post: t3_dx1ull
[18] Current post: t3_dzkrys, title: https://i.redd.it/8exlwv8j42041.jpg, last post: t3_dx1ull
[19] Current post: t3_dznwzx, title: https://i.redd.it/7t09sw1763041.jpg, last post: t3_dx1ull
[20] Current post: t3_dzkmt0, title: https://i.redd.it/ckup7u5o22041.jpg, last post: t3_dx1ull
[21] Current post: t3_dzuqv2, title: https://i.imgur.com/KiLCGIo.jpg, last post: t3_dx1ull
[22] Current post: t3_dzssq5, title: https://i.redd.it/r3p844bzs4041.jpg, last post: t3_dx1ull
[23] Current post: t3_dzsn3b, title: https://i.imgur.com/IqXDFaO.jpg, last post: t3_dx1ull
[24] Current post: t3_dzmuq7, title: https://i.redd.it/cjzlx6fit2041.jpg, last post: t3_dx1ull
[25] Current post: t3_dzk164, title: https://i.redd.it/sgn485wju1041.jpg, last post: t3_dx1ull
[26] Current post: t3_dzklsx, title: https://i.redd.it/yorr8kwa22041.jpg, last post: t3_dx1ull
[27] Current post: t3_dzgjym, title: https://i.redd.it/jvpbfty680041.jpg, last post: t3_dx1ull
[28] Current post: t3_dzukqt, title: https://i.imgur.com/u3vmUI3.jpg, last post: t3_dx1ull
[29] Current post: t3_dzkywu, title: https://i.redd.it/a3k9tdet62041.jpg, last post: t3_dx1ull
[30] Current post: t3_dz6wy4, title: https://gfycat.com/bleakfatcurassow, last post: t3_dx1ull
[31] Current post: t3_dz9xc9, title: https://i.redd.it/5nyji9hhaxz31.jpg, last post: t3_dx1ull
[32] Current post: t3_dzk5q6, title: https://i.imgur.com/Ijc9QzJ.jpg, last post: t3_dx1ull
[33] Current post: t3_dzlwsm, title: https://i.redd.it/5nj29rd3i2041.jpg, last post: t3_dx1ull
[34] Current post: t3_dz8sz6, title: https://gfycat.com/violetuncommonalbacoretuna, last post: t3_dx1ull
[35] Current post: t3_dz8qi7, title: https://i.imgur.com/eHjUY9W.jpg, last post: t3_dx1ull
[36] Current post: t3_dzcfoe, title: https://i.imgur.com/4CuYn7q.jpg, last post: t3_dx1ull
[37] Current post: t3_dzbb9f, title: https://i.imgur.com/T1lVKLg.jpg, last post: t3_dx1ull
[38] Current post: t3_dyzca4, title: https://i.imgur.com/pGRIwiJ.jpg, last post: t3_dx1ull
[39] Current post: t3_dz5gd6, title: https://i.redd.it/i52ltr50pvz31.jpg, last post: t3_dx1ull
[40] Current post: t3_dz5w14, title: https://i.redd.it/9k74vx5juvz31.jpg, last post: t3_dx1ull
[41] Current post: t3_dz46n4, title: https://i.redd.it/gkhgboeq8vz31.jpg, last post: t3_dx1ull
[42] Current post: t3_dzb3sa, title: https://gfycat.com/warmheartedboldkillerwhale, last post: t3_dx1ull
[43] Current post: t3_dz6259, title: https://i.imgur.com/Qd0WnQD.jpg, last post: t3_dx1ull
[44] Current post: t3_dz263d, title: https://i.imgur.com/Js3e3G1.jpg, last post: t3_dx1ull
[45] Current post: t3_dywlrd, title: https://gfycat.com/thickdistortedethiopianwolf, last post: t3_dx1ull
[46] Current post: t3_dz2zra, title: https://i.imgur.com/1IpoanE.jpg, last post: t3_dx1ull
[47] Current post: t3_dysttb, title: https://i.imgur.com/3GtCVKS.jpg, last post: t3_dx1ull
[48] Current post: t3_dyqp86, title: https://i.redd.it/a2ganho0jpz31.jpg, last post: t3_dx1ull
[49] Current post: t3_dyjtsq, title: https://i.imgur.com/1dwSIZl.jpg, last post: t3_dx1ull
[50] Current post: t3_dyqpek, title: https://gfycat.com/safeunfoldeddaddylonglegs, last post: t3_dx1ull
[51] Current post: t3_dyz49p, title: https://i.redd.it/xq9ba4riwsz31.jpg, last post: t3_dx1ull
[52] Current post: t3_dyq4bd, title: https://imgur.com/Mh1sfgq.jpeg, last post: t3_dx1ull
[53] Current post: t3_dz1nkq, title: https://i.redd.it/jxg9nstt8uz31.jpg, last post: t3_dx1ull
[54] Current post: t3_dyml70, title: https://i.redd.it/i5xrqtn05oz31.jpg, last post: t3_dx1ull
[55] Current post: t3_dytaid, title: https://gfycat.com/gloriousimpartialharvestmouse, last post: t3_dx1ull
[56] Current post: t3_dyk3vn, title: https://imgur.com/ibHocTs, last post: t3_dx1ull
[57] Current post: t3_dyl6tf, title: https://i.imgur.com/reHFldi.jpg, last post: t3_dx1ull
[58] Current post: t3_dyl75d, title: https://i.imgur.com/odmsWUx.jpg, last post: t3_dx1ull
[59] Current post: t3_dy5amo, title: https://i.redd.it/b62oldukzgz31.jpg, last post: t3_dx1ull
[60] Current post: t3_dyh1dc, title: https://i.imgur.com/dgBfmWO.jpg, last post: t3_dx1ull
[61] Current post: t3_dygb38, title: https://i.redd.it/i66uilyt0lz31.jpg, last post: t3_dx1ull
[62] Current post: t3_dyitpe, title: https://i.redd.it/zo6zb205hmz31.jpg, last post: t3_dx1ull
[63] Current post: t3_dye2gp, title: https://gfycat.com/vacantbogusjellyfish, last post: t3_dx1ull
[64] Current post: t3_dyjrws, title: https://i.redd.it/r7jtika8xmz31.png, last post: t3_dx1ull
[65] Current post: t3_dyc0u0, title: https://i.redd.it/lxa1770bajz31.jpg, last post: t3_dx1ull
[66] Current post: t3_dyeq0f, title: https://i.redd.it/qx4y4hjtakz31.jpg, last post: t3_dx1ull
[67] Current post: t3_dyckl9, title: https://i.imgur.com/wSZzU83.jpg, last post: t3_dx1ull
[68] Current post: t3_dyw2jv, title: https://i.redd.it/jvg5mwnsgrz31.jpg, last post: t3_dx1ull
[69] Current post: t3_dy1yv2, title: https://i.redd.it/i363ge2pjfz31.jpg, last post: t3_dx1ull
[70] Current post: t3_dy47fc, title: https://i.imgur.com/jpb3Iq3.jpg, last post: t3_dx1ull
[71] Current post: t3_dy3x2c, title: https://gfycat.com/shimmeringsnoopybactrian, last post: t3_dx1ull
[72] Current post: t3_dy748h, title: https://i.imgur.com/GBiT8xR.jpg, last post: t3_dx1ull
[73] Current post: t3_dy2s2i, title: https://i.redd.it/fvy9dlgsyfz31.jpg, last post: t3_dx1ull
[74] Current post: t3_dxtyoo, title: https://i.imgur.com/NPvGhDi.png, last post: t3_dx1ull
[75] Current post: t3_dxtx6f, title: https://i.redd.it/3kgib4t9rbz31.jpg, last post: t3_dx1ull
[76] Current post: t3_dxqwwy, title: https://gfycat.com/watchfulshorttermiaerismetalmark, last post: t3_dx1ull
[77] Current post: t3_dxzivh, title: https://i.imgur.com/rYcAfur.jpg, last post: t3_dx1ull
[78] Current post: t3_dxwhl3, title: https://i.imgur.com/Vyx2OQW.jpg, last post: t3_dx1ull
[79] Current post: t3_dxr7oc, title: https://i.imgur.com/qCEvBys.jpg, last post: t3_dx1ull
[80] Current post: t3_dxpklr, title: https://gfycat.com/happygoluckyflusteredfoal, last post: t3_dx1ull
[81] Current post: t3_dxg1ld, title: https://gfycat.com/shadowyanguishedcopepod, last post: t3_dx1ull
[82] Current post: t3_dxkhdc, title: https://imgur.com/0TDmoAO, last post: t3_dx1ull
[83] Current post: t3_dxfcgz, title: https://gfycat.com/downrightsmoggyguineapig, last post: t3_dx1ull
[84] Current post: t3_dxi30j, title: https://gfycat.com/blueregalinchworm, last post: t3_dx1ull
[85] Current post: t3_dx9fxs, title: https://i.redd.it/nqohnn1zx2z31.jpg, last post: t3_dx1ull
[86] Current post: t3_dxf95x, title: https://i.imgur.com/RTFDc73.jpg, last post: t3_dx1ull
[87] Current post: t3_dxcijg, title: https://i.redd.it/me8mnznt24z31.jpg, last post: t3_dx1ull
[88] Current post: t3_dx6xt7, title: https://i.redd.it/ygfromxfw1z31.png, last post: t3_dx1ull
[89] Current post: t3_dxapki, title: https://gfycat.com/jovialjoyousfalcon, last post: t3_dx1ull
[90] Current post: t3_dx4zl8, title: https://imgur.com/ucZWADq, last post: t3_dx1ull
[91] Current post: t3_dxfwb2, title: https://i.redd.it/v58362gxd5z31.jpg, last post: t3_dx1ull
[92] Current post: t3_dxd309, title: https://i.imgur.com/Kv1ievf.jpg, last post: t3_dx1ull
[93] Current post: t3_dx8qyt, title: https://i.imgur.com/rzXrhNl.jpg, last post: t3_dx1ull
[94] Current post: t3_dwvb6m, title: https://i.redd.it/gc2j7529fwy31.jpg, last post: t3_dx1ull
[95] Current post: t3_dx2par, title: https://i.imgur.com/PXXWdiU.jpg, last post: t3_dx1ull
[96] Current post: t3_dwz9lj, title: https://i.imgur.com/X6SLSUO.gifv, last post: t3_dx1ull
[97] Current post: t3_dx282q, title: https://i.redd.it/fh9jqgrr7zy31.jpg, last post: t3_dx1ull
[98] Current post: t3_dx0apk, title: https://i.redd.it/bfjh93y5cyy31.jpg, last post: t3_dx1ull
[0] Current post: t3_e04b7u, title: https://gfycat.com/impassionedopulentislandwhistler, last post: t3_dx0apk
[1] Current post: t3_e07mgl, title: https://i.redd.it/95ice5022b041.jpg, last post: t3_dx0apk
[2] Current post: t3_e08il8, title: https://gfycat.com/impassionedopulentislandwhistler, last post: t3_dx0apk
[3] Current post: t3_e080nb, title: https://i.imgur.com/czPRzsT.jpg, last post: t3_dx0apk
[4] Current post: t3_e04e6s, title: https://i.redd.it/0l5gdxj5y9041.jpg, last post: t3_dx0apk
[5] Current post: t3_dzywqv, title: https://i.redd.it/tpdcrf3ym7041.jpg, last post: t3_dx0apk
[6] Current post: t3_e04a78, title: https://gfycat.com/richangelicarabianoryx, last post: t3_dx0apk
[7] Current post: t3_e02t7k, title: https://i.imgur.com/IprundK.jpg, last post: t3_dx0apk
[8] Current post: t3_e0471b, title: https://i.imgur.com/2TizHCb.jpg, last post: t3_dx0apk
[9] Current post: t3_dzs07u, title: https://i.imgur.com/Ezmhov1.jpg, last post: t3_dx0apk
[10] Current post: t3_dzyip6, title: https://i.redd.it/bxksuggke7041.jpg, last post: t3_dx0apk
[11] Current post: t3_e023p8, title: https://i.imgur.com/8himz7r.gifv, last post: t3_dx0apk
[12] Current post: t3_dzmg5h, title: https://i.imgur.com/eReHtQt.jpg, last post: t3_dx0apk
[13] Current post: t3_dzpn1v, title: https://i.redd.it/eu1bgb3vqxz31.jpg, last post: t3_dx0apk
[14] Current post: t3_dzkmk7, title: https://i.redd.it/rylueoul22041.jpg, last post: t3_dx0apk
[15] Current post: t3_e019lv, title: https://i.redd.it/n9rsav1ot8041.jpg, last post: t3_dx0apk
[16] Current post: t3_dzrtl8, title: https://i.imgur.com/Yo0Y9Nd.jpg, last post: t3_dx0apk
[17] Current post: t3_dzwoqr, title: https://i.imgur.com/RPz7Vbv.jpg, last post: t3_dx0apk
[18] Current post: t3_dzkrys, title: https://i.redd.it/8exlwv8j42041.jpg, last post: t3_dx0apk
[19] Current post: t3_dznwzx, title: https://i.redd.it/7t09sw1763041.jpg, last post: t3_dx0apk
[20] Current post: t3_dzkmt0, title: https://i.redd.it/ckup7u5o22041.jpg, last post: t3_dx0apk
[21] Current post: t3_dzuqv2, title: https://i.imgur.com/KiLCGIo.jpg, last post: t3_dx0apk
[22] Current post: t3_dzssq5, title: https://i.redd.it/r3p844bzs4041.jpg, last post: t3_dx0apk
[23] Current post: t3_dzsn3b, title: https://i.imgur.com/IqXDFaO.jpg, last post: t3_dx0apk
[24] Current post: t3_dzmuq7, title: https://i.redd.it/cjzlx6fit2041.jpg, last post: t3_dx0apk
[25] Current post: t3_dzk164, title: https://i.redd.it/sgn485wju1041.jpg, last post: t3_dx0apk
[26] Current post: t3_dzklsx, title: https://i.redd.it/yorr8kwa22041.jpg, last post: t3_dx0apk
[27] Current post: t3_dzgjym, title: https://i.redd.it/jvpbfty680041.jpg, last post: t3_dx0apk
[28] Current post: t3_dzukqt, title: https://i.imgur.com/u3vmUI3.jpg, last post: t3_dx0apk
[29] Current post: t3_dzkywu, title: https://i.redd.it/a3k9tdet62041.jpg, last post: t3_dx0apk
[30] Current post: t3_dz6wy4, title: https://gfycat.com/bleakfatcurassow, last post: t3_dx0apk
[31] Current post: t3_dz9xc9, title: https://i.redd.it/5nyji9hhaxz31.jpg, last post: t3_dx0apk
[32] Current post: t3_dzk5q6, title: https://i.imgur.com/Ijc9QzJ.jpg, last post: t3_dx0apk
[33] Current post: t3_dzlwsm, title: https://i.redd.it/5nj29rd3i2041.jpg, last post: t3_dx0apk
[34] Current post: t3_dz8sz6, title: https://gfycat.com/violetuncommonalbacoretuna, last post: t3_dx0apk
[35] Current post: t3_dz8qi7, title: https://i.imgur.com/eHjUY9W.jpg, last post: t3_dx0apk
[36] Current post: t3_dzcfoe, title: https://i.imgur.com/4CuYn7q.jpg, last post: t3_dx0apk
[37] Current post: t3_dzbb9f, title: https://i.imgur.com/T1lVKLg.jpg, last post: t3_dx0apk
[38] Current post: t3_dyzca4, title: https://i.imgur.com/pGRIwiJ.jpg, last post: t3_dx0apk
[39] Current post: t3_dz5gd6, title: https://i.redd.it/i52ltr50pvz31.jpg, last post: t3_dx0apk
[40] Current post: t3_dz5w14, title: https://i.redd.it/9k74vx5juvz31.jpg, last post: t3_dx0apk
[41] Current post: t3_dz46n4, title: https://i.redd.it/gkhgboeq8vz31.jpg, last post: t3_dx0apk
[42] Current post: t3_dzb3sa, title: https://gfycat.com/warmheartedboldkillerwhale, last post: t3_dx0apk
[43] Current post: t3_dz6259, title: https://i.imgur.com/Qd0WnQD.jpg, last post: t3_dx0apk
[44] Current post: t3_dz263d, title: https://i.imgur.com/Js3e3G1.jpg, last post: t3_dx0apk
[45] Current post: t3_dywlrd, title: https://gfycat.com/thickdistortedethiopianwolf, last post: t3_dx0apk
[46] Current post: t3_dz2zra, title: https://i.imgur.com/1IpoanE.jpg, last post: t3_dx0apk
[47] Current post: t3_dysttb, title: https://i.imgur.com/3GtCVKS.jpg, last post: t3_dx0apk
[48] Current post: t3_dyqp86, title: https://i.redd.it/a2ganho0jpz31.jpg, last post: t3_dx0apk
[49] Current post: t3_dyjtsq, title: https://i.imgur.com/1dwSIZl.jpg, last post: t3_dx0apk
[50] Current post: t3_dyqpek, title: https://gfycat.com/safeunfoldeddaddylonglegs, last post: t3_dx0apk
[51] Current post: t3_dyz49p, title: https://i.redd.it/xq9ba4riwsz31.jpg, last post: t3_dx0apk
[52] Current post: t3_dyq4bd, title: https://imgur.com/Mh1sfgq.jpeg, last post: t3_dx0apk
[53] Current post: t3_dz1nkq, title: https://i.redd.it/jxg9nstt8uz31.jpg, last post: t3_dx0apk
[54] Current post: t3_dyml70, title: https://i.redd.it/i5xrqtn05oz31.jpg, last post: t3_dx0apk
[55] Current post: t3_dytaid, title: https://gfycat.com/gloriousimpartialharvestmouse, last post: t3_dx0apk
[56] Current post: t3_dyk3vn, title: https://imgur.com/ibHocTs, last post: t3_dx0apk
[57] Current post: t3_dyl6tf, title: https://i.imgur.com/reHFldi.jpg, last post: t3_dx0apk
[58] Current post: t3_dyl75d, title: https://i.imgur.com/odmsWUx.jpg, last post: t3_dx0apk
[59] Current post: t3_dy5amo, title: https://i.redd.it/b62oldukzgz31.jpg, last post: t3_dx0apk
[60] Current post: t3_dyh1dc, title: https://i.imgur.com/dgBfmWO.jpg, last post: t3_dx0apk
[61] Current post: t3_dygb38, title: https://i.redd.it/i66uilyt0lz31.jpg, last post: t3_dx0apk
[62] Current post: t3_dyitpe, title: https://i.redd.it/zo6zb205hmz31.jpg, last post: t3_dx0apk
[63] Current post: t3_dye2gp, title: https://gfycat.com/vacantbogusjellyfish, last post: t3_dx0apk
[64] Current post: t3_dyjrws, title: https://i.redd.it/r7jtika8xmz31.png, last post: t3_dx0apk
[65] Current post: t3_dyc0u0, title: https://i.redd.it/lxa1770bajz31.jpg, last post: t3_dx0apk
[66] Current post: t3_dyeq0f, title: https://i.redd.it/qx4y4hjtakz31.jpg, last post: t3_dx0apk
[67] Current post: t3_dyckl9, title: https://i.imgur.com/wSZzU83.jpg, last post: t3_dx0apk
[68] Current post: t3_dyw2jv, title: https://i.redd.it/jvg5mwnsgrz31.jpg, last post: t3_dx0apk
[69] Current post: t3_dy1yv2, title: https://i.redd.it/i363ge2pjfz31.jpg, last post: t3_dx0apk
[70] Current post: t3_dy47fc, title: https://i.imgur.com/jpb3Iq3.jpg, last post: t3_dx0apk
[71] Current post: t3_dy3x2c, title: https://gfycat.com/shimmeringsnoopybactrian, last post: t3_dx0apk
[72] Current post: t3_dy748h, title: https://i.imgur.com/GBiT8xR.jpg, last post: t3_dx0apk
[73] Current post: t3_dy2s2i, title: https://i.redd.it/fvy9dlgsyfz31.jpg, last post: t3_dx0apk
[74] Current post: t3_dxtyoo, title: https://i.imgur.com/NPvGhDi.png, last post: t3_dx0apk
[75] Current post: t3_dxtx6f, title: https://i.redd.it/3kgib4t9rbz31.jpg, last post: t3_dx0apk
[76] Current post: t3_dxqwwy, title: https://gfycat.com/watchfulshorttermiaerismetalmark, last post: t3_dx0apk
[77] Current post: t3_dxzivh, title: https://i.imgur.com/rYcAfur.jpg, last post: t3_dx0apk
[78] Current post: t3_dxwhl3, title: https://i.imgur.com/Vyx2OQW.jpg, last post: t3_dx0apk
[79] Current post: t3_dxr7oc, title: https://i.imgur.com/qCEvBys.jpg, last post: t3_dx0apk
[80] Current post: t3_dxpklr, title: https://gfycat.com/happygoluckyflusteredfoal, last post: t3_dx0apk
[81] Current post: t3_dxg1ld, title: https://gfycat.com/shadowyanguishedcopepod, last post: t3_dx0apk
[82] Current post: t3_dxkhdc, title: https://imgur.com/0TDmoAO, last post: t3_dx0apk
[83] Current post: t3_dxfcgz, title: https://gfycat.com/downrightsmoggyguineapig, last post: t3_dx0apk
[84] Current post: t3_dxi30j, title: https://gfycat.com/blueregalinchworm, last post: t3_dx0apk
[85] Current post: t3_dx9fxs, title: https://i.redd.it/nqohnn1zx2z31.jpg, last post: t3_dx0apk
[86] Current post: t3_dxf95x, title: https://i.imgur.com/RTFDc73.jpg, last post: t3_dx0apk
[87] Current post: t3_dxcijg, title: https://i.redd.it/me8mnznt24z31.jpg, last post: t3_dx0apk
[88] Current post: t3_dx6xt7, title: https://i.redd.it/ygfromxfw1z31.png, last post: t3_dx0apk
[89] Current post: t3_dxapki, title: https://gfycat.com/jovialjoyousfalcon, last post: t3_dx0apk
[90] Current post: t3_dx4zl8, title: https://imgur.com/ucZWADq, last post: t3_dx0apk
[91] Current post: t3_dxfwb2, title: https://i.redd.it/v58362gxd5z31.jpg, last post: t3_dx0apk
[92] Current post: t3_dxd309, title: https://i.imgur.com/Kv1ievf.jpg, last post: t3_dx0apk
[93] Current post: t3_dx8qyt, title: https://i.imgur.com/rzXrhNl.jpg, last post: t3_dx0apk
[94] Current post: t3_dwvb6m, title: https://i.redd.it/gc2j7529fwy31.jpg, last post: t3_dx0apk
[95] Current post: t3_dx2par, title: https://i.imgur.com/PXXWdiU.jpg, last post: t3_dx0apk
[96] Current post: t3_dwz9lj, title: https://i.imgur.com/X6SLSUO.gifv, last post: t3_dx0apk
[97] Current post: t3_dx282q, title: https://i.redd.it/fh9jqgrr7zy31.jpg, last post: t3_dx0apk
[0] Current post: t3_e04b7u, title: https://gfycat.com/impassionedopulentislandwhistler, last post: t3_dx282q
[1] Current post: t3_e07mgl, title: https://i.redd.it/95ice5022b041.jpg, last post: t3_dx282q
[2] Current post: t3_e08il8, title: https://gfycat.com/impassionedopulentislandwhistler, last post: t3_dx282q
[3] Current post: t3_e080nb, title: https://i.imgur.com/czPRzsT.jpg, last post: t3_dx282q
[4] Current post: t3_e04e6s, title: https://i.redd.it/0l5gdxj5y9041.jpg, last post: t3_dx282q
[5] Current post: t3_dzywqv, title: https://i.redd.it/tpdcrf3ym7041.jpg, last post: t3_dx282q
[6] Current post: t3_e04a78, title: https://gfycat.com/richangelicarabianoryx, last post: t3_dx282q
[7] Current post: t3_e02t7k, title: https://i.imgur.com/IprundK.jpg, last post: t3_dx282q
[8] Current post: t3_e0471b, title: https://i.imgur.com/2TizHCb.jpg, last post: t3_dx282q
[9] Current post: t3_dzs07u, title: https://i.imgur.com/Ezmhov1.jpg, last post: t3_dx282q
[10] Current post: t3_dzyip6, title: https://i.redd.it/bxksuggke7041.jpg, last post: t3_dx282q
[11] Current post: t3_e023p8, title: https://i.imgur.com/8himz7r.gifv, last post: t3_dx282q
[12] Current post: t3_dzmg5h, title: https://i.imgur.com/eReHtQt.jpg, last post: t3_dx282q
[13] Current post: t3_dzpn1v, title: https://i.redd.it/eu1bgb3vqxz31.jpg, last post: t3_dx282q
[14] Current post: t3_dzkmk7, title: https://i.redd.it/rylueoul22041.jpg, last post: t3_dx282q
[15] Current post: t3_e019lv, title: https://i.redd.it/n9rsav1ot8041.jpg, last post: t3_dx282q
[16] Current post: t3_dzrtl8, title: https://i.imgur.com/Yo0Y9Nd.jpg, last post: t3_dx282q
[17] Current post: t3_dzwoqr, title: https://i.imgur.com/RPz7Vbv.jpg, last post: t3_dx282q
[18] Current post: t3_dzkrys, title: https://i.redd.it/8exlwv8j42041.jpg, last post: t3_dx282q
[19] Current post: t3_dznwzx, title: https://i.redd.it/7t09sw1763041.jpg, last post: t3_dx282q
[20] Current post: t3_dzkmt0, title: https://i.redd.it/ckup7u5o22041.jpg, last post: t3_dx282q
[21] Current post: t3_dzuqv2, title: https://i.imgur.com/KiLCGIo.jpg, last post: t3_dx282q
[22] Current post: t3_dzssq5, title: https://i.redd.it/r3p844bzs4041.jpg, last post: t3_dx282q
[23] Current post: t3_dzsn3b, title: https://i.imgur.com/IqXDFaO.jpg, last post: t3_dx282q
[24] Current post: t3_dzmuq7, title: https://i.redd.it/cjzlx6fit2041.jpg, last post: t3_dx282q
[25] Current post: t3_dzk164, title: https://i.redd.it/sgn485wju1041.jpg, last post: t3_dx282q
[26] Current post: t3_dzklsx, title: https://i.redd.it/yorr8kwa22041.jpg, last post: t3_dx282q
[27] Current post: t3_dzgjym, title: https://i.redd.it/jvpbfty680041.jpg, last post: t3_dx282q
[28] Current post: t3_dzukqt, title: https://i.imgur.com/u3vmUI3.jpg, last post: t3_dx282q
[29] Current post: t3_dzkywu, title: https://i.redd.it/a3k9tdet62041.jpg, last post: t3_dx282q
[30] Current post: t3_dz6wy4, title: https://gfycat.com/bleakfatcurassow, last post: t3_dx282q
[31] Current post: t3_dz9xc9, title: https://i.redd.it/5nyji9hhaxz31.jpg, last post: t3_dx282q
[32] Current post: t3_dzk5q6, title: https://i.imgur.com/Ijc9QzJ.jpg, last post: t3_dx282q
[33] Current post: t3_dzlwsm, title: https://i.redd.it/5nj29rd3i2041.jpg, last post: t3_dx282q
[34] Current post: t3_dz8sz6, title: https://gfycat.com/violetuncommonalbacoretuna, last post: t3_dx282q
[35] Current post: t3_dz8qi7, title: https://i.imgur.com/eHjUY9W.jpg, last post: t3_dx282q
[36] Current post: t3_dzcfoe, title: https://i.imgur.com/4CuYn7q.jpg, last post: t3_dx282q
[37] Current post: t3_dzbb9f, title: https://i.imgur.com/T1lVKLg.jpg, last post: t3_dx282q
[38] Current post: t3_dyzca4, title: https://i.imgur.com/pGRIwiJ.jpg, last post: t3_dx282q
[39] Current post: t3_dz5gd6, title: https://i.redd.it/i52ltr50pvz31.jpg, last post: t3_dx282q
[40] Current post: t3_dz5w14, title: https://i.redd.it/9k74vx5juvz31.jpg, last post: t3_dx282q
[41] Current post: t3_dz46n4, title: https://i.redd.it/gkhgboeq8vz31.jpg, last post: t3_dx282q
[42] Current post: t3_dzb3sa, title: https://gfycat.com/warmheartedboldkillerwhale, last post: t3_dx282q
[43] Current post: t3_dz6259, title: https://i.imgur.com/Qd0WnQD.jpg, last post: t3_dx282q
[44] Current post: t3_dz263d, title: https://i.imgur.com/Js3e3G1.jpg, last post: t3_dx282q
[45] Current post: t3_dywlrd, title: https://gfycat.com/thickdistortedethiopianwolf, last post: t3_dx282q
[46] Current post: t3_dz2zra, title: https://i.imgur.com/1IpoanE.jpg, last post: t3_dx282q
[47] Current post: t3_dysttb, title: https://i.imgur.com/3GtCVKS.jpg, last post: t3_dx282q
[48] Current post: t3_dyqp86, title: https://i.redd.it/a2ganho0jpz31.jpg, last post: t3_dx282q
[49] Current post: t3_dyjtsq, title: https://i.imgur.com/1dwSIZl.jpg, last post: t3_dx282q
[50] Current post: t3_dyqpek, title: https://gfycat.com/safeunfoldeddaddylonglegs, last post: t3_dx282q
[51] Current post: t3_dyz49p, title: https://i.redd.it/xq9ba4riwsz31.jpg, last post: t3_dx282q
[52] Current post: t3_dyq4bd, title: https://imgur.com/Mh1sfgq.jpeg, last post: t3_dx282q
[53] Current post: t3_dz1nkq, title: https://i.redd.it/jxg9nstt8uz31.jpg, last post: t3_dx282q
[54] Current post: t3_dyml70, title: https://i.redd.it/i5xrqtn05oz31.jpg, last post: t3_dx282q
[55] Current post: t3_dytaid, title: https://gfycat.com/gloriousimpartialharvestmouse, last post: t3_dx282q
[56] Current post: t3_dyk3vn, title: https://imgur.com/ibHocTs, last post: t3_dx282q
[57] Current post: t3_dyl6tf, title: https://i.imgur.com/reHFldi.jpg, last post: t3_dx282q
[58] Current post: t3_dyl75d, title: https://i.imgur.com/odmsWUx.jpg, last post: t3_dx282q
[59] Current post: t3_dy5amo, title: https://i.redd.it/b62oldukzgz31.jpg, last post: t3_dx282q
[60] Current post: t3_dyh1dc, title: https://i.imgur.com/dgBfmWO.jpg, last post: t3_dx282q
[61] Current post: t3_dygb38, title: https://i.redd.it/i66uilyt0lz31.jpg, last post: t3_dx282q
[62] Current post: t3_dyitpe, title: https://i.redd.it/zo6zb205hmz31.jpg, last post: t3_dx282q
[63] Current post: t3_dye2gp, title: https://gfycat.com/vacantbogusjellyfish, last post: t3_dx282q
[64] Current post: t3_dyjrws, title: https://i.redd.it/r7jtika8xmz31.png, last post: t3_dx282q
[65] Current post: t3_dyc0u0, title: https://i.redd.it/lxa1770bajz31.jpg, last post: t3_dx282q
[66] Current post: t3_dyeq0f, title: https://i.redd.it/qx4y4hjtakz31.jpg, last post: t3_dx282q
[67] Current post: t3_dyckl9, title: https://i.imgur.com/wSZzU83.jpg, last post: t3_dx282q
[68] Current post: t3_dyw2jv, title: https://i.redd.it/jvg5mwnsgrz31.jpg, last post: t3_dx282q
[69] Current post: t3_dy1yv2, title: https://i.redd.it/i363ge2pjfz31.jpg, last post: t3_dx282q
[70] Current post: t3_dy47fc, title: https://i.imgur.com/jpb3Iq3.jpg, last post: t3_dx282q
[71] Current post: t3_dy3x2c, title: https://gfycat.com/shimmeringsnoopybactrian, last post: t3_dx282q
[72] Current post: t3_dy748h, title: https://i.imgur.com/GBiT8xR.jpg, last post: t3_dx282q
[73] Current post: t3_dy2s2i, title: https://i.redd.it/fvy9dlgsyfz31.jpg, last post: t3_dx282q
[74] Current post: t3_dxtyoo, title: https://i.imgur.com/NPvGhDi.png, last post: t3_dx282q
[75] Current post: t3_dxtx6f, title: https://i.redd.it/3kgib4t9rbz31.jpg, last post: t3_dx282q
[76] Current post: t3_dxqwwy, title: https://gfycat.com/watchfulshorttermiaerismetalmark, last post: t3_dx282q
[77] Current post: t3_dxzivh, title: https://i.imgur.com/rYcAfur.jpg, last post: t3_dx282q
[78] Current post: t3_dxwhl3, title: https://i.imgur.com/Vyx2OQW.jpg, last post: t3_dx282q
[79] Current post: t3_dxr7oc, title: https://i.imgur.com/qCEvBys.jpg, last post: t3_dx282q
[80] Current post: t3_dxpklr, title: https://gfycat.com/happygoluckyflusteredfoal, last post: t3_dx282q
[81] Current post: t3_dxg1ld, title: https://gfycat.com/shadowyanguishedcopepod, last post: t3_dx282q
[82] Current post: t3_dxkhdc, title: https://imgur.com/0TDmoAO, last post: t3_dx282q
[83] Current post: t3_dxfcgz, title: https://gfycat.com/downrightsmoggyguineapig, last post: t3_dx282q
[84] Current post: t3_dxi30j, title: https://gfycat.com/blueregalinchworm, last post: t3_dx282q
[85] Current post: t3_dx9fxs, title: https://i.redd.it/nqohnn1zx2z31.jpg, last post: t3_dx282q
[86] Current post: t3_dxf95x, title: https://i.imgur.com/RTFDc73.jpg, last post: t3_dx282q
[87] Current post: t3_dxcijg, title: https://i.redd.it/me8mnznt24z31.jpg, last post: t3_dx282q
[88] Current post: t3_dx6xt7, title: https://i.redd.it/ygfromxfw1z31.png, last post: t3_dx282q
[89] Current post: t3_dxapki, title: https://gfycat.com/jovialjoyousfalcon, last post: t3_dx282q
[90] Current post: t3_dx4zl8, title: https://imgur.com/ucZWADq, last post: t3_dx282q
[91] Current post: t3_dxfwb2, title: https://i.redd.it/v58362gxd5z31.jpg, last post: t3_dx282q
[92] Current post: t3_dxd309, title: https://i.imgur.com/Kv1ievf.jpg, last post: t3_dx282q
[93] Current post: t3_dx8qyt, title: https://i.imgur.com/rzXrhNl.jpg, last post: t3_dx282q
[94] Current post: t3_dwvb6m, title: https://i.redd.it/gc2j7529fwy31.jpg, last post: t3_dx282q
[95] Current post: t3_dx2par, title: https://i.imgur.com/PXXWdiU.jpg, last post: t3_dx282q
[96] Current post: t3_dwz9lj, title: https://i.imgur.com/X6SLSUO.gifv, last post: t3_dx282q

oauth2: token expired and refresh token is not set

Hello everyone,

for 2 weeks now, I have this issue where the token expires after 1 hour (as it is described in the reddit documentation) and the token isn't refreshed.

I'm not sure of what happened.
I don't think something changed, else a release of this package would have been made following the changes.
On my end, the only thing that changed is domain name.
I subscribed to the Reddit API using my secret_id. I also changed the redirect_uri to follow the new domain name (not sure it's of any effect but sometimes things get esoteric).

How does this work inside the package ? I didn't find any code about token refreshing and it used to work perfectly fine before.

I use this cool package for a long time now and I would be glad to make a PR about token refresh if needed.

invalid request path

Here is a small piece of code that yields back

<nil> Get "https://reddit.com/r/investing.json?raw_json=1": invalid request :path "r/investing.json?raw_json=1"

every time I run it. Weird thing is that https://reddit.com/r/investing.json?raw_json=1 does exist. Any ideas


import (
	"fmt"
	"time"

	"github.com/turnage/graw/reddit"
)

func main() {
	userAgent := "graw:doc_demo_bot:0.3.1 by /u/datlolbot"
	script, _ := reddit.NewScript(userAgent, time.Second)
	fmt.Println(script.Thread("r/investing"))
}

Support the "more" return kind

I would like to be able to query /api/morechildren to get full comment trees from submissions. Currently there are functions like Lurker.Thread() or Scanner.ListingWithParams() on a submission link which get truncated comment trees. But I don't see a good way to get the full comment tree.

When using a Thread() call, there is a child with a "more" kind returned last in the list of comments, and it is being discarded from the comment list during parsing. This happens in parse.parseListing (since graw does not currently support the more type).

Here is an example of the raw json for this more kind from the children list of a Thread() call

{"kind": "more", "data": {"count": 1224, "name": "t1_fvand39", "id": "fvand39", "parent_id": "t3_hbo4a7", "depth": 0, "children": ["fvand39", ... "fvadr0f"]}}], "after": null, "before": null}}]

Or if there is an easier way to get the full comment tree from a submission like, I would love to know.

500 status code when running the example

Hello,

I'm trying to run the example from the book, I have my own credentials, but when I run it I have a 500 error:

Failed to fetch /r/golang:  bad response code: 500

I don't even know where to start investigation, what caused it, what is the request, etc... Any idea how I can start digging into it ?

Is it possible to understand if a post is removed by a moderator?

Example: https://www.reddit.com/r/wallstreetbets/comments/lxrlx6/the_danger_must_me_growing_for_the_holders_keep/

It says:

Sorry, this post has been removed by the moderators of r/wallstreetbets.
Moderators remove posts from feeds for a variety of reasons, including keeping communities safe, civil, and true to their purpose.

if I use bot.Thread(post.Permalink) I get Hidden, Locked, Deleted and NSFW but they are all false.

Is it a bug or am I considering the wrong fields to understand if it is removed?

Thanks :)

panic: runtime error: invalid memory address or nil pointer dereference

Indeed similar to #55 but I'm super confused as to what I'm doing wrong here, since as far as I can see I'm doing everything as normal.

Code is here: https://play.golang.org/p/vKbxsbNLSa9

I get the following error:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x132cb6a]

goroutine 1 [running]:
github.com/turnage/graw/reddit.(*appClient).authorize(0xc0000d0090, 0xc0000d0090, 0xc0001040b4)
	/Users/joseph/go/src/github.com/turnage/graw/reddit/appclient.go:59 +0x24a
github.com/turnage/graw/reddit.newAppClient(0xc00010600d, 0x2a, 0xc000106045, 0xf, 0xc000106066, 0x1b, 0xc00010608e, 0xa, 0xc0001060a5, 0xd, ...)
	/Users/joseph/go/src/github.com/turnage/graw/reddit/appclient.go:79 +0xff
github.com/turnage/graw/reddit.newClient(0xc00010600d, 0x2a, 0xc000106045, 0xf, 0xc000106066, 0x1b, 0xc00010608e, 0xa, 0xc0001060a5, 0xd, ...)
	/Users/joseph/go/src/github.com/turnage/graw/reddit/client.go:79 +0x15a
github.com/turnage/graw/reddit.NewBot(0xc00010600d, 0x2a, 0xc000106045, 0xf, 0xc000106066, 0x1b, 0xc00010608e, 0xa, 0xc0001060a5, 0xd, ...)
	/Users/joseph/go/src/github.com/turnage/graw/reddit/bot.go:38 +0xba
github.com/turnage/graw/reddit.NewBotFromAgentFile(0x13f7db3, 0xd, 0x0, 0xc000044e88, 0xa3d9af05b49f4c1d, 0x10, 0x13715e0)
	/Users/joseph/go/src/github.com/turnage/graw/reddit/bot.go:64 +0x156
main.main()
	/Users/joseph/golang-reddit/main.go:8 +0x54
exit status 2

Which seems to point back to it being an error in NewBotFromAgentFile but I'm not sure what I've done wrong.

Support for userless authentication

graw doesn't seem to support Application Only OAuth (as described in the reddit OAuth doc) for "read-only" "user-less" access to the reddit API.

This should be made possible by allowing empty username and password in the reddit.App struct and using golang.org/x/oauth2/clientcredentials for 2-legged OAuth authentication in appClient's authorize method if the Username and/or Password fields are not provided.

I can make a pull request if you agree this feature should be added. I will probably fork graw anyway because I need this feature for a project.

Thanks

Making custom requests through reaper

I couldn't see an easy way to access the reaper instance, since it seems instanced and thrown into Account, Lurker, and Scanner.

I need a way to do API calls on my own with the same rate limiting variables. The endpoints I'm looking for is fetch moderator list, accept moderator invitation, new modmail actions, approve and remove posts.

Since the package seems to focus on streams rather than full a API wrapper, it would be nice to be able to get the reaper instance to stay in line with the rate limiting

Create bot using existing OAuth2 token

After browsing how the underlying authentication mechanism works in this library, it does not appear that there is a way to get a Bot (or Lurker or Scanner) without an actual username and password.

In my use case, users have already authenticated my application, and I just store the retrieved tokens and refresh them as needed.

Would you be interested in a PR that adds the ability to create an authenticated client using an existing OAuth2 token, skipping the internal authorization request?

End of Pilot: Breaking Changes

The pilot program is ending. I have received feedback from most of the pilot users. Based on that feedback I will be making some changes which may break existing graw bots. If I do, I will log those changes in this issue.

Until the pilot is over and graw has a version number, there are no promises of api stability.

Once graw has a version number, I will close this issue, and there will be an api promise, though I haven't decided exactly what it will guarantee (I will link to it in the closing comment).

Thank you to everyone who took the time to use and provide feedback! I appreciate it!

Replying to t4_ types is broken.

Reddit's api/comment call accepts t1_ and t3_ parent ids from graw, but not t4_. The effect is that replying to private messages does not work; requests receive 403.

For t1_ and t3_ types, submit scope is required. For t4_ types, privatemessages scope is required. graw should have '*' scope.

Some threads in /r/redditdev imply this "happens sometimes". Issue opened to look into.

Update post flair

Does this library have a way of modifying the flair of an existing post? I can't see anything in the code that would suggest as much with a peruse, though I wanted to find out if it was possible

reaperImpl.sow should accept an argument method

Currently, readerImpl.sow only will make GET requests to Reddit. Because Reddit will return a fully sowable response for POSTing replies/comments, this method should be modified to accept an argument method. Without this it is necessary to use a different method that behaves in the same way for getting a bot's comment when posted

Get post that was just created

Looking at method reddit.Bot.PostLink that just returns an error, I don't see an obvious way to create a post and then get an instance of that created post. Looking at the Reddit api docs for submitting posts it seems like that information is returned at post time.

Is there a way to get that information with this library?

comment stream issues

I once wrote a reddit bot in Kotlin that reads every comment on reddit and responds to the comments that match certain patterns. It worked like this: https://github.com/glatteis/kotlinjrawstreaming/blob/master/jrawstreaming.kt (The limit=200 actually resets to 100).
This bot was successfully able to loop through every comment on reddit, and respond to virtually every comment that matched my patterns.
A few days ago I rewrote that bot in go because it's much more portable and hassle-free than the JVM, but for some reason the graw bot is only able to loop through some, not all comments on reddit. I looked through the implementation and there does not seem to be anything different than from my implementation
Do you have any clue why this might be? Thanks for your time reading this :)

passing query params to Listing

Hey, as far as I can tell, there is no way to pass query params like "t=hour" through the Listing API. The only way that I can see of doing this is to have my own Scanner implementation that does which would have been easier if you had exported your reaper interface and implementation. What would you suggest I do?

Getting historic data

This would probably be a feature request since I'd love the ability to fetch historical data (( e.g. all posts newer than 1 day, or something like that ))

If it's possible doing it with graw I'd like to know how, since don't see it right now.

bot.Listing Randomly locking up.

I run a Discord bot using graw to get content from Reddit. To minimize API calls to Reddit, 100 posts from the most popular subreddits are cached on the server running the bot, also gotten with graw. After an hour the posts expire and graw retrieves 100 more posts per subreddit. I am having an issue that after one or two refreshes of the post cache, bot.Listing completely locks up the bot. Sometimes, it isn't after an hour or two, its as soon as I start the bot and it attempts to populate the post cache, to which nothing happens as bot.Listing has locked up. This just started happening a few days ago, and I was immediately notified of the issue by my users who apparently use the bot as their method of Reddit content consumption. This issue happens whenever the bot calls graw, either when populating the cache, or when a user requests content from a subreddit that is not usually cached.

The API keys are valid, I just regenerated them a few days ago. It doesn't seem to be a memory issue, memory use doesn't build over time nor does any sort of error appear. I have proper error handling, but because bot.Listing is hanging, no error returns at all. Restarting the bot a few times fixes the issue, but this is not a permanent fix, especially since occasionally restarting doesn't fix the issue. The bot is currently built using a Go 1.13 Docker container, which will soon be updated to 1.15. In testing the problem, I tried using both 1.13 and 1.15 but neither made a difference.

Does anyone have any insight on what could possibly be causing the issue?

Can you add more info around filling out the template?

I can't quite figure out what is required for
user_agent: ":: (by /u/)"

When I created the app it asked if it was web/installed/personal use not sure if that is platform?

It also doesn't explicitly say if which id is client id but I have to imagine the first id listed under my personal app name is the client id.

Engine from default provider cannot be stopped because stopSig is never initialized

Hello,

Great library !

One small note if I may: In my opinion the internal/engine/provider.go file needs an extra line around line 33

from:

    e := &Engine{
        op:           op,
        bot:          bot,
        dir:          dir,
        monitors:     list.New(),
        userMonitors: make(map[string]*list.Element),
    }

to:

    e := &Engine{
        op:           op,
        bot:          bot,
        dir:          dir,
        monitors:     list.New(),
        userMonitors: make(map[string]*list.Element),
        stopSig:      make(chan bool),
    }

Otherwise the uninitialized channel blocks forever and calling Stop on the Engine will never reach the code to trigger e.stop = true in the Run method

    for !e.stop {
        select {
        case <-e.stopSig:
            e.stop = true

My regards again, and all the best,
Silviu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.