示例#1
0
        private void InputLrc_Click(object sender, RoutedEventArgs e)
        {
            // 选择文件
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter = "Lrc|*.lrc|Text|*.txt|所有文件|*.*";
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                LrcPath = dlg.FileName;
                Title   = "Lrc Editor - " + dlg.FileName;
                LrcObject Lrc = new LrcObject();
                LrcAdapter.ReadFromFile(ref Lrc, LrcPath);
                LrcHeaders = Lrc.LrcHeaders;

                DataRow dr = null;
                foreach (LrcLine line in Lrc.LrcLines)
                {
                    dr    = dt.NewRow();
                    dr[0] = Time2String(line.Time);
                    dr[1] = line.Text;
                    dt.Rows.Add(dr);
                }

                SetInfo.IsEnabled = true;
            }
        }
示例#2
0
        public static void ReadFromFile(ref LrcObject lrc, string path)
        {
            string pattern = @"((\[\d{1,2}\:\d{1,2}\.\d{2,3}\])|(\[\d{1,2}\:\d{1,2}\]))+";

            using (StreamReader reader = new StreamReader(path))
            {
                string temp;
                while ((temp = reader.ReadLine()) != null)
                {
                    // 歌词
                    if (Regex.IsMatch(temp, pattern))
                    {
                        foreach (LrcLine line in LrcLine.Pause(temp))
                        {
                            lrc.LrcLines.Add(line);
                        }
                    }
                    // 信息
                    else if (Regex.IsMatch(temp, LrcHeader.FormatString))
                    {
                        LrcHeader header = LrcHeader.Pause(temp);
                        lrc.LrcHeaders[(int)header.HeaderType].Text = header.Text;
                    }
                    // 其他则跳过
                    else
                    {
                        continue;
                    }
                }
            }
        }
示例#3
0
        public void TestWriteMethod()
        {
            LrcObject lrc = new LrcObject();

            lrc.LrcHeaders[(int)LrcHeader.Type.AR].Text     = "AR";
            lrc.LrcHeaders[(int)LrcHeader.Type.AL].Text     = "AL";
            lrc.LrcHeaders[(int)LrcHeader.Type.BY].Text     = "BY";
            lrc.LrcHeaders[(int)LrcHeader.Type.TI].Text     = "TI";
            lrc.LrcHeaders[(int)LrcHeader.Type.OFFSET].Text = "OFFSET";
            lrc.LrcLines.Add(new LrcLine(new TimeSpan(0, 0, 0, 0, 0), "This is a test."));
            LrcAdapter.WriteToFile(ref lrc, @"..\..\..\LrcLib\TestWrite.lrc");
        }
示例#4
0
        private void FormatSaveFunc(string path)
        {
            // if (DataView.Items.Count == 0) return;
            List <LrcLine> Lines = new List <LrcLine>();

            foreach (DataRow dr in dt.Rows)
            {
                Lines.Add(LrcLine.Pause("[" + dr[0] + "]" + dr[1])[0]);
            }

            LrcObject lrc = new LrcObject();

            lrc.LrcHeaders = this.LrcHeaders;
            lrc.LrcLines   = Lines;
            LrcAdapter.WriteToFile(ref lrc, path);
        }
示例#5
0
        public static void WriteToFile(ref LrcObject lrc, string path)
        {
            using (StreamWriter writer = new StreamWriter(path))
            {
                foreach (LrcHeader header in lrc.LrcHeaders)
                {
                    writer.WriteLine(header.ToString());
                }

                foreach (LrcLine line in lrc.LrcLines)
                {
                    writer.WriteLine(line.ToString());
                }
                writer.Flush();
            }
        }
示例#6
0
        public void TestReadMethod()
        {
            LrcObject lrc = new LrcObject();

            LrcAdapter.ReadFromFile(ref lrc, @"..\..\..\LrcLib\TestRead.lrc");
            Console.WriteLine("AR:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.AR].Text);
            Console.WriteLine("AL:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.AL].Text);
            Console.WriteLine("BY:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.BY].Text);
            Console.WriteLine("TI:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.TI].Text);
            Console.WriteLine("OFFSET:\t{0}", lrc.LrcHeaders[(int)LrcHeader.Type.OFFSET].Text);

            Console.WriteLine("Time\tText");
            foreach (LrcLine line in lrc.LrcLines)
            {
                Console.WriteLine("{0}\t{1}", LrcLine.TimeToString(line.Time), line.Text);
            }
        }