Exemplo n.º 1
0
        /// <summary>
        /// Returns the finished version of the series if it exists. If no series with status=finished could be found, it returns null.
        /// </summary>
        /// <param name="SerieName">The name of the series</param>
        /// <returns></returns>
        public static CLSerie GetFinishedSerie(string SerieName)
        {
            ConfigurationManager manager = new ConfigurationManager();

            if (File.Exists(LocalSeriesPath + SerieName + ".json"))
            {
                string JsonString = File.ReadAllText(LocalSeriesPath + SerieName + ".json");

                CLSerie Serie = manager.GetSeriesFromJson(JObject.Parse(JsonString));
                if (Serie.status == "finished")
                {
                    return(Serie);
                }
            }
            else
            {
                string  JStrSerie = manager.GetOneSerie(SerieName);
                CLSerie Serie     = manager.GetSeriesFromJson((JObject)JObject.Parse(JStrSerie)["data"][0]);
                if (Serie.status == "finished")
                {
                    return(Serie);
                }
            }
            return(null);
        }
Exemplo n.º 2
0
        void UpdateTextBoxAutoComplete()
        {
            AutoCompleteStringCollection COLSeries = new AutoCompleteStringCollection();

            ConfigurationManager manager = new ConfigurationManager();

            DirectoryInfo info = new DirectoryInfo(StaticInfo.LocalSeriesPath);

            foreach (FileInfo file in info.GetFiles())
            {
                JObject JOserie = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(File.ReadAllText(StaticInfo.LocalSeriesPath + file.Name));
                CLSerie serie   = manager.GetSeriesFromJson(JOserie);
                COLSeries.Add(serie.name);
            }

            //#1 start: Adds autocompletion options to the textbox. They are taken from the GetSerieNames method which gets it from
            //the database
            if (StaticInfo.CurrentDatabase != null)
            {
                List <string> serieNames = GetSerieNames();

                foreach (string name in serieNames)
                {
                    if (!COLSeries.Contains(name))
                    {
                        COLSeries.Add(name);
                    }
                }
            }
            //#1 end.

            txt_Search.AutoCompleteCustomSource = COLSeries;
        }
