@@ -41,23 +41,92 @@ func (indexer *ForumIndexer) Close() {
4141 close (indexer .closeSignal )
4242}
4343
44+ type ForumAccount struct {
45+ Username string
46+ Discriminator int
47+ }
48+
4449func (indexer * ForumIndexer ) run () {
4550 log .Info ("starting forum indexer" )
4651
47- accounts := []string {
48- "Chris" , "Jonathan" , "Erik" , "Mark_GGG" , "Samantha" , "Rory" , "Rhys" , "Andrew_GGG" ,
49- "Damien_GGG" , "Joel_GGG" , "Ari" , "Thomas" , "BrianWeissman" , "Edwin_GGG" , "Support" , "Dylan" ,
50- "MaxS" , "Ammon_GGG" , "Jess_GGG" , "Robbie_GGG" , "GGG_Neon" , "Jason_GGG" , "Henry_GGG" ,
51- "Michael_GGG" , "Bex_GGG" , "Cagan_GGG" , "Kieren_GGG" , "Yeran_GGG" , "Gary_GGG" , "Dan_GGG" ,
52- "Jared_GGG" , "Brian_GGG" , "RobbieL_GGG" , "Arthur_GGG" , "NickK_GGG" , "Felipe_GGG" ,
53- "Alex_GGG" , "Alexcc_GGG" , "Andy" , "CJ_GGG" , "Eben_GGG" , "Emma_GGG" , "Ethan_GGG" ,
54- "Fitzy_GGG" , "Hartlin_GGG" , "Jake_GGG" , "Melissa_GGG" , "MikeP_GGG" , "Novynn" , "Rob_GGG" ,
55- "Roman_GGG" , "Tom_GGG" , "Natalia_GGG" , "Jeff_GGG" , "Lu_GGG" , "JuliaS_GGG" , "Alexander_GGG" ,
56- "SamC_GGG" , "AndrewE_GGG" , "Kyle_GGG" , "Stacey_GGG" , "Jatin_GGG" , "Community_Team" ,
57- "Nick_GGG" , "Guy_GGG" , "Ben_GGG" , "BenH_GGG" , "Nav_GGG" , "Will_GGG" , "Scott_GGG" , "JC_GGG" ,
58- "Dylan_GGG" , "Chulainn_GGG" , "Vash_GGG" , "Cameron_GGG" , "Jacob_GGG" , "Jenn_GGG" ,
59- "CoryA_GGG" , "Sian_GGG" , "Drew_GGG" , "Lisa_GGG" , "ThomasK_GGG" , "Whai_GGG" , "Scopey" ,
60- "Adam_GGG" , "Nichelle_GGG" , "Markus_GGG" ,
52+ accounts := []ForumAccount {
53+ {Username : "Chris" },
54+ {Username : "Jonathan" },
55+ {Username : "Mark_GGG" },
56+ {Username : "Rory" },
57+ {Username : "Rhys" },
58+ {Username : "Joel_GGG" },
59+ {Username : "Ari" },
60+ {Username : "Thomas" },
61+ {Username : "Support" },
62+ {Username : "Jess_GGG" },
63+ {Username : "Robbie_GGG" },
64+ {Username : "GGG_Neon" },
65+ {Username : "Jason_GGG" },
66+ {Username : "Henry_GGG" },
67+ {Username : "Michael_GGG" },
68+ {Username : "Bex_GGG" },
69+ {Username : "Cagan_GGG" },
70+ {Username : "Kieren_GGG" },
71+ {Username : "Yeran_GGG" },
72+ {Username : "Gary_GGG" },
73+ {Username : "Dan_GGG" },
74+ {Username : "Jared_GGG" },
75+ {Username : "Brian_GGG" },
76+ {Username : "RobbieL_GGG" },
77+ {Username : "Arthur_GGG" },
78+ {Username : "NickK_GGG" },
79+ {Username : "Felipe_GGG" },
80+ {Username : "Alex_GGG" },
81+ {Username : "Alexcc_GGG" },
82+ {Username : "CJ_GGG" },
83+ {Username : "Eben_GGG" },
84+ {Username : "Emma_GGG" },
85+ {Username : "Ethan_GGG" },
86+ {Username : "Fitzy_GGG" },
87+ {Username : "Hartlin_GGG" },
88+ {Username : "Jake_GGG" },
89+ {Username : "Melissa_GGG" },
90+ {Username : "MikeP_GGG" },
91+ {Username : "Novynn" },
92+ {Username : "Rob_GGG" },
93+ {Username : "Roman_GGG" },
94+ {Username : "Tom_GGG" },
95+ {Username : "Natalia_GGG" },
96+ {Username : "Jeff_GGG" },
97+ {Username : "Lu_GGG" },
98+ {Username : "JuliaS_GGG" },
99+ {Username : "Alexander_GGG" },
100+ {Username : "SamC_GGG" },
101+ {Username : "AndrewE_GGG" },
102+ {Username : "Kyle_GGG" },
103+ {Username : "Stacey_GGG" },
104+ {Username : "Jatin_GGG" },
105+ {Username : "Community_Team" },
106+ {Username : "Nick_GGG" },
107+ {Username : "Guy_GGG" },
108+ {Username : "Ben_GGG" },
109+ {Username : "BenH_GGG" },
110+ {Username : "Nav_GGG" },
111+ {Username : "Will_GGG" },
112+ {Username : "Scott_GGG" },
113+ {Username : "JC_GGG" },
114+ {Username : "Dylan_GGG" },
115+ {Username : "Chulainn_GGG" },
116+ {Username : "Vash_GGG" },
117+ {Username : "Cameron_GGG" },
118+ {Username : "Jacob_GGG" },
119+ {Username : "Jenn_GGG" },
120+ {Username : "CoryA_GGG" },
121+ {Username : "Sian_GGG" },
122+ {Username : "Drew_GGG" },
123+ {Username : "Lisa_GGG" },
124+ {Username : "ThomasK_GGG" },
125+ {Username : "Whai_GGG" },
126+ {Username : "Scopey" },
127+ {Username : "Adam_GGG" },
128+ {Username : "Nichelle_GGG" },
129+ {Username : "Markus_GGG" },
61130 }
62131
63132 timezone := (* time .Location )(nil )
@@ -99,7 +168,7 @@ func (indexer *ForumIndexer) run() {
99168 return
100169 default :
101170 if err := indexer .index (account , timezone ); err != nil {
102- log .WithError (err ).Error ("error indexing forum account: " + account )
171+ log .WithError (err ).Error ("error indexing forum account: " + account . Username )
103172 }
104173 time .Sleep (time .Second )
105174 }
@@ -143,7 +212,7 @@ var postURLExpression = regexp.MustCompile("^/forum/view-post/([0-9]+)")
143212var threadURLExpression = regexp .MustCompile ("^/forum/view-thread/([0-9]+)" )
144213var forumURLExpression = regexp .MustCompile ("^/forum/view-forum/([0-9]+)" )
145214
146- func ScrapeForumPosts (doc * goquery.Document , timezone * time.Location ) ([]* ForumPost , error ) {
215+ func ScrapeForumPosts (doc * goquery.Document , poster ForumAccount , timezone * time.Location ) ([]* ForumPost , error ) {
147216 posts := []* ForumPost (nil )
148217
149218 err := error (nil )
@@ -154,7 +223,8 @@ func ScrapeForumPosts(doc *goquery.Document, timezone *time.Location) ([]*ForumP
154223
155224 doc .Find (".forumPostListTable > tbody > tr" ).EachWithBreak (func (i int , sel * goquery.Selection ) bool {
156225 post := & ForumPost {
157- Poster : sel .Find (".post_by_account" ).Text (),
226+ Poster : poster .Username ,
227+ PosterDiscriminator : poster .Discriminator ,
158228 }
159229
160230 body , err := sel .Find (".content" ).Html ()
@@ -197,19 +267,19 @@ func ScrapeForumPosts(doc *goquery.Document, timezone *time.Location) ([]*ForumP
197267 return posts , nil
198268}
199269
200- func (indexer * ForumIndexer ) forumPosts (poster string , page int , timezone * time.Location ) ([]* ForumPost , error ) {
201- doc , err := indexer .requestDocument (fmt .Sprintf ("/account/view-posts/%v/page/%v" , poster , page ))
270+ func (indexer * ForumIndexer ) forumPosts (poster ForumAccount , page int , timezone * time.Location ) ([]* ForumPost , error ) {
271+ doc , err := indexer .requestDocument (fmt .Sprintf ("/account/view-posts/%v-%04d /page/%v" , poster . Username , poster . Discriminator , page ))
202272 if err != nil {
203273 return nil , err
204274 }
205- posts , err := ScrapeForumPosts (doc , timezone )
275+ posts , err := ScrapeForumPosts (doc , poster , timezone )
206276 if err != nil {
207277 return nil , err
208278 }
209279 return posts , nil
210280}
211281
212- func (indexer * ForumIndexer ) index (poster string , timezone * time.Location ) error {
282+ func (indexer * ForumIndexer ) index (poster ForumAccount , timezone * time.Location ) error {
213283 logger := log .WithFields (log.Fields {
214284 "poster" : poster ,
215285 })
0 commit comments