示例#1
0
        public static void TrimMp3(MusicItem sourceMp3, TimeSpan?begin, TimeSpan?end)
        {
            var outputPath = sourceMp3.FullFileName.Replace(Path.GetFileNameWithoutExtension(sourceMp3.FullFileName), $"{Path.GetFileNameWithoutExtension(sourceMp3.FullFileName)}_trimed");

            using (var reader = new Mp3FileReader(sourceMp3.FullFileName))
                using (var writer = File.Create(outputPath))
                {
                    Mp3Frame frame;
                    while ((frame = reader.ReadNextFrame()) != null)
                    {
                        if (reader.CurrentTime >= begin || !begin.HasValue)
                        {
                            if (reader.CurrentTime <= end || !end.HasValue)
                            {
                                writer.Write(frame.RawData, 0, frame.RawData.Length);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }
            sourceMp3.FullFileName = outputPath;
        }
示例#2
0
        public void AddMusicItem(MusicItem m)
        {
            var sqlItems = Get(m);

            SetInsertIntoSql(xmConsts.MusicItems, sqlItems);
            ExecuteSql();
        }
示例#3
0
 private void SaveFiles(IDatabaseProvider dbController, List <string> files)
 {
     foreach (var fi in files)
     {
         try
         {
             var      ii = TagLib.File.Create(fi);
             UltraID3 u  = new UltraID3();
             u.Read(fi);
             MusicItem ti = new MusicItem(ii, u);
             if (!dbController.Match(ti))
             {
                 dbController.AddMusicItem(ti);
                 cnt++;
                 ReportProgressOn();
             }
             else
             {
                 // similar file already exists in db
             }
         }
         catch (Exception ex)
         {
             // throw;
         }
     }
 }
示例#4
0
        public void AddToUsbList(MusicItem m)
        {
            var sqlItems = new SqlItemList();

            sqlItems.Add(new SqlItem("UserId", GlobalAppData.CurrentUser.Id));
            sqlItems.Add(new SqlItem("ItemId", m.Id));
            SetInsertIntoSql(xmConsts.UserUsbList, sqlItems);
            ExecuteSql();
        }
示例#5
0
        public void Update(MusicItem m)
        {
            var sqlItems = Get(m);

            SetUpdateSql(xmConsts.MusicItems, sqlItems, new SqlItemList {
                new SqlItem {
                    FieldName = "Id", FieldValue = m.Id
                }
            });
            ExecuteSql();
        }
示例#6
0
        private static SqlItemList Get(MusicItem m)
        {
            var sqlItems = new SqlItemList();

            sqlItems.Add(new SqlItem("Artist", m.Artist));
            sqlItems.Add(new SqlItem("FileName", m.FileName));
            sqlItems.Add(new SqlItem("FullFileName", m.FullFileName));
            sqlItems.Add(new SqlItem("MachineName", m.MachineName));
            sqlItems.Add(new SqlItem("Title", m.Title));
            //sqlItems.Add(new SqlItem("ToUsb", m.ToUsb));
            //sqlItems.Add(new SqlItem("ToPlaylist", m.ToPlaylist));
            return(sqlItems);
        }
        private static string destinationFolder = GlobalAppData.Configs.YoutubeDataFolder;// @"E:\Music\Music Helper Youtube Downloads";

        public static MusicItem DownloadAndConvert(string videoUrl)
        {
            var newPath = string.Empty;

            GlobalAppData.SetWait();
            try
            {
                var youtube = YouTube.Default;
                var vid     = youtube.GetVideo(videoUrl);
                newPath = Path.Combine(destinationFolder, vid.FullName);
                File.WriteAllBytes(newPath, vid.GetBytes());

                var inputFile = new MediaFile {
                    Filename = newPath
                };
                var outputFile = new MediaFile {
                    Filename = $"{newPath}.mp3"
                };

                using (var engine = new Engine())
                {
                    engine.GetMetadata(inputFile);
                    engine.Convert(inputFile, outputFile);
                    newPath = $"{newPath}.mp3";
                }
                File.Delete(inputFile.Filename);
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                GlobalAppData.EndWait();
            }
            var      ii = TagLib.File.Create(newPath);
            UltraID3 u  = new UltraID3();

            u.Read(newPath);
            MusicItem ti = new MusicItem(ii, u);

            return(ti);
        }
示例#8
0
 public bool Match(MusicItem m)
 {
     return(false);
 }