/* public async Task UpdateAsync() * { * * if(duringUpdate) * { * return; * } * * * duringUpdate = true; * try * { * Log.Information("Start radio songs updating"); * Console.WriteLine($"{DateTime.Now}Start radio songs updating"); * * var stations = new Dictionary<int, string>(){{1,"zet"},{2,"rmf"},{3,"eska"},{4, "rmfmaxx"},{9, "zloteprzeboje"},{30, "vox"},{48, "trojka"}}; * var dateLast = await GetLastDate(); * * //Console.WriteLine(dateLast); * var dateNow = DateTime.Now; * int hourNow = dateNow.Hour; * //Console.WriteLine(dateNow ); * * var hours = (dateNow - dateLast).TotalHours; * * int i = 0; * int h = 50; * if (hours>=12) * { * i = 12; * * } * * if(hourNow == dateLast.Hour && hours<12 ) * { * i = 0; * * } * if(hourNow != dateLast.Hour && hours<12 ) * { * * while(h != hourNow) * { * dateLast = dateLast.AddHours(1); * h = dateLast.Hour; * * i++; * * } * } * * * var listOfInitialSongs = new List<Song>(); * var songsCount = 0; * * for (int j = 0;j<i;j++) * { * * * var hourTo = dateNow.AddHours(-j).Hour; * var dateBase = dateNow.AddHours(-j); * var date = dateNow.AddHours(-j-1).ToString("dd-MM-yyyy"); * var hourFrom = dateNow.AddHours(-j-1).Hour; * * foreach(var s in stations.Keys) * { * string addres = "https://www.odsluchane.eu/szukaj.php?r="+s+"&date="+date+"&time_from="+hourFrom+"&time_to="+hourTo; * //Console.WriteLine(addres); * var names = getNamesFromUrl(addres); * * if(names.Count>0) * { * foreach(var name in names) * { * * listOfInitialSongs.Add(new Song(name, stations[s], dateBase )); * } * } * } * * } * * //Log.Information($"Radio Songs UPDATED with {listOfInitialSongs.Count} songs"); * //Console.WriteLine($"Radio Songs UPDATED with {listOfInitialSongs.Count} songs"); * if(listOfInitialSongs.Count>0) * { * var toManyReq = false; * songsCount = listOfInitialSongs.Count; * * using(var context = new LiveContext(_sql)) * { * try * { * foreach(var song in listOfInitialSongs) * { * * //Console.WriteLine(songsCount); * * //var archiveSong = await GetByNameFromArchive(song.Name); * * var archiveSong = await context.ArchiveSongs.Include(x=>x.YouTube).FirstOrDefaultAsync(s => s.Name == song.Name); * * // var actuallSongs = await _liveContext.Songs.Include(x=>x.YouTube).ToListAsync(); * * //var songArch = archiveSongs.FirstOrDefault(s => s.Name == name); * * * if(archiveSong is null) * { * if(toManyReq == false) * { * song.SetYoutube(); * } * else * { * song.SetWhileYoutube(); * } * * if (song.YouTube.VideoID.Contains("FirstError")) * { * Log.Warning("First ERROR from Song Update"); * toManyReq = true; * } * * var toArchiveSong = new ArchiveSong(song); * //Console.WriteLine("Adding new song to archive"); * await context.ArchiveSongs.AddAsync(toArchiveSong); * await context.SaveChangesAsync(); * * //await AddToArchiveAsync(song); * } * else * { * song.SetYoutube(archiveSong); * } * * song.Added = DateTime.Now; * //Console.WriteLine("Adding song to Songs"); * await context.Songs.AddAsync(song); * * songsCount = songsCount-1; * } * await context.SaveChangesAsync(); * } * catch(Exception ex) * { * Log.Error($"Error while updating songs: {ex.Message}"); * Log.Error(ex.StackTrace); * context.Dispose(); * } * * } * } * * if(listOfInitialSongs.Count>0) * { * * using(var context = new LiveContext(_sql)) * { * context.Songs.RemoveRange(context.Songs.Where(s => s.PlayAt<dateNow.AddHours(-13))); * await context.SaveChangesAsync(); * } * var errors = listOfInitialSongs.Where(x => x.YouTube.VideoID.Contains("Error")).ToList(); * Log.Information($"Finish radio songs update with {listOfInitialSongs.Count} songs and {errors.Count} youtube errors"); * * } * InfoCaches._radioSongsUpdatingRunning = true; * duringUpdate = false; * * } * catch (Exception ex) * { * Log.Error($"Error in updating songs {ex.Message}"); * Log.Error(ex.StackTrace); * InfoCaches._radioSongsUpdatingRunning = false; * Console.WriteLine($"Error in updating songs {ex.Message}"); * Console.WriteLine(ex.StackTrace); * duringUpdate = false; * } * } */ public async Task AddToArchiveAsync(Song song) { var toArchiveSong = new ArchiveSong(song); await _liveContext.ArchiveSongs.AddAsync(toArchiveSong); await _liveContext.SaveChangesAsync(); }
//public async Task GetByRadioAsync public async Task UpdateArchiveAsync(Song actualSong) { // GetByYouTubeFromArchive var actuallSongs = await GetAllActuall(); foreach (var song in actuallSongs) { var archiveSong = await GetByYouTubeFromArchive(song.YouTube.VideoID); if (archiveSong is null) { var toArchiveSong = new ArchiveSong(song); await _liveContext.ArchiveSongs.AddAsync(toArchiveSong); await _liveContext.SaveChangesAsync(); } // Console.WriteLine(archiveSong.Name); } }
public async Task SongsUpdateAsync() { if (InfoCaches.duringSongsUpdate) { return; } InfoCaches.duringSongsUpdate = true; try { //Log.Information("Start radio songs updating"); //Console.WriteLine($"{DateTime.Now} Start radio songs updating"); var stations = new Dictionary <int, string>() { { 1, "zet" }, { 2, "rmf" }, { 3, "eska" }, { 4, "rmfmaxx" }, { 9, "zloteprzeboje" }, { 30, "vox" }, { 40, "chillizet" } }; var dateLast = await GetLastDate(); // Console.WriteLine("Context works datelst -> " + dateLast); //Console.WriteLine(dateLast); var dateNow = DateTime.Now; int hourNow = dateNow.Hour; //Console.WriteLine(dateNow ); var hours = (dateNow - dateLast).TotalHours; int i = 0; int h = 50; if (hours >= 12) { i = 12; } if (hourNow == dateLast.Hour && hours < 12) { i = 0; } if (hourNow != dateLast.Hour && hours < 12) { while (h != hourNow) { dateLast = dateLast.AddHours(1); h = dateLast.Hour; i++; } } var listOfInitialSongs = new List <Song>(); var songsCount = 0; for (int j = 0; j < i; j++) { var hourTo = dateNow.AddHours(-j).Hour; var dateBase = dateNow.AddHours(-j); var date = dateNow.AddHours(-j - 1).ToString("dd-MM-yyyy"); var hourFrom = dateNow.AddHours(-j - 1).Hour; foreach (var s in stations.Keys) { string addres = "https://www.odsluchane.eu/szukaj.php?r=" + s + "&date=" + date + "&time_from=" + hourFrom + "&time_to=" + hourTo; //Console.WriteLine(addres); var names = getSongsNamesFromUrl(addres); if (names.Count > 0) { foreach (var name in names) { listOfInitialSongs.Add(new Song(name, stations[s], dateBase)); } } } } //Log.Information($"Radio Songs UPDATED with {listOfInitialSongs.Count} songs"); //Console.WriteLine($"Radio Songs UPDATED with {listOfInitialSongs.Count} songs"); if (listOfInitialSongs.Count > 0) { var toManyReq = false; songsCount = listOfInitialSongs.Count; //using(var context = new LiveContext(_sql)) //using(var context = new LiveContext()) //{ try { foreach (var song in listOfInitialSongs) { var archiveSong = await _context.ArchiveSongs.Include(x => x.YouTube).FirstOrDefaultAsync(s => s.Name == song.Name); if (archiveSong is null) { if (toManyReq == false) { song.SetYoutube(); } else { song.SetWhileYoutube(); } if (song.YouTube.VideoID.Contains("FirstError")) { Log.Warning("First ERROR from Song Update"); toManyReq = true; } var toArchiveSong = new ArchiveSong(song); //Console.WriteLine("Adding new song to archive"); await _context.ArchiveSongs.AddAsync(toArchiveSong); await _context.SaveChangesAsync(); } else { song.SetYoutube(archiveSong); } song.Added = DateTime.Now; //Console.WriteLine("Adding song to Songs"); await _context.Songs.AddAsync(song); songsCount = songsCount - 1; } await _context.SaveChangesAsync(); } catch (Exception ex) { Log.Error($"Error while updating songs: {ex.Message}"); Log.Error(ex.StackTrace); //context.Dispose(); } //} } if (listOfInitialSongs.Count > 0) { //using(var context = new LiveContext(_sql)) // using(var context = new LiveContext()) //{ _context.Songs.RemoveRange(_context.Songs.Where(s => s.PlayAt < dateNow.AddHours(-13))); await _context.SaveChangesAsync(); //} var errors = listOfInitialSongs.Where(x => x.YouTube.VideoID.Contains("Error")).ToList(); Log.Information($"Finish radio songs update with {listOfInitialSongs.Count} songs and {errors.Count} youtube errors"); //Console.WriteLine($"Finish radio songs update with {listOfInitialSongs.Count} songs and {errors.Count} youtube errors"); } InfoCaches.duringSongsUpdate = false; } catch (Exception ex) { Log.Error($"Error in updating songs {ex.Message}"); Log.Error(ex.StackTrace); Console.WriteLine($"Error in updating songs {ex.Message}"); Console.WriteLine(ex.StackTrace); InfoCaches.duringSongsUpdate = false; } }