Skip to content

afilhodaniel/cinepolis_api

Repository files navigation

Cinépolis API

Este é um projeto de código aberto que tem como objetivo manter uma API simples e funcional para que aplicações diversas possam consumir a programação de salas e horários de filmes em cartaz do Cinépolis, uma das maiores redes de cinema do país.

Tudo o que você precisa saber é que o projeto foi desenvolvido com Rails e é basicamente um parser do site oficial do Cinépolis. Então, acabei usando uma boa dose da fantástica gem Nokogiri e também um pouquinho da HTTParty.

Caso queira ver a API em ação, acesse: cinepolisapi.heroku.com. Sinta-se livre para contribuir como quiser. Toda ajuda será bem-vinda!

Recomendado

  • Ruby 2.3.0 ou superior

  • Rails 4.2.5.1

Iniciando

Clone este repositório:

git clone git@github.com:afilhodaniel/cinepolis_api

Instale as dependências necessárias:

bundle install

Requisições

  • GET /api/v1/states.json

  • GET /api/v1/states/:uf.json

  • GET /api/v1/cities.json

  • GET /api/v1/cities/:id.json

  • GET /api/v1/movie_theaters.json

  • GET /api/v1/movie_theaters/:id.json

  • GET /api/v1/movies.json

  • GET /api/v1/movies/:id.json

GET /api/v1/states.json

Retorna um JSON com todos os estados e suas cidades. Exemplo:

{
  states: [
    {
      uf: "AM",
      name: "Amazonas",
      url: "http://cinepolisapi.herokuapp.com:80/api/v1/states/am.json",
      cities: [
        {
          id: "29",
          name: "Manaus",
          url: "http://cinepolisapi.herokuapp.com:80/api/v1/cities/29.json"
        },
        ...
      ]
    },
    ...
  ]
}

GET /api/v1/states/am.json

Retorna um JSON com todas as cidades do estado requisitado. Exemplo:

{
  success: true,
  state: {
    uf: "AM",
    name: "Amazonas",
    url: "http://cinepolisapi.herokuapp.com:80/api/v1/states/am.json",
    cities: [
      {
        id: "29",
        name: "Manaus",
        url: "http://cinepolisapi.herokuapp.com:80/api/v1/cities/29.json",
      },
      ...
    ]
  }
}

GET /api/v1/cities.json

Retorna um JSON com todas as cidades e suas unidades de cinema. Exemplo:

{
  cities: [
    {
      id: "8",
      name: "Barueri - SP",
      url: "http://cinepolisapi.herokuapp.com:80/api/v1/cities/8.json",
      state: {
        uf: "SP",
        name: "São Paulo",
        url: "http://cinepolisapi.herokuapp.com:80/api/v1/states/sp.json"
      },
      movie_theaters: [
        {
          id: "8",
          name: "Cinépolis Iguatemi Alphaville",
          url: "http://localhost:3000/api/v1/movie_theaters/8.json"
        },
        {
          id: "22",
          name: "Cinépolis Parque Barueri",
          url: "http://localhost:3000/api/v1/movie_theaters/22.json"
        }
      ]
    },
    ...
  ]
}

GET /api/v1/cities/8.json

Retorna um JSON com todas as informações sobre a cidade requisitada e todas as suas unidades de cinema. Exemplo:

{
  success: true,
  city: {
    id: "8",
    name: "Barueri",
    url: "http://cinepolisapi.herokuapp.com:80/api/v1/cities/8.json",
    state: {
      uf: "SP",
      name: "São Paulo",
      url: "http://cinepolisapi.herokuapp.com:80/api/v1/states/sp.json"
    },
    movie_theaters: [
      {
        id: "8",
        name: "Cinépolis Iguatemi Alphaville",
        url: "http://cinepolisapi.herokuapp.com:80/api/v1/movie_theaters/8.json"
      },
      ...
    ]
  }
}

GET /api/v1/movie_theaters.json

Retorna um JSON com todas as unidades de cinema. Exemplo:

{
  movie_theaters: [
    {
      id: "8",
      name: "Cinépolis Iguatemi Alphaville"
      city: {
        id: "8",
        name: "Barueri - SP"
      },
      url: "http://localhost:3000/api/v1/movie_theaters/8.json"
    },
    {
      id: "22",
      name: "Cinépolis Parque Barueri",
      city: {
        id: "8",
        name: "Barueri - SP"
      },
      url: "http://localhost:3000/api/v1/movie_theaters/22.json"
    },
    ...
  ]
}

GET /api/v1/movie_theaters/:id.json

Retorna um JSON com a programação completa de salas e horários da unidade de cinema em questão. Exemplo:

{
  success: true,
  movie_theater: {
    name: "Cinépolis Parque Barueri",
    city: "Barueri-SP",
    weeks: [
      {
        from: "18/02",
        to: "24/02/2016",
        sessions: [
          {
            room: "1",
            movie: {
              name: "Deadpool",
              url: "http://localhost:3000/api/v1/movies/7160.json",
              pg: "16",
              subtitled: false,
              dubbed: true
            },
            hours: [
              "13h35",
              "16h15",
              "19h00",
              "21h45"
            ]
          },
          ...
        ]
      },
      ...
    ]
  }
}

GET /api/v1/movies.json

Retorna um JSON com todos os filmes em cartaz. Exemplo:

{
  movies: [
    {
      id: "7400",
      name: "13 Horas: Os Soldados Secretos de Benghazi",
      url: "http://localhost:3000/api/v1/movies/7400.json",
    },
    {
      id: "7142",
      name: "A 5ª Onda",
      url: "http://localhost:3000/api/v1/movies/7142.json"
    },
    ...
  ]
}

GET /api/v1/movies/:id.json

Retorna um JSON com todas as informações sobre o filme em questão e a programação completa de salas e horários de todas as unidades de cinema em que o filme está sendo exibido, organizada por cidade. Exemplo:

{
  success: true,
  movie: {
    id: "7400",
    image: "http://www.claquete.com/fotos/filmes/poster/7400_medio.jpg",
    trailer: "http://www.youtube.com/embed/aLKSUIXYE14",
    name: "13 Horas: Os Soldados Secretos de Benghazi",
    original_name: "13 Hours: The Secret Soldiers of Benghazi, 2015",
    pg: "14",
    sinopse: "O longa retratará o ataque terrorista que vitimou o embaixador dos Estados Unidos na Líbia em setembro de 2012, sob o ponto de vista de um oficial, vivido por John Krasinski, do grupo de elite da Marinha dos Estados Unidos.",
    cast: "John Krasinski, Dominic Fumusa, James Badge Dale, Max Martini, Pablo Schreiber, Alexia Barlier, David Costabile, Peyman Moaadi",
    director: "Michael Bay",
    cities: [
      {
        city: "Barueri-SP",
        movie_theaters: [
          {
            name: "Cinépolis Iguatemi Alphaville",
            url: "http://localhost:3000/api/v1/movie_theaters/8.json",
            sessions: [
              {
                room: "1",
                subtitled: true,
                dubbed: false,
                macroxe: false,
                vip: false,
                4dx: false,
                2d: false,
                hours: [
                  "15h00",
                  "18h15",
                  "21h30"
                ]
              },
              ...
            ]
          },
          ...
        ]
      },
      ...
    ]
  }
}

404

No caso de você solicitar algum recurso que não existe, a API retornará algo como isso:

{
  success: false,
  errors: {
    movie: "Movie doesn't exists"
  }
}

Outros Projetos

Também fiz outros projetos de API de outros cinemas. Todos seguem exatamente (ou quase) a mesma estrutura. Confira nos links abaixo:

Cinspaço API: github.com/afilhodaniel/cinespaco_api

Observações

  1. Você pode usar este projeto como bem entender. Mas sugiro não usar o deploy do Heroku citado mais acima. Trata-se de um deploy que eu fiz apenas para demonstrar o funcionamento da API. Faça seu próprio deploy, em um servidor profissional.

  2. Caso queria entender melhor sobre a estrutura do projeto, acesse: github.com/afilhodaniel/rails_app

About

API simples e funcional para consumir a programação de salas e horários de filmes em cartaz do Cinépolis, uma das maiores redes de cinema do país

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published