added ability to deal with mp3+g zip files
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
be8f8a328e
commit
e913f609bc
@ -3,10 +3,9 @@
|
||||
<configSections>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</configSections>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
|
||||
<connectionStrings>
|
||||
<add providerName="System.Data.SqlClient"
|
||||
connectionString="Data Source=tcp:herse.database.windows.net,1433;Initial Catalog=herse;Persist Security Info=True;User ID=herse;password=94diablo!" name="HerseDb"/>
|
||||
<add providerName="System.Data.SqlClient" connectionString="Data Source=tcp:herse.database.windows.net,1433;Initial Catalog=herse;Persist Security Info=True;User ID=herse;password=94diablo!" name="HerseDb" />
|
||||
</connectionStrings>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
|
||||
@ -34,14 +34,24 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="MaterialSkin, Version=0.0.3.3, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>lib\MaterialSkin.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing.Design" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@ -51,6 +61,10 @@
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="taglib-sharp, Version=2.1.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>lib\taglib-sharp.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MainForm.cs">
|
||||
@ -91,6 +105,9 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="lib\MaterialSkin.dll" />
|
||||
<Content Include="lib\taglib-sharp.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="lib\vlc\libvlc.dll" />
|
||||
<Content Include="lib\vlc\libvlccore.dll" />
|
||||
<Content Include="lib\vlc\plugins\access\libaccess_attachment_plugin.dll" />
|
||||
|
||||
29
KaraokePlayer/MainForm.Designer.cs
generated
29
KaraokePlayer/MainForm.Designer.cs
generated
@ -34,13 +34,13 @@
|
||||
this.btnBrowse = new MaterialSkin.Controls.MaterialRaisedButton();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.btnStop = new MaterialSkin.Controls.MaterialRaisedButton();
|
||||
this.btnPlayQueue = new MaterialSkin.Controls.MaterialRaisedButton();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.materialListBox1 = new MaterialSkin.Controls.MaterialListBox();
|
||||
this.materialSingleLineTextField1 = new MaterialSkin.Controls.MaterialSingleLineTextField();
|
||||
this.browseDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.btnStop = new MaterialSkin.Controls.MaterialRaisedButton();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.flowLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
@ -128,6 +128,19 @@
|
||||
this.flowLayoutPanel1.Size = new System.Drawing.Size(713, 43);
|
||||
this.flowLayoutPanel1.TabIndex = 6;
|
||||
//
|
||||
// btnStop
|
||||
//
|
||||
this.btnStop.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnStop.Depth = 0;
|
||||
this.btnStop.Location = new System.Drawing.Point(629, 3);
|
||||
this.btnStop.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.btnStop.Name = "btnStop";
|
||||
this.btnStop.Size = new System.Drawing.Size(81, 37);
|
||||
this.btnStop.TabIndex = 4;
|
||||
this.btnStop.Text = "Stop";
|
||||
this.btnStop.UseVisualStyleBackColor = true;
|
||||
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
|
||||
//
|
||||
// btnPlayQueue
|
||||
//
|
||||
this.btnPlayQueue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
@ -139,6 +152,7 @@
|
||||
this.btnPlayQueue.TabIndex = 3;
|
||||
this.btnPlayQueue.Text = "Play Queue";
|
||||
this.btnPlayQueue.UseVisualStyleBackColor = true;
|
||||
this.btnPlayQueue.Click += new System.EventHandler(this.btnPlayQueue_Click);
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
@ -215,19 +229,6 @@
|
||||
this.materialSingleLineTextField1.UseSystemPasswordChar = false;
|
||||
this.materialSingleLineTextField1.TextChanged += new System.EventHandler(this.materialSingleLineTextField1_TextChanged);
|
||||
//
|
||||
// btnStop
|
||||
//
|
||||
this.btnStop.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnStop.Depth = 0;
|
||||
this.btnStop.Location = new System.Drawing.Point(629, 3);
|
||||
this.btnStop.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.btnStop.Name = "btnStop";
|
||||
this.btnStop.Size = new System.Drawing.Size(81, 37);
|
||||
this.btnStop.TabIndex = 4;
|
||||
this.btnStop.Text = "Stop";
|
||||
this.btnStop.UseVisualStyleBackColor = true;
|
||||
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
||||
@ -6,14 +6,17 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Herse.Models;
|
||||
using System.IO.Compression;
|
||||
|
||||
namespace KaraokePlayer
|
||||
{
|
||||
public partial class MainForm : MaterialForm
|
||||
{
|
||||
HerseDb db = new HerseDb();
|
||||
private readonly MaterialSkinManager _materialSkinManager;
|
||||
private List<Song> _fileList;
|
||||
private Song currentSong = null;
|
||||
|
||||
private KaraokeVideoPlayer currentPlayer = null;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -37,12 +40,12 @@ namespace KaraokePlayer
|
||||
{
|
||||
if (browseDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||
{
|
||||
var files = GetFiles(browseDialog.SelectedPath, "*.cdg|*.mp4", searchOption: System.IO.SearchOption.AllDirectories);
|
||||
var filtered = files.Where(f => f.Length < 248).ToList();
|
||||
var files = GetFiles(browseDialog.SelectedPath, "*.cdg|*.mp4|*.zip", searchOption: System.IO.SearchOption.AllDirectories);
|
||||
var filtered = files.Where(f => f.Length < 248).ToList();
|
||||
|
||||
_fileList = filtered.Select(file => new Song(file)).ToList();
|
||||
_fileList = filtered.Select(file => CreateSongForPath(file)).ToList();
|
||||
materialListBox1.DataSource = _fileList;
|
||||
materialListBox1.DisplayMember = "FileName";
|
||||
materialListBox1.DisplayMember = "Description";
|
||||
|
||||
}
|
||||
}
|
||||
@ -78,12 +81,40 @@ namespace KaraokePlayer
|
||||
currentSong = file;
|
||||
if (file.Extension.ToLower() == "cdg")
|
||||
{
|
||||
karaokeCDGPlayer.Play(new Uri(Path.ChangeExtension(file.FullPath, ".mp3")));
|
||||
currentPlayer = karaokeCDGPlayer;
|
||||
karaokeCDGPlayer.Play(new Uri(Path.ChangeExtension(file.FullPath, ".mp3")));
|
||||
karaokeCDGPlayer.Visible = true;
|
||||
karaokeMP4Player.Visible = false;
|
||||
karaokeMP4Player.Stop();
|
||||
}
|
||||
else if (file.Extension.ToLower() == "zip")
|
||||
{
|
||||
string playPath = null;
|
||||
string extractPath = Path.Combine(Directory.GetCurrentDirectory(), "temp");
|
||||
DeleteDirectory(extractPath);
|
||||
Directory.CreateDirectory(extractPath);
|
||||
using (ZipArchive archive = ZipFile.OpenRead(file.FullPath))
|
||||
{
|
||||
foreach (ZipArchiveEntry entry in archive.Entries)
|
||||
{
|
||||
if (entry.FullName.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
playPath = Path.Combine(extractPath, entry.FullName);
|
||||
}
|
||||
entry.ExtractToFile(Path.Combine(extractPath, entry.FullName));
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrEmpty(playPath))
|
||||
{
|
||||
currentPlayer = karaokeCDGPlayer;
|
||||
karaokeCDGPlayer.Play(new Uri(playPath));
|
||||
karaokeCDGPlayer.Visible = true;
|
||||
karaokeMP4Player.Visible = false;
|
||||
karaokeMP4Player.Stop();
|
||||
}
|
||||
}
|
||||
else {
|
||||
currentPlayer = karaokeMP4Player;
|
||||
karaokeMP4Player.Play(new Uri(file.FullPath));
|
||||
karaokeMP4Player.Visible = true;
|
||||
karaokeCDGPlayer.Visible = false;
|
||||
@ -98,15 +129,41 @@ namespace KaraokePlayer
|
||||
|
||||
private void btnStop_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (currentSong == null) return;
|
||||
if (currentPlayer == null) return;
|
||||
currentPlayer.Stop();
|
||||
}
|
||||
|
||||
if (currentSong.Extension.ToLower() == "cdg")
|
||||
private Song CreateSongForPath(string path)
|
||||
{
|
||||
Song song = new Song(path);
|
||||
return song;
|
||||
}
|
||||
|
||||
public void DeleteDirectory(string target_dir)
|
||||
{
|
||||
if (!Directory.Exists(target_dir)) { return; }
|
||||
string[] files = Directory.GetFiles(target_dir);
|
||||
string[] dirs = Directory.GetDirectories(target_dir);
|
||||
|
||||
foreach (string file in files)
|
||||
{
|
||||
karaokeMP4Player.Stop();
|
||||
File.SetAttributes(file, FileAttributes.Normal);
|
||||
File.Delete(file);
|
||||
}
|
||||
else {
|
||||
karaokeCDGPlayer.Stop();
|
||||
|
||||
foreach (string dir in dirs)
|
||||
{
|
||||
DeleteDirectory(dir);
|
||||
}
|
||||
|
||||
Directory.Delete(target_dir, false);
|
||||
}
|
||||
|
||||
private void btnPlayQueue_Click(object sender, EventArgs e)
|
||||
{
|
||||
_fileList = db.Songs.Where(s => s.Id > 0).OrderBy(s=>s.Artist).ThenBy(s=>s.Title).ToList();
|
||||
materialListBox1.DataSource = _fileList;
|
||||
materialListBox1.DisplayMember = "Description";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
KaraokePlayer/lib/taglib-sharp.dll
Normal file
BIN
KaraokePlayer/lib/taglib-sharp.dll
Normal file
Binary file not shown.
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="EntityFramework" version="6.1.3" targetFramework="net46" />
|
||||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net46" />
|
||||
<package id="Microsoft.Bcl.Compression" version="3.9.85" targetFramework="net46" />
|
||||
</packages>
|
||||
Loading…
Reference in New Issue
Block a user