Play List Check

using System;
using System.IO;
using System.Text;
 
namespace PlayListCheck
{
	class Program
	{
		static void Main(string[] args)
		{
			if (args.Length != 1)
			{
				Console.Write(
					"Usage: PlayListCheck directory" + Environment.NewLine +
					"       PlayListCheck file.m3u" + Environment.NewLine +
					Environment.NewLine +
					"If a directory is specified, all .m3u files in that directory will be checked."+ Environment.NewLine
				);
				Environment.Exit(1);
			}
 
			FileInfo[] playListFiles = null;
 
			if (Directory.Exists(args[0]))
				playListFiles = new DirectoryInfo(args[0]).GetFiles("*.m3u");
			else if (File.Exists(args[0]))
				playListFiles = new FileInfo[] {new FileInfo(args[0])};
			else
			{
				Console.Error.WriteLine("'{0}' is not a valid directory or play list file.", args[0]);
				Environment.Exit(-1);
			}
 
			foreach (FileInfo playListFile in playListFiles)
			{
				Console.WriteLine(playListFile.Name);
 
				using (StreamReader sr = new StreamReader(playListFile.FullName, Encoding.Default))
				{
					string line;
					while ((line = sr.ReadLine()) != null)
					{
						if (!line.StartsWith("#EXT", StringComparison.InvariantCultureIgnoreCase))
						{
							string filename = Path.Combine(playListFile.DirectoryName, line);
							if (!File.Exists(filename))
								Console.WriteLine("  Missing: {0}", filename);
						}
					}
				}
			}
		}
	}
}