mubi

package module
v0.0.0-...-68a79c1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2023 License: MIT Imports: 7 Imported by: 1

README

mubi

Do things with https://mubi.com.

Currently supported things being:

Example usage for getting a user's film ratings:

package main

import (
	"fmt"
	"github.com/jdennes/mubi"
)

func main() {
	api := mubi.NewMubiAPI()
	userId, page, perPage := int64(7995037), 1, 20
	ratings := api.GetRatings(userId, page, perPage)

	for _, rating := range ratings {
		fmt.Printf("%s (%d) - Rated %d/5\n", rating.Film.Title, rating.Film.Year, rating.Overall)
	}
}

Example command provided for getting a user's film ratings:

$ mubi ratings --userid=7995037 --page=1 --per-page=5
Dear Zachary (2008) - http://mubi.com/films/dear-zachary
Directed by Kurt Kuenne
Rated 4/5 stars on 2020-08-28 23:47:58 +0200 CEST
-----
Papicha (2019) - http://mubi.com/films/papicha
Directed by Mounia Meddour Gens
Rated 5/5 stars on 2020-08-26 22:15:02 +0200 CEST
-----
Leviathan (2014) - http://mubi.com/films/leviathan-2014
Directed by Andrey Zvyagintsev
Rated 5/5 stars on 2020-08-19 18:47:59 +0200 CEST
-----
Amy (2015) - http://mubi.com/films/amy-2015
Directed by Asif Kapadia
Rated 4/5 stars on 2020-08-18 11:23:48 +0200 CEST
-----
Hoop Dreams (1994) - http://mubi.com/films/hoop-dreams
Directed by Steve James
Rated 4/5 stars on 2020-08-18 10:58:18 +0200 CEST
-----
$ mubi ratings --userid=7995037 --page=1 --per-page=5 --export-for-letterboxd
Title,Year,Directors,Rating,WatchedDate
Dear Zachary,2008,Kurt Kuenne,4,2020-08-28
Papicha,2019,Mounia Meddour Gens,5,2020-08-26
Leviathan,2014,Andrey Zvyagintsev,5,2020-08-19
Amy,2015,Asif Kapadia,4,2020-08-18
Hoop Dreams,1994,Steve James,4,2020-08-18

Building the executable locally:

go build -o ./mubi github.com/jdennes/mubi/cmd/mubi

Running while developing:

go run cmd/mubi/main.go ratings --userid 7995037

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Director

type Director struct {
	Id   int    `json:id`
	Name string `json:name`
}

type FavouriteFilm

type FavouriteFilm struct {
	Timestamp int64 `json:"created_at"`
	Fannable  struct {
		Film Film `json:film`
	} `json:fannable`
}

type Film

type Film struct {
	Title        string     `json:title`
	Year         int        `json:year`
	CanonicalUrl string     `json:"canonical_url"`
	WebUrl       string     `json:"web_url"`
	Directors    []Director `json:directors`
}

type FilmOfTheDay

type FilmOfTheDay struct {
	Id          int    `json:"id"`
	AvailableAt string `json:"available_at"`
	ExpiresAt   string `json:"expires_at"`
	Film        Film   `json:"film"`
}

type FilmsOfTheDayData

type FilmsOfTheDayData struct {
	Properties struct {
		InitialState struct {
			FilmOfTheDayContainer struct {
				FilmsOfTheDay []FilmOfTheDay `json:"filmProgrammings"`
			} `json:"filmProgramming"`
		} `json:"initialState"`
	} `json:"props"`
}

type FollowerItem

type FollowerItem struct {
	Id        int   `json:id`
	CreatedAt int64 `json:"created_at"`
	Follower  User  `json:follower`
}

type FollowingItem

type FollowingItem struct {
	Id        int   `json:id`
	CreatedAt int64 `json:"created_at"`
	Followee  User  `json:followee`
}

type List

type List struct {
	Id             int    `json:id`
	Title          string `json:title`
	ListFilmsCount int    `json:"list_films_count"`
	CreatedAt      int64  `json:"created_at"`
	UpdatedAt      int64  `json:"updated_at"`
	CanonicalUrl   string `json:"canonical_url"`
}

type LiveFilmScreening

type LiveFilmScreening struct {
	Film struct {
		Title     string `json:title`
		Year      int    `json:year`
		WebUrl    string `json:"web_url"`
		Directors string `json:directors`
	} `json:"film_programming"`
	Description string `json:description`
}

type MubiAPI

type MubiAPI struct {
	Client *http.Client
}

func NewMubiAPI

func NewMubiAPI() *MubiAPI

func (*MubiAPI) GetFavouriteFilms

func (api *MubiAPI) GetFavouriteFilms(userId int64, page int, perPage int) []FavouriteFilm

func (*MubiAPI) GetFilmsOfTheDay

func (api *MubiAPI) GetFilmsOfTheDay() []FilmOfTheDay

func (*MubiAPI) GetFollowers

func (api *MubiAPI) GetFollowers(userId int64, page int, perPage int) []FollowerItem

func (*MubiAPI) GetFollowing

func (api *MubiAPI) GetFollowing(userId int64, page int, perPage int) []FollowingItem

func (*MubiAPI) GetLists

func (api *MubiAPI) GetLists(userId int64, page int, perPage int) []List

func (*MubiAPI) GetLiveFilmScreening

func (api *MubiAPI) GetLiveFilmScreening() LiveFilmScreening

func (*MubiAPI) GetRatings

func (api *MubiAPI) GetRatings(userId int64, page int, perPage int) []Rating

func (*MubiAPI) GetResponseBody

func (api *MubiAPI) GetResponseBody(url string) []byte

func (*MubiAPI) GetWatchlist

func (api *MubiAPI) GetWatchlist(userId int64, page int, perPage int) []WatchlistItem

type Rating

type Rating struct {
	Overall   int   `json:overall`
	Timestamp int64 `json:"updated_at"`
	Film      Film  `json:film`
}

type User

type User struct {
	Id           int    `json:id`
	Name         string `json:name`
	CanonicalUrl string `json:"canonical_url"`
	AvartarUrl   string `json:"avatar_url"`
	Bio          string `json:bio`
	Subscriber   bool   `json:subscriber`
}

type WatchlistItem

type WatchlistItem struct {
	Timestamp int64 `json:"created_at"`
	Film      Film  `json:film`
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL