Exemple #1
0
        private void CopyToMP3()
        {
            // Time to clear lock
            Thread.Sleep(10000);


            if (lastTrack != null)
            {
                //Save last track to mp3

                var    configET = new MapperConfiguration(cfg => cfg.CreateMap <FullTrack, ExtTrack>());
                var    mapperET = configET.CreateMapper();
                string name     = CleanString(lastTrack.Name);
                int    remaster = name.IndexOf("- Remaster", StringComparison.CurrentCultureIgnoreCase);
                if (remaster > 0)
                {
                    name = name.Substring(0, remaster - 1);
                }
                else
                {
                    remaster = name.IndexOf("/ Remaster", StringComparison.CurrentCultureIgnoreCase);
                    if (remaster > 0)
                    {
                        name = name.Substring(0, remaster - 1);
                    }
                }

                remaster = name.IndexOf("Remaster", StringComparison.CurrentCultureIgnoreCase);
                if (remaster > 0)
                {
                    name = name.Substring(0, remaster - 1);
                }
                string artist = CleanString(lastTrack.Artists[0].Name);


                ExtTrack extTrack = mapperET.Map <ExtTrack>(lastTrack);
                extTrack.AddProps(name, artist, "");


                List <string> genres = DiscogCall(extTrack, txtAddGenres.Text);

                string directory   = GetMp3Path(extTrack);
                string fullPathMP3 = directory + @"\" + CleanString(extTrack.Filename) + ".mp3";
                Directory.CreateDirectory(directory);

                // LASTFM - genres dodgy?
                // extTrack.Year = LastFMCall(extTrack.OCName, extTrack.OCArtist);

                extTrack.TagGenres = genres.ToArray();

                // temporary workaround for problems with genres
                extTrack.TagGenres = new string[] { string.Join(",", extTrack.TagGenres) };

                using (var reader = new AudioFileReader(WAVPATH + (fileToCopy == 1 ? "thisTrack1.wav" : "thisTrack2.wav")))
                    using (var writer = new LameMP3FileWriter(fullPathMP3, reader.WaveFormat, BITRATE))
                        reader.CopyTo(writer);


                //tag mp3 file
                TagLib.File mp3 = TagLib.File.Create(fullPathMP3);
                mp3.Tag.Title        = extTrack.Filename;
                mp3.Tag.Performers   = extTrack.TagArtists;
                mp3.Tag.Album        = extTrack.Album.Name;
                mp3.Tag.AlbumArtists = extTrack.TagArtists;
                mp3.Tag.Genres       = extTrack.TagGenres;
                //mp3.Tag.Comment = "my comments, maybe some info about track";
                if (extTrack.Year != null)
                {
                    mp3.Tag.Year = (uint)extTrack.Year;
                }

                mp3.Save();
                mp3.Dispose();
            }
        }
Exemple #2
0
        private static List <string> DiscogCall(ExtTrack extTrack, string addGenre = "")
        {
            string url = "https://api.discogs.com/database/search?" + HttpUtility.UrlEncode(extTrack.OCName);

            if (extTrack.OCArtist != "")
            {
                url += "&artist=" + HttpUtility.UrlEncode(extTrack.OCArtist);
            }
            url += "&per_page=100&type=master";

            HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);

            myReq.Headers["Authorization"] = "Discogs key=" + DISCOGS_CONSUMERKEY + ", secret=" + DISCOGS_CONSUMERSECRET;
            myReq.UserAgent = "MyGenres/1.0 +http://martinharran.com";
            WebResponse  wr            = myReq.GetResponse();
            Stream       receiveStream = wr.GetResponseStream();
            StreamReader reader        = new StreamReader(receiveStream, Encoding.UTF8);
            string       content       = reader.ReadToEnd();
            int          trackYear     = 3000;

            DiscogsResult result = DiscogsResult.FromJson(content);
            List <string> genres = new List <string>();

            if (addGenre != "")
            {
                genres.Add(addGenre);
            }

            if (result != null)
            {
                if (result.Results != null)
                {
                    for (int i = 0; i < result.Results.Count(); i++)
                    {
                        Result r = result.Results[i];
                        if (r.Country != null)
                        {
                            if (r.Country.ToUpper() == "UK" ||
                                r.Country.ToUpper() == "US" ||
                                r.Country.ToUpper() == "Europe"
                                )
                            {
                                if (r.Style != null)
                                {
                                    for (int g = 0; g < r.Style.Count(); g++)
                                    {
                                        string style = r.Style[g];
                                        //string style = r.Style[g].ToString().Replace(" ", "_");

                                        var match = genres.FirstOrDefault(stringToCheck => stringToCheck.Contains(style));

                                        if (match == null)
                                        {
                                            genres.Add(style);
                                        }
                                    }
                                }
                            }
                        }
                        if (r.Year != null)
                        {
                            if (extTrack.Year == null)
                            {
                                extTrack.Year = (int)r.Year;
                            }
                            else if (r.Year < trackYear)
                            {
                                extTrack.Year = (int)r.Year;
                            }
                        }
                    }
                }
            }

            return(genres);
        }
        public static string GetMp3Path(ExtTrack track)
        {
            string path = @"F:\TestAudio\" + track.OCArtist + @"\" + CleanString(track.Album.Name);

            return(path);
        }