Exemplo n.º 3
0
        private void lstVIew_ItemActivated(object sender, EventArgs e)
        {
            //This is needed incase the user tries to select multiple series and press ENTER, you can only upload one serie at a time.
            if (StaticInfo.CurrentDatabase == null)
            {
                MessageBox.Show("There doesent seem to be a functional database configured. Please configure one and try again.");
                return;
            }
            if (string.IsNullOrWhiteSpace(StaticInfo.CurrentDatabase.DatabaseName))
            {
                MessageBox.Show("There doesent seem to be a functional database configured. Please configure one and try again.");
                return;
            }

            if (lstView_SeriesFromAPI.SelectedItems.Count > 1)
            {
                MessageBox.Show("Vennligst bare velg en ting du vil laste opp");
                return;
            }
            if (lstView_SeriesFromAPI.SelectedItems.Count == 0)
            {
                MessageBox.Show("Vennligst velg en ting du vil laste opp");
                return;
            }
            CLSerie   serie     = currentList.Find(x => x.name == lstView_SeriesFromAPI.SelectedItems[0].Name);
            AddSeries addSeries = new AddSeries(serie);

            addSeries.ShowDialog();
        }
        /// <summary>
        /// returns all the databases in the Settings
        /// working or not. GetFunctionalDatabases() only returns functional databases
        /// </summary>
        /// <returns>All databases in the Settings.txt file, connectable or not</returns>

        public List <CLSerie> GetSeries(string SearchQuery)
        {
            HttpClient client = new HttpClient();

            List <CLSerie> Series = new List <CLSerie>();

            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/vnd.api+json"));
            using (HttpResponseMessage response = client.GetAsync("https://kitsu.io/api/edge/anime?filter[text]=" + SearchQuery).Result)
            {
                if (response.IsSuccessStatusCode)
                {
                    var     x          = response.Content.ReadAsStringAsync();
                    JObject y          = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(x.Result);
                    var     FirstSerie = y.Children().Children().Children().ToArray();
                    foreach (JToken child in FirstSerie)
                    {
                        try
                        {
                            JObject child2 = (JObject)child;
                            if (child2.TryGetValue("id", out JToken JSerie))
                            {
                                //Write child2 to file and use GetSeriesFromJson(JObject JSerie) to read it again.

                                CLSerie add = GetSeriesFromJson(child2);
                                Series.Add(add);
                                if (add.status != "finished")
                                {
                                    List <string> SeriesToCheck = new List <string>();
                                    JArray        jArray        = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(File.ReadAllText(StaticInfo.CheckSeriesPath));
                                    if (jArray != null)
                                    {
                                        foreach (var jToken in jArray)
                                        {
                                            SeriesToCheck.Add(jToken.ToString());
                                        }
                                    }
                                    if (!SeriesToCheck.Contains(add.name))
                                    {
                                        SeriesToCheck.Add(add.name);
                                    }
                                    string writeToFile = Newtonsoft.Json.JsonConvert.SerializeObject(SeriesToCheck);
                                    File.WriteAllText(StaticInfo.CheckSeriesPath, writeToFile);
                                }
                                File.WriteAllText(StaticInfo.FolderPath + "Series\\" + add.name + ".json", child2.ToString());
                            }
                        }
                        catch (Exception ex)
                        {
                            //The conversion might fail it there is only one item in child etc. This happends every time so we just try catch the expected error.
                        }
                    }
                }
            }

            return(Series);
        }
        public CLSerie GetSeriesFromJson(JObject JSerie)
        {
            JToken attributes = JSerie.GetValue("attributes");

            JObject jObject = (JObject)attributes;

            CLSerie add = Newtonsoft.Json.JsonConvert.DeserializeObject <CLSerie>(jObject.ToString());

            add.linkToEpisodes = JSerie.SelectToken("relationships.episodes.links.related").ToString();

            add.linkToGenres = JSerie.SelectToken("relationships.genres.links.related").ToString();

            return(add);
        }
        //public void UpdateDBEntry(List<CLSerie> Serie)
        //{
        //    DatabaseConfiguration dbconf = new DatabaseConfiguration();
        //    MySqlConnection con = new MySqlConnection(dbconf.GetConnectionstring());
        //    MySqlCommand cmd = new MySqlCommand();
        //    string SQL = "UPDATE Series(EpisodeName,EpisodeCount,AgeRating,NSFW,Synopsis,TotalShowLength,EpisodeLength,EpisodeNumber,SeasonNumber,ShowName,TimeStamp,Genres,Status) " +
        //        "VALUES(@Name,@EpisodeCount,@AgeRating,@NSFW,@Synopsis,@TotalShowLength,@Length,@EpisodeNumber,@SeasonNumber,@ShowName,@TimeStamp,@Genres,@Status),(";

        //    MySqlParameter parName = new MySqlParameter()
        //    {
        //        ParameterName = "@Name",
        //        Value = Serie.episodeName
        //    };
        //    cmd.Parameters.Add(parName);
        //    MySqlParameter parEpisodeCount = new MySqlParameter()
        //    {
        //        ParameterName = "@EpisodeCount",
        //        Value = Serie.episodeCount
        //    };
        //    cmd.Parameters.Add(parEpisodeCount);
        //    MySqlParameter parAgeRating = new MySqlParameter()
        //    {
        //        ParameterName = "@AgeRating",
        //        Value = Serie.ageRating
        //    };
        //    cmd.Parameters.Add(parAgeRating);
        //    MySqlParameter parNSFW = new MySqlParameter()
        //    {
        //        ParameterName = "@NSFW",
        //        Value = Serie.NSFW
        //    };
        //    cmd.Parameters.Add(parNSFW);
        //    MySqlParameter parSynopsis = new MySqlParameter()
        //    {
        //        ParameterName = "@Synopsis",
        //        Value = Serie.synopsis
        //    };
        //    cmd.Parameters.Add(parSynopsis);
        //    MySqlParameter parTotalShowLength = new MySqlParameter()
        //    {
        //        ParameterName = "@TotalShowLength",
        //        Value = Serie.totalLength
        //    };
        //    cmd.Parameters.Add(parTotalShowLength);
        //    MySqlParameter parLength = new MySqlParameter()
        //    {
        //        ParameterName = "@Length",
        //        Value = Serie.length
        //    };
        //    cmd.Parameters.Add(parLength);
        //    MySqlParameter parEpisodeNumber = new MySqlParameter()
        //    {
        //        ParameterName = "@EpisodeNumber",
        //        Value = Serie.EpisodeNumber
        //    };
        //    cmd.Parameters.Add(parEpisodeNumber);
        //    MySqlParameter parSeasonNumber = new MySqlParameter()
        //    {
        //        ParameterName = "@SeasonNumber",
        //        Value = Serie.seasonNumber
        //    };
        //    cmd.Parameters.Add(parSeasonNumber);
        //    MySqlParameter parShowName = new MySqlParameter()
        //    {
        //        ParameterName = "@ShowName",
        //        Value = Serie.name
        //    };
        //    cmd.Parameters.Add(parShowName);
        //    MySqlParameter parGenres = new MySqlParameter()
        //    {
        //        ParameterName = "@Genres",
        //        Value = Serie.genres
        //    };
        //    cmd.Parameters.Add(parGenres);
        //    MySqlParameter parStatus = new MySqlParameter()
        //    {
        //        ParameterName = "@Status",
        //        Value = Serie.status
        //    };

        //    SQL += " WHERE ID = '" + Serie.DBID.ToString() + "'";
        //}



        public List <CLEpisode> GetEpisodes(CLSerie serie, int startEpisode, int endEpisode)
        {
            HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/vnd.api+json"));
            List <CLEpisode> CLEpisodes = new List <CLEpisode>();
            int Episodes  = AmountBetweenNumbers(startEpisode, endEpisode);
            int RunXTimes = AmountOfTimes(Episodes);
            int offset;

            if (startEpisode == 0)
            {
                offset = 0;
            }
            else
            {
                offset = startEpisode - 1;
            }

            for (int i = 0; RunXTimes > i; i++)
            {//There are a bunch of integers going up and down, look into it and figure it out if nessecary. That will be just as hard as me trying to explain wtf is
                //going on.
                int Limitint = LowerIntTo20(Episodes);
                Episodes -= Limitint;
                string Link = serie.linkToEpisodes + "?&[page]offset=" + offset + "&[page]limit=" + Limitint.ToString();
                using (HttpResponseMessage response = client.GetAsync(Link).Result)
                {
                    offset += Limitint;
                    if (response.IsSuccessStatusCode)
                    {
                        Task <string> jsonString        = response.Content.ReadAsStringAsync();
                        string        ree               = jsonString.Result;
                        JToken        allEpisodesToken  = JObject.Parse(ree).SelectToken("data");
                        JArray        AllEpisodesJArray = (JArray)allEpisodesToken;
                        foreach (JObject episode in AllEpisodesJArray)
                        {
                            JToken    jTokenEpisode  = episode.SelectToken("attributes");
                            JObject   jObjectEpisode = (JObject)jTokenEpisode;
                            CLEpisode add            = Newtonsoft.Json.JsonConvert.DeserializeObject <CLEpisode>(jObjectEpisode.ToString());
                            add.showName      = serie.name;
                            add.linkToEpisode = Link;
                            CLEpisodes.Add(add);
                        }
                    }
                }
            }
            return(CLEpisodes);
        }
Exemplo n.º 7
0
        private void Startup(CLSerie serie)
        {
            lbl_Heading.Text = serie.name + ", which episodes have you watched ?";
            currentSerie     = serie;
            ConfigurationManager manager = new ConfigurationManager();
            int currentEpisode           = manager.LatestEpisode(serie.name) + 1;

            if (currentEpisode != 0)
            {
                txt_EpisodesWatched.Text = currentEpisode.ToString() + "-" + currentEpisode.ToString();
            }
            else
            {
                txt_EpisodesWatched.Text = "1-1";
            }
        }
Exemplo n.º 8
0
        void AddSerie(CLSerie serie)
        {
            //Get the datetime from textbox
            ConfigurationManager manager  = new ConfigurationManager();
            List <int>           integers = GetTwoInts(txt_EpisodesWatched.Text);
            List <CLEpisode>     episodes = manager.GetEpisodes(serie, integers[0], integers[1]);
            CultureInfo          info     = new CultureInfo("nb-NO");

            if (DateTime.TryParse(txt_TimeStamp.Text, info, DateTimeStyles.None, out DateTime result))
            {
                manager.UploadEpisodes(episodes, serie, result);
            }
            else
            {
                manager.UploadEpisodes(episodes, serie, DateTime.Now);
            }
        }
Exemplo n.º 9
0
 private void txt_Search_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.Shift && e.KeyCode == Keys.Enter && File.Exists(StaticInfo.LocalSeriesPath + txt_Search.Text + ".json"))
     {
         ConfigurationManager manager = new ConfigurationManager();
         JObject   JOserie            = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(File.ReadAllText(StaticInfo.LocalSeriesPath + txt_Search.Text + ".json"));
         CLSerie   serie     = manager.GetSeriesFromJson(JOserie);
         AddSeries addSeries = new AddSeries(serie);
         addSeries.ShowDialog();
     }
     else if (e.KeyCode == Keys.Enter)
     {
         btn_ConfirmSearch.PerformClick();
     }
     else if (e.Control && e.KeyCode == Keys.L)
     {
         LatestWatched watched = new LatestWatched();
         watched.ShowDialog();
     }
 }
Exemplo n.º 10
0
        List <ListViewItem> SetShowHistory()
        {
            List <CLSerie> WholeHistory = new List <CLSerie>();

            DatabaseConfiguration dbconf = new DatabaseConfiguration();
            MySqlConnection       con    = new MySqlConnection(dbconf.GetConnectionstring());

            MySqlCommand cmd = new MySqlCommand("SELECT * FROM Series", con);

            con.Open();

            MySqlDataReader reader     = cmd.ExecuteReader();
            List <string>   boolFromDB = new List <string>();

            while (reader.Read())
            {
                CLSerie serie = new CLSerie()
                {
                    episodeName  = reader["Name"].ToString(),
                    ageRating    = reader["AgeRating"].ToString(),
                    synopsis     = reader["Synopsis"].ToString(),
                    seasonNumber = reader["SeasonNumber"].ToString(),
                    showName     = reader["ShowName"].ToString(),
                    genres       = reader["Genres"].ToString().Split(',').ToList()
                };
                if (int.TryParse(reader["id"].ToString(), out int DBID))
                {
                    serie.DBID = DBID;
                }

                if (int.TryParse(reader["EpisodeCount"].ToString(), out int EPCount))
                {
                    serie.episodeCount = EPCount;
                }

                if (int.TryParse(reader["TotalShowLength"].ToString(), out int TotShowLength))
                {
                    serie.totalLength = TotShowLength;
                }

                if (int.TryParse(reader["Length"].ToString(), out int EpLength))
                {
                    serie.length = EpLength;
                }

                if (int.TryParse(reader["EpisodeNumber"].ToString(), out int EpNum))
                {
                    serie.EpisodeNumber = EpNum;
                }

                if (DateTime.TryParse(reader["TimeStamp"].ToString(), out DateTime TimeStamp))
                {
                    serie.TimeStamp = TimeStamp;
                }

                WholeHistory.Add(serie);
                boolFromDB.Add(reader["NSFW"].ToString());
            }
            //Change it so that there is a button to use all episodes, not just current date. This will unlock abillity to sort the items from 1
            //spesific date by name and (redundant) date
            con.Close();
            for (int i = 0; WholeHistory.Count > i; i++)
            {
                if (boolFromDB[i] == "1")
                {
                    WholeHistory[i].NSFW = true;
                }
                else
                {
                    WholeHistory[i].NSFW = false;
                }
            }

            List <ListViewItem> items = new List <ListViewItem>();

            foreach (CLSerie episode in WholeHistory)
            {
                ListViewItem item = new ListViewItem(episode.showName);
                item.SubItems.Add(episode.EpisodeNumber.ToString());
                item.SubItems.Add(episode.seasonNumber);
                item.SubItems.Add(episode.TimeStamp.ToString());
                items.Add(item);
            }

            return(items);
        }
        public void UploadEpisodes(List <CLEpisode> episodes, CLSerie serie, DateTime timestamp)
        {
            CultureInfo           info   = CultureInfo.CreateSpecificCulture("nb-NO");
            DatabaseConfiguration dbconf = new DatabaseConfiguration();
            MySqlConnection       con    = new MySqlConnection(dbconf.GetConnectionstring());
            MySqlCommand          cmd    = new MySqlCommand();
            string SQL = "";//Fix insert or update

            //if(InstOrUpdate == "insert")
            SQL = "Insert into Series(Name,EpisodeCount,AgeRating,NSFW,Synopsis,TotalShowLength,Length,EpisodeNumber,SeasonNumber,ShowName,TimeStamp,Genres,Status) VALUES(";
            int i     = 0;
            int count = 1;

            foreach (CLEpisode episode in episodes)
            {
                i++;
                //I need closing parentesies if it is the last iteration of the loop
                if (count == episodes.Count)
                {
                    SQL += "@Name" + i.ToString() + ",@EpisodeCount" + i.ToString() + ",@AgeRating" + i.ToString() + ",@NSFW" + i.ToString() + ",@Synopsis" +
                           i.ToString() + ",@TotalShowLength" + i.ToString() + ",@Length" + i.ToString() + ",@EpisodeNumber" + i.ToString() + ",@SeasonNumber" +
                           i.ToString() + ",@ShowName" + i.ToString() + ",@TimeStamp" + i.ToString() + ",@Genres" + i.ToString() + ",@Status" + i.ToString() + ")";
                }
                else
                {
                    SQL += "@Name" + i.ToString() + ",@EpisodeCount" + i.ToString() + ",@AgeRating" + i.ToString() + ",@NSFW" + i.ToString() + ",@Synopsis" +
                           i.ToString() + ",@TotalShowLength" + i.ToString() + ",@Length" + i.ToString() + ",@EpisodeNumber" + i.ToString() + ",@SeasonNumber" +
                           i.ToString() + ",@ShowName" + i.ToString() + ",@TimeStamp" + i.ToString() + ",@Genres" + i.ToString() + ",@Status" + i.ToString() + "),(";
                }
                MySqlParameter parName = new MySqlParameter()
                {
                    ParameterName = "@Name" + i.ToString(),
                    Value         = episode.episodeName
                };
                cmd.Parameters.Add(parName);
                MySqlParameter parEpisodeCount = new MySqlParameter()
                {
                    ParameterName = "@EpisodeCount" + i.ToString(),
                    Value         = serie.episodeCount
                };
                cmd.Parameters.Add(parEpisodeCount);
                MySqlParameter parAgeRating = new MySqlParameter()
                {
                    ParameterName = "@AgeRating" + i.ToString(),
                    Value         = serie.ageRating
                };
                cmd.Parameters.Add(parAgeRating);
                MySqlParameter parNSFW = new MySqlParameter()
                {
                    ParameterName = "@NSFW" + i.ToString(),
                    Value         = serie.NSFW
                };
                cmd.Parameters.Add(parNSFW);
                MySqlParameter parSynopsis = new MySqlParameter()
                {
                    ParameterName = "@Synopsis" + i.ToString(),
                    Value         = episode.synopsis
                };
                cmd.Parameters.Add(parSynopsis);
                MySqlParameter parTotalShowLength = new MySqlParameter()
                {
                    ParameterName = "@TotalShowLength" + i.ToString(),
                    Value         = serie.totalLength
                };
                cmd.Parameters.Add(parTotalShowLength);
                MySqlParameter parLength = new MySqlParameter()
                {
                    ParameterName = "@Length" + i.ToString(),
                    Value         = episode.length
                };
                cmd.Parameters.Add(parLength);
                MySqlParameter parEpisodeNumber = new MySqlParameter()
                {
                    ParameterName = "@EpisodeNumber" + i.ToString(),
                    Value         = episode.EpisodeNumber
                };
                cmd.Parameters.Add(parEpisodeNumber);
                MySqlParameter parSeasonNumber = new MySqlParameter()
                {
                    ParameterName = "@SeasonNumber" + i.ToString(),
                    Value         = episode.seasonNumber
                };
                cmd.Parameters.Add(parSeasonNumber);
                MySqlParameter parShowName = new MySqlParameter()
                {
                    ParameterName = "@ShowName" + i.ToString(),
                    Value         = serie.name
                };
                cmd.Parameters.Add(parShowName);
                MySqlParameter parTimeStamp = new MySqlParameter()
                {
                    ParameterName = "@TimeStamp" + i.ToString(),
                    Value         = timestamp
                };
                cmd.Parameters.Add(parTimeStamp);
                MySqlParameter parGenres = new MySqlParameter()
                {
                    ParameterName = "@Genres" + i.ToString(),
                    Value         = serie.genres
                };
                cmd.Parameters.Add(parGenres);
                MySqlParameter parStatus = new MySqlParameter()
                {
                    ParameterName = "@Status" + i.ToString(),
                    Value         = serie.status
                };
                cmd.Parameters.Add(parStatus);
                count++;
            }
            cmd.Connection  = con;
            cmd.CommandText = SQL;
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
Exemplo n.º 12
0
 public AddSeries(CLSerie Serie)
 {
     InitializeComponent();
     Startup(Serie);
 }
Exemplo n.º 13
0
        /// <summary>
        /// Pulls episodes that has a status that is not finished from the database and checks if there is an updated version and updates them.
        /// </summary>
        private static void UpdateDB(string NOTREADY)
        {
loop2:
            Thread.Sleep(100);
            if (CurrentDatabase == null)
            {
                goto loop2;
            }
            DatabaseConfiguration dbconf = new DatabaseConfiguration();
            MySqlConnection       con    = new MySqlConnection(dbconf.GetConnectionstring());
            MySqlCommand          cmd    = new MySqlCommand("SELECT * From Series where NOT Status = 'finished' OR Status is NULL", con);

            con.Open();
            MySqlDataReader reader = cmd.ExecuteReader();

            List <CLSerie> OutdatedEpisodes = new List <CLSerie>();

            while (reader.Read())
            {
                CLSerie OutdatedEpisode = new CLSerie()
                {
                    episodeName   = reader["Name"].ToString(),
                    episodeCount  = ImprovedIntTryParse(reader["EpisodeCount"].ToString()),
                    ageRating     = reader["AgeRating"].ToString(),
                    synopsis      = reader["Synopsis"].ToString(),
                    totalLength   = ImprovedIntTryParse(reader["TotalShowLength"].ToString()),
                    length        = ImprovedIntTryParse(reader["Length"].ToString()),
                    EpisodeNumber = ImprovedIntTryParse(reader["EpisodeNumber"].ToString()),
                    seasonNumber  = reader["SeasonNumber"].ToString(),
                    showName      = reader["ShowName"].ToString(),
                    genres        = reader["Genres"].ToString().Split(',').ToList(),
                    name          = reader["ShowName"].ToString(),
                    DBID          = (int)reader["ID"],//this is the database ID, it wont ever be null because of how mysql works.
                };

                if (reader["NSFW"].ToString() == "1")
                {
                    OutdatedEpisode.NSFW = true;
                }
                else
                {
                    OutdatedEpisode.NSFW = false;
                }
                OutdatedEpisodes.Add(OutdatedEpisode);
            }
            con.Close();
            if (OutdatedEpisodes.Count == 0)
            {
                return;
            }
            List <CLSerie> ToUpdate = new List <CLSerie>();

            foreach (CLSerie serie in OutdatedEpisodes)
            {
                CLSerie Finished = GetFinishedSerie(serie.showName);
                if (Finished != null)
                {
                    ToUpdate.Add(Finished);
                }
            }
            if (ToUpdate.Count != 0)
            {
                ConfigurationManager manager = new ConfigurationManager();
                //manager.UploadEpisodes();
            }
        }