Skip to content

Instantly share code, notes, and snippets.

@Rochdy
Last active February 18, 2023 03:06
Show Gist options
  • Save Rochdy/044bf79a95b06dbe2c63a243cda74a31 to your computer and use it in GitHub Desktop.
Save Rochdy/044bf79a95b06dbe2c63a243cda74a31 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"net/http"
"log"
"io/ioutil"
"os"
"regexp"
"strings"
"net/url"
"encoding/json"
)
func main() {
dirname := "./tests"
getMovies(dirname)
}
func getMovies(dirname string) {
f, err := os.Open(dirname)
if err != nil {
log.Fatalln(err)
}
files, err := f.Readdir(-1)
if err != nil {
log.Fatalln(err)
}
f.Close()
for _, file := range files {
regexCleanTxt, _ := regexp.Compile("[^a-zA-Z0-9\\s]+")
regexYear, _ := regexp.Compile("\\(\\b(19|20)\\d{2}\\b\\)")
year := strings.TrimSpace(regexCleanTxt.ReplaceAllString(regexYear.FindStringSubmatch(file.Name())[0], ""))
movie := strings.TrimSpace(regexCleanTxt.ReplaceAllString(strings.Replace(file.Name(), year, "", 1), ""))
info := getMovieInfo(movie, year)
moviesInfo = append(moviesInfo,info)
}
}
func getMovieInfo(name string, year string) {
baseUrl, err := url.Parse("https://www.omdbapi.com/")
if err != nil {
fmt.Println("Malformed URL: ", err.Error())
return
}
params := url.Values{}
params.Add("t", name)
params.Add("y", year)
params.Add("apikey", "1e9ca492")
baseUrl.RawQuery = params.Encode()
resp, err := http.Get(baseUrl.String())
if err != nil {
log.Fatalln(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
type Movie struct {
Title string
Year string
ImdbRating string
}
var jsonBlob = []byte(string(body))
var movie Movie;
err = json.Unmarshal(jsonBlob, &movie)
if err != nil {
panic(err)
}
return movie
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment