Import des seances et export avec api ecranvillage - rodinux/plannings_cinema GitHub Wiki
J'ai trouvé un code magique pour importer les films du site d'Ecran village en utilsant une gem httparty. L'api-ecranvillage donne une page en .json avec les films qui ont la catégorie "export". J'ai mis en place une page qui va récupérer ces films si ils n'existent pas encore dans l'applivcation avec leur description et avec leur id, ce qui va me permettre de créer des liens vers les pages du site. Voici le code
class FilmsController < ApplicationController
before_action :set_locale
def set_locale
I18n.locale = :fr
end
require 'httparty'
# GET /ecranvillage.json
def ecranvillage
@films = Film.all
response = HTTParty.get('http://www.ecranvillage.net/wp-json/ecranvillage-api/v2/export')
puts response.body, response.code, response.message, response.headers.inspect
JSON.parse(response.body).each do |item|
nouveaux_films = Film.new( :id => item["id"], :titrefilm => item["titrefilm"], :description => item["description"] )
nouveaux_films.save
end
end
end
<% response = HTTParty.get('http://www.ecranvillage.net/wp-json/ecranvillage-api/v2/export')%>
<% puts response.body, response.code, response.message, response.headers.inspect %>
<div class="container">
<center><h1>Importer les nouveaux Films</h1>
<h1><strong>Bravo, en arrivant ici, vous venez d'ajouter les Films à venir du site d'Ecranvillage</strong></h1></p>
<%= link_to 'Retour à la liste de films', films_path, :class => "btn btn-lg btn-success" %>
<h2>Liste des Films à venir sur le site d'Ecran Village</h2></center>
<strong><%= response.body %></strong>
</div>
<br>
response = HTTParty.get('http://www.ecranvillage.net/wp-json/ecranvillage-api/v2/export')
puts response.body, response.code, response.message, response.headers.inspect
json.array!(response)
Ensuite quand des séances vont être éditées sur l'application, l'api-ecranvillage va récupérer les séances éditées et les intégrées dans le site à partir de ces fichiers :
date_range = 2.month.ago..Date.today + 1
json.array!(@films.where(updated_at: date_range).order(created_at: :desc)) do |film|
json.extract! film, :id, :titrefilm, :description
json.url film_url(film, format: :json)
end
json.array!(@film.seances.order(horaire: :asc)) do |seance|
json.extract! seance, :id, :film_id, :version, :horaire, :village_id
end
json.extract! @village, :id, :salle, :espace
Elle peut récupérer les séances par film et par lieux avec tout les renseignements, pour cela sur le site Worpress d'Ecran village, il suffit de mettre un shortcode [seances] dans la page et dans la description et d'ajouter un champ personnalisé avec film_id et la valeur de l'id du film. Dans l'application l'id du film est égale à film_id des séances (association des tables).