Exemplo n.º 1
0
 /// <summary>
 /// Constructeur
 /// </summary>
 /// <param name="context">DbContext de la base de données à traiter</param>
 /// <param name="styles">Styles à ajouter</param>
 /// <param name="titres">Titres à ajouter</param>
 /// <param name="artistes">Artistes à ajouter</param>
 /// <param name="commentaires">Commentaires à ajouter</param>
 public LocalSeeder(WebzineDbContext context, List <Style> styles, List <Titre> titres, List <Artiste> artistes, List <Commentaire> commentaires, List <LienStyle> lienStyles, List <Pays> pays)
 {
     _dbContext    = context;
     _styles       = styles;
     _titres       = titres;
     _artistes     = artistes;
     _pays         = pays;
     _commentaires = commentaires;
     _lienStyles   = lienStyles;
 }
Exemplo n.º 2
0
 /// <summary>
 /// Constructeur
 /// </summary>
 /// <param name="context">DbContext de la base de données à traiter</param>
 public LocalSeeder(WebzineDbContext context)
 {
     _dbContext    = context;
     _styles       = new List <Style>();
     _titres       = new List <Titre>();
     _artistes     = new List <Artiste>();
     _pays         = new List <Pays>();
     _commentaires = new List <Commentaire>();
     _lienStyles   = new List <LienStyle>();
 }
Exemplo n.º 3
0
        public static void Initialize(WebzineDbContext context)
        {
            using (var transaction = context.Database.BeginTransaction())
            {
                foreach (Style style in FactoryStyle.Styles)
                {
                    style.TitresStyles = null;
                    context.Styles.Add(style);
                }

                context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT Style ON");
                context.SaveChanges();
                context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT Style OFF");
                context.SaveChanges();

                transaction.Commit();
            }

            using (var transaction = context.Database.BeginTransaction())
            {
                foreach (Artiste artiste in FactoryArtiste.Artistes)
                {
                    artiste.Titres = null;
                    context.Artistes.Add(artiste);
                }

                context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT Artiste ON");
                context.SaveChanges();
                context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT Artiste OFF");
                context.SaveChanges();

                transaction.Commit();
            }

            using (var transaction = context.Database.BeginTransaction())
            {
                foreach (Titre titre in FactoryTitre.Titres)
                {
                    titre.Commentaires = null;
                    titre.TitresStyles = null;
                    titre.Artiste      = null;
                    context.Titres.Add(titre);
                }

                context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT Titre ON");
                context.SaveChanges();
                context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT Titre OFF");
                context.SaveChanges();

                transaction.Commit();
            }

            using (var transaction = context.Database.BeginTransaction())
            {
                foreach (Commentaire commentaire in FactoryCommentaire.Commentaires)
                {
                    commentaire.Titre = null;
                    context.Commentaires.Add(commentaire);
                }

                context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT Commentaire ON");
                context.SaveChanges();
                context.Database.ExecuteSqlCommand(@"SET IDENTITY_INSERT Commentaire OFF");
                context.SaveChanges();

                transaction.Commit();
            }

            using (var transaction = context.Database.BeginTransaction())
            {
                foreach (TitreStyle titreStyle in FactoryTitreStyle.TitreStyles)
                {
                    titreStyle.Titre = null;
                    titreStyle.Style = null;
                    context.TitresStyles.Add(titreStyle);
                }
                context.SaveChanges();

                transaction.Commit();
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Seed database depuis une playlist Spotify
        /// </summary>
        /// <param name="database">DbContext de la base de données à seeder</param>
        /// <param name="playlist">Playlist à ajouter</param>
        /// <returns>Objet contenant les données à seeder</returns>
        public Seeder SeedFromPlaylist(WebzineDbContext database, SpotifyPlaylist playlist)
        {
            // Initialisation des listes
            List <Titre>   titres   = new List <Titre>();
            List <Artiste> artistes = new List <Artiste>();
            List <Style>   styles   = new List <Style> {
                new Style {
                    LienStyle = new List <LienStyle>(), Libelle = "Spotify", IdStyle = 1
                }
            };

            // Récupération du style Spotify
            var spotifyStyle = styles.FirstOrDefault(s => s.Libelle == "Spotify");

            // Pour chacune des musiques récupérées dans la Playlist (depuis l'API Spotify)
            playlist.Tracks.Items.ForEach(track =>
            {
                // Initialisation des objets titres/artistes
                Titre ttr   = new Titre();
                Artiste art = new Artiste();

                // Récupération des valeurs depuis l'objet Spotify
                ttr.Libelle      = track.Track.Name;
                ttr.Album        = track.Track.Album.Name;
                ttr.Chronique    = "Chronique de base pour la musique " + ttr.Libelle;
                ttr.Commentaires = new List <Commentaire>();
                ttr.DateCreation = DateTime.Now;
                ttr.DateSortie   = DateTime.Parse(track.AddedAt);
                ttr.Duree        = track.Track.Duration / 1000;
                // Si l'artiste existe déjà en base, récupération
                if (artistes.Exists(a => a.Nom == track.Track.Artists[0].Name))
                {
                    ttr.Artiste   = artistes.FirstOrDefault(a => a.Nom == track.Track.Artists[0].Name);
                    ttr.IdArtiste = ttr.Artiste.IdArtiste;
                }
                // Sinon création de l'artiste
                else
                {
                    art.Nom        = track.Track.Artists[0].Name;
                    art.Biographie = "Biographie de " + art.Nom;
                    art.Titres     = new List <Titre>();
                    artistes.Add(art);
                    ttr.IdArtiste = art.IdArtiste;
                    ttr.Artiste   = art;
                }

                // Si Spotify à bien renvoyé une jaquette pour ce titre
                if (track.Track.Album.Images != null && track.Track.Album.Images.Count > 0)
                {
                    // Attribution
                    ttr.UrlJaquette = track.Track.Album.Images[0].Url;
                }

                // Sinon, initialisé en string vide, les views afficheront une image par défaut (dans wwwroot)
                else
                {
                    ttr.UrlJaquette = "";
                }

                // Si jamais un Uri d'écoute est envoyé
                if (track.Track.SpotifyUri != null)
                {
                    // Et est valide
                    if (track.Track.SpotifyUri.Contains("spotify:track:"))
                    {
                        // Construction de l'URL d'écoute pour le Widget (Dans la page Titre)
                        ttr.UrlEcoute = "https://open.spotify.com/embed/track/" + track.Track.SpotifyUri.Split("spotify:track:")[1];
                    }
                    else
                    {
                        ttr.UrlEcoute = "";
                    }
                }
                else
                {
                    ttr.UrlEcoute = "";
                }
                ttr.NbLectures = 0;
                ttr.NbLikes    = 0;

                // Ajout du titre dans la liste
                titres.Add(ttr);
            });

            // Intègre les styles dans les musiques
            artistes.ForEach(artist =>
            {
                artist.Titres = titres.Where(t => t.Artiste.Nom == artist.Nom).ToList();
            });

            // Ajout des listes en bases
            artistes.ForEach(a => database.Artistes.Add(a));
            styles.ForEach(s => database.Styles.Add(s));
            titres.ForEach(t => database.Titres.Add(t));

            return(new Seeder()
            {
                Artistes = artistes, Titres = titres, Styles = styles
            });
        }
Exemplo n.º 5
0
        /// <summary>
        /// Feed the database with spotify api data
        /// </summary>
        /// <param name="context">context of datas</param>
        public static void Initialize(WebzineDbContext context)
        {
            string client_id     = "d9e99f5831b940a5b3b59efd7f119e69"; // Your client id
            string client_secret = "76cd2a308f10479195200861cf25c5e4"; // Your secret
            string accesToken    = GetAccessToken(client_id, client_secret);

            List <string> artistsIds = new List <string>()
            {
                "3NH8t45zOTqzlZgBvZRjvB", "7p0odCZxOVz684NjXt1dEf", "2RJBv9wXbW6m539q9NOfW1", "4OV6uYSnHxSYkjDYuBVBUz", "3QVolfxko2UyCOtexhVTli", "0GOx72r5AAEKRGQFn3xqXK", "7IlRNXHjoOCgEAWN5qYksg", "4sbXXFzEWJY2zsZjelerjX", "5mmEMfYChd6MImBagU7zCs", "3YwqjMyrRfuixi2pbgTGCE"
            };

            Style spotifyStyle = new Style()
            {
                Libelle      = "spotify provided",
                TitresStyles = new List <TitreStyle>()
            };

            context.Add <Style>(spotifyStyle);
            context.SaveChanges();

            foreach (string artistId in artistsIds)
            {
                string uriArtists  = $"https://api.spotify.com/v1/artists/{artistId}/top-tracks?country=FR";
                var    artistsTxt  = Get(uriArtists, accesToken);
                var    artistsJson = JsonConvert.DeserializeObject <dynamic>(artistsTxt);

                Artiste artist = new Artiste()
                {
                    Nom        = artistsJson["tracks"][0]["artists"][0]["name"],
                    Biographie = "Vers acteurs aux clapotements criards cotons les ces ou plus vrai la et et jour comme l'horizon l'europe ces par échouages fini pareille et l'ouragan cotons marées un des les clabaudeurs voiliers aux ravie d'ineffables sanglot fleurs taché des aux million vers poissons impassibles a et les cloués des et colombes violettes et ivre mes florides un sur jaune insoucieux amer de voir circulation tendus pénétra tout anglais flottaison bords délirants appelle nuit aux qui quille au chanteurs qu'un soir restais flamands pourrit île bruns noire immobilités cru flot victimes noyés de embaumé l'assaut glaciers la courants des de restais",
                    Titres     = new List <Titre>()
                };

                context.Add <Artiste>(artist);
                context.SaveChanges();
                Artiste newArtiste = context.Artistes.FirstOrDefault(a => a.Nom == artist.Nom);

                foreach (var artistTracks in artistsJson["tracks"])
                {
                    DateTime dateCreation = DateTime.Now;

                    if (artistTracks["album"]["release_date_precision"] == "day")
                    {
                        dateCreation = Convert.ToDateTime(artistTracks["album"]["release_date"]);
                    }
                    else if (artistTracks["album"]["release_date_precision"] == "month")
                    {
                        dateCreation = Convert.ToDateTime(artistTracks["album"]["release_date"] + "/01");
                    }
                    else if (artistTracks["album"]["release_date_precision"] == "year")
                    {
                        dateCreation = new DateTime(int.Parse(artistTracks["album"]["release_date"]), 1, 1);
                    }

                    Titre titre = new Titre()
                    {
                        //Artiste = artist,
                        Album        = artistTracks["album"]["name"],
                        Chronique    = "Des les épais aux porteur de volets florides et courais plein des figements sourd a délirants que cheveux nuits bruns flots poissons écroulement dans sillage t'exiles je frele froide roulis roulis ce en a geindre figements bleuités lorsqu'a ailé de ces montant mystiques rut je bouchon sur vogueur comme dormir ces sanglot d'horreurs les cieux froide sentant ciel est-ce lava leur hystériques gouffres yeux nuits je dans travers je ou pôles et que léviathan puis de tout dans sont - ou roulant bateau plus de descendais des et phosphores d'or choient gouffres éternel mois seves chair t'exiles de je poissons",
                        Commentaires = new List <Commentaire>(),
                        DateCreation = DateTime.Now,
                        DateSortie   = dateCreation,
                        Duree        = artistTracks["duration_ms"] / 1000,
                        IdArtiste    = artist.IdArtiste,
                        Libelle      = artistTracks["name"],
                        NbLectures   = 0,
                        NbLikes      = 0,
                        TitresStyles = new List <TitreStyle>(),
                        UrlEcoute    = artistTracks["preview_url"],
                        UrlJaquette  = artistTracks["album"]["images"][1]["url"]
                    };

                    context.Add <Titre>(titre);
                    context.SaveChanges();

                    TitreStyle titreStyle = new TitreStyle()
                    {
                        IdStyle = spotifyStyle.IdStyle,
                        IdTitre = titre.IdTitre,
                        //Style = spotifyStyle,
                        //Titre = titre
                    };

                    context.Add <TitreStyle>(titreStyle);
                    context.SaveChanges();
                }
            }
        }