1
1
package scraper
2
2
3
3
import (
4
+ "encoding/json"
4
5
"fmt"
6
+ "net/http"
7
+ "net/url"
8
+ "strings"
5
9
"time"
6
10
7
11
"github.com/diurnalist/ourkino/internal/model"
@@ -11,9 +15,71 @@ type farawayScraper struct {
11
15
Location string
12
16
}
13
17
18
+ type FarawayRepertoireEvent struct {
19
+ EventTimetable string `json:"event_timetable"`
20
+ }
21
+
22
+ type FarawayRepertoireEventGroup struct {
23
+ EventsCollection []FarawayRepertoireEvent `json:"events_collection"`
24
+ }
25
+
26
+ type FarawayRepertoire struct {
27
+ Title string
28
+ Description string
29
+ Picture1 string `json:"picture_1"`
30
+ EventGroup []FarawayRepertoireEventGroup `json:"event_group"`
31
+ }
32
+
33
+ type FarawayRepertoireWrapper struct {
34
+ Data []FarawayRepertoire
35
+ }
36
+
14
37
func (s farawayScraper ) Scrape (ch chan <- []model.Showtime , dates []time.Time , tz * time.Location ) error {
15
38
showtimes := make ([]model.Showtime , 0 )
16
39
40
+ for _ , date := range dates {
41
+ reqUrl := "https://faraway.intensify-solutions.com/embed/ajaxGetRepertoire"
42
+ data := url.Values {}
43
+ data .Set ("location" , s .Location )
44
+ data .Set ("date" , date .Format ("2006-01-02" ))
45
+ res , err := http .Post (reqUrl , "application/x-www-form-urlencoded" , strings .NewReader (data .Encode ()))
46
+ if err != nil {
47
+ return err
48
+ }
49
+
50
+ var repertoire FarawayRepertoireWrapper
51
+ defer res .Body .Close ()
52
+ json .NewDecoder (res .Body ).Decode (& repertoire )
53
+
54
+ for _ , rData := range repertoire .Data {
55
+ if len (rData .EventGroup ) != 1 {
56
+ //Some entries have 0-length event groups; these can be ignored.
57
+ continue
58
+ }
59
+
60
+ for _ , event := range rData .EventGroup [0 ].EventsCollection {
61
+ timetableDate , err := time .Parse ("2006-01-02 15:04" , event .EventTimetable )
62
+ if err != nil {
63
+ return err
64
+ }
65
+ showtime := time .Date (
66
+ timetableDate .Year (), timetableDate .Month (), timetableDate .Day (),
67
+ timetableDate .Hour (), timetableDate .Minute (), 0 , 0 , tz )
68
+
69
+ showtimes = append (showtimes , model.Showtime {
70
+ Film : rData .Title ,
71
+ When : showtime ,
72
+ Language : "" ,
73
+ DeepLink : "" ,
74
+ Details : model.ShowtimeDetails {
75
+ Description : rData .Description ,
76
+ ImageURL : "https://faraway.intensify-solutions.com" + rData .Picture1 ,
77
+ },
78
+ })
79
+ }
80
+ }
81
+ }
82
+
17
83
ch <- showtimes
18
84
19
85
return nil
0 commit comments