//public static void addMetaData() // Add the movie to the database? //{ // bool confirmed = false; // while (!confirmed) // { // Console.WriteLine("\n Add Movie metadata to MovieTable? Y or N "); // string YorN = Console.ReadKey().Key.ToString().ToUpper(); // while (YorN != "Y") { CycleThuFolders(MovieDirPath());} // Console.Write("\n\n Hit any key for Main Menu"); Console.ReadKey(); // Program.AppMainMenu(); // } //} // One by one, use folder names to derive movie name then prompt user if correct movie public static object CycleThuFolders(string movieDir) { List <string> folderNames = GetFolders.GetFolderNames(movieDir); //cycle through folderNames by hitting API then checking of good reponse foreach (string name in folderNames) { string newname = name; Console.WriteLine("\n Looking up movie: {0}", name); ResponseStrings OMDBResponse = OMDBWebRequest.GetOMDBWebRequest(name); while (OMDBResponse.Response == "False") { //OMDBResponse.newname = name; OMDBResponse = EditTitleLoop.TitleNotFound(name); } ; string mTitle = OMDBResponse.Title; string mYear = OMDBResponse.Year; string mActors = OMDBResponse.Actors; ResponseStrings OMDBResponse2 = EditTitleLoop.CorrectMovie(mTitle, mYear, mActors, name, OMDBResponse); AddMovie2Database(OMDBResponse2, movieDir); } return(null); }
public static ResponseStrings GetOMDBWebRequest(string name) { var webClient = new WebClient(); byte[] OMDBRequest = webClient.DownloadData(string.Format("http://www.omdbapi.com/?t={0}&apikey=3ab1833e&plot=full", name)); var jsonString = System.Text.Encoding.UTF8.GetString(OMDBRequest); ResponseStrings OMDBResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <ResponseStrings>(jsonString); return(OMDBResponse); }
//if title not found in API, direct user to edit title public static ResponseStrings TitleNotFound(string name) { Console.ForegroundColor = ConsoleColor.Red; Console.Write(" \'{0}\'", name); Console.ResetColor(); Console.Write(" was not found.\n"); ResponseStrings OMDBResponse = EditTitle(); return(OMDBResponse); }
// Insert Proprties of object holing OMDB API resonse // This dyanmially builds the SQL and uses Reflection and parameterization of object to avoid SQL Injection public static void InsertOBDMData(SQLiteConnection mDBconn, ResponseStrings OMDBResponse2) { SQLiteCommand mDBcmd = mDBconn.CreateCommand(); string cmdText = @"INSERT INTO MovieTable ("; string keyText = ""; string valText = ""; //create dictionary var OMDBDict = BuildDB.ObjectToDictionary(OMDBResponse2); //set up for creating sql command text mDBcmd.CommandType = CommandType.Text; for (int index = 0; index < OMDBDict.Count - 2; index++) { var item = OMDBDict.ElementAt(index); var itemKey = item.Key; string itemVal = item.Value.ToString(); if (index < OMDBDict.Count - 3) { keyText += itemKey + ", "; valText += "@" + itemKey + ", "; //"=" + itemKey + mDBcmd.Parameters.Add("@" + itemKey, DbType.AnsiString).Value = itemVal; Console.WriteLine(" Added to Database: " + itemKey + " = " + itemVal); } else { keyText += itemKey + " )"; valText += "@" + itemKey + " )"; //"=" + itemKey + mDBcmd.Parameters.Add("@" + itemKey, DbType.AnsiString).Value = itemVal; Console.WriteLine(" Added to Database: " + itemKey + " = " + itemVal); } } cmdText += keyText + " VALUES (" + valText + ";"; try { mDBcmd.CommandText = cmdText; mDBconn.Open(); mDBcmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException sx) { Console.Write(sx); //TODO: improve SQL error handling } finally { mDBconn.Close(); Console.WriteLine("\n Movie data insertion complete: " + OMDBResponse2.Title + "\n"); } }
//if user needs to correct the movie title public static ResponseStrings EditTitle() { Console.WriteLine("\n Please enter the correct movie title: "); Console.WriteLine(); string name = Console.ReadLine(); ResponseStrings OMDBResponse = OMDBWebRequest.GetOMDBWebRequest(name); string mTitle = OMDBResponse.Title; string mYear = OMDBResponse.Year; string mActors = OMDBResponse.Actors; CorrectMovie(mTitle, mYear, mActors, name, OMDBResponse); Console.WriteLine(OMDBResponse.Title, "EditTitleMethod"); return(OMDBResponse); }
//TEST Method to make List from API object properties static List <String> GetOMDBPropertyName(ResponseStrings OMDBReponse) { List <string> OMDResponseNames = new List <string>(); string label; Type t = OMDBReponse.GetType(); PropertyInfo[] props = t.GetProperties(); foreach (var prop in props) { label = prop.Name; if (prop.GetIndexParameters().Length == 0) { OMDResponseNames.Add(label); } } return(OMDResponseNames); }
private static bool AddMovie2Database(ResponseStrings OMDBResponse2, string movieDir) { //bool confirmed = false; //while (!confirmed) { Console.WriteLine("\n Add Movie metadata to MovieTable? Y or N "); string YorN = Console.ReadKey().Key.ToString().ToUpper(); if (YorN == "Y") { DBCommands.InsertOBDMData(DBCommands.CreateConnection(), OMDBResponse2); return(true); } // dynamically update table with omdResponse values else { Console.WriteLine("\n|n OK, on to next movie . . .\n"); return(false); } } }
//Show sample of returned API data for user verification public static ResponseStrings CorrectMovie(string mTitle, string mYear, string mActors, string name, ResponseStrings OMDBResponse) { Console.WriteLine("\n\tMovie found:\n\t Title: {0}\n\t Year: {1}\n\t Actors: {2}\n", mTitle, mYear, mActors); Console.WriteLine("\n\tDoes this look like the correct movie? Y or N "); ConsoleKeyInfo readKey; bool check = false; do { readKey = Console.ReadKey(true); check = !((readKey.Key == ConsoleKey.Y) || (readKey.Key == ConsoleKey.N)); } while (check); switch (readKey.Key) { case ConsoleKey.Y: break; case ConsoleKey.N: OMDBResponse = EditTitle(); //mTitle = OMDBResponse.Title; //mYear = OMDBResponse.Year; //mActors = OMDBResponse.Actors; //Console.WriteLine("CorrectMovieMethod"); //CorrectMovie(mTitle, mYear, mActors, name, OMDBResponse); break; } return(OMDBResponse); }