Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f541ec4260 | ||
|
|
f549f020e1 |
@@ -139,7 +139,7 @@ namespace URLNotesGrabberCORE
|
|||||||
if (_savedImportPragmas != null)
|
if (_savedImportPragmas != null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
@@ -175,10 +175,6 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
Console.WriteLine($"[SQLite Import Mode] Failed to enable import pragmas: {ex.Message}");
|
Console.WriteLine($"[SQLite Import Mode] Failed to enable import pragmas: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +186,7 @@ namespace URLNotesGrabberCORE
|
|||||||
if (_savedImportPragmas == null)
|
if (_savedImportPragmas == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
@@ -217,7 +213,6 @@ namespace URLNotesGrabberCORE
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
_savedImportPragmas = null;
|
_savedImportPragmas = null;
|
||||||
connection.Close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -252,7 +247,7 @@ namespace URLNotesGrabberCORE
|
|||||||
public static void EnsureReplyTextColumnExists(string? DBPath = null)
|
public static void EnsureReplyTextColumnExists(string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -296,16 +291,12 @@ namespace URLNotesGrabberCORE
|
|||||||
// Breakpoint here
|
// Breakpoint here
|
||||||
Console.WriteLine($"Error checking/creating replyText column: {ex.Message}");
|
Console.WriteLine($"Error checking/creating replyText column: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void EnsureBlogsLikesColumnsExist(string? DBPath = null)
|
public static void EnsureBlogsLikesColumnsExist(string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -391,10 +382,6 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
Console.WriteLine($"Error mapping Blogs likes columns: {ex.Message}");
|
Console.WriteLine($"Error mapping Blogs likes columns: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Adds
|
#region Adds
|
||||||
@@ -569,7 +556,7 @@ namespace URLNotesGrabberCORE
|
|||||||
public static void AddAPICount(string? DBPath = null)
|
public static void AddAPICount(string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -590,10 +577,6 @@ namespace URLNotesGrabberCORE
|
|||||||
// Breakpoint here
|
// Breakpoint here
|
||||||
//Console.WriteLine(ex.Message);
|
//Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool AddNote(string rootBlogName, string noteBlogName, long postID, long timestamp, string type, string? DBPath = null)
|
public static bool AddNote(string rootBlogName, string noteBlogName, long postID, long timestamp, string type, string? DBPath = null)
|
||||||
@@ -602,7 +585,7 @@ namespace URLNotesGrabberCORE
|
|||||||
//try { AddPost(rootBlogName, postID, DBPath); } catch { }
|
//try { AddPost(rootBlogName, postID, DBPath); } catch { }
|
||||||
try { AddBlog(noteBlogName, false, DBPath); } catch { }
|
try { AddBlog(noteBlogName, false, DBPath); } catch { }
|
||||||
|
|
||||||
SQLiteConnection connection2 = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection2 = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -661,10 +644,6 @@ namespace URLNotesGrabberCORE
|
|||||||
Console.WriteLine("^^^^^ - SHORTCUT");
|
Console.WriteLine("^^^^^ - SHORTCUT");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection2.Close();
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endregion Adds
|
#endregion Adds
|
||||||
@@ -680,7 +659,7 @@ namespace URLNotesGrabberCORE
|
|||||||
public static List<Tuple<string, long, long, long>> GetPosts(bool withoutNotesOnly = false, DateTime? beforeDate = null, string? DBPath = null)
|
public static List<Tuple<string, long, long, long>> GetPosts(bool withoutNotesOnly = false, DateTime? beforeDate = null, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
List<Tuple<string, long, long, long>> posts = new List<Tuple<string, long, long, long>>();
|
List<Tuple<string, long, long, long>> posts = new List<Tuple<string, long, long, long>>();
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -858,17 +837,13 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return posts;
|
return posts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Tuple<string, long>> GetReplies(string? DBPath = null)
|
public static List<Tuple<string, long>> GetReplies(string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
List<Tuple<string, long>> posts = new List<Tuple<string, long>>();
|
List<Tuple<string, long>> posts = new List<Tuple<string, long>>();
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -902,17 +877,13 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return posts;
|
return posts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Tuple<string, long>> GetRepliesWithMissingText(string? DBPath = null, int limit = 50)
|
public static List<Tuple<string, long>> GetRepliesWithMissingText(string? DBPath = null, int limit = 50)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
List<Tuple<string, long>> posts = new List<Tuple<string, long>>();
|
List<Tuple<string, long>> posts = new List<Tuple<string, long>>();
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -953,17 +924,13 @@ namespace URLNotesGrabberCORE
|
|||||||
// Breakpoint here
|
// Breakpoint here
|
||||||
Console.WriteLine($"Error getting replies with missing text: {ex.Message}");
|
Console.WriteLine($"Error getting replies with missing text: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return posts;
|
return posts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Tuple<string, long, long>> GetRepliesWithFilledText(string? DBPath = null, int? limit = null)
|
public static List<Tuple<string, long, long>> GetRepliesWithFilledText(string? DBPath = null, int? limit = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
List<Tuple<string, long, long>> posts = new List<Tuple<string, long, long>>();
|
List<Tuple<string, long, long>> posts = new List<Tuple<string, long, long>>();
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -1015,17 +982,13 @@ namespace URLNotesGrabberCORE
|
|||||||
// Breakpoint here
|
// Breakpoint here
|
||||||
Console.WriteLine($"Error getting replies with filled text: {ex.Message}");
|
Console.WriteLine($"Error getting replies with filled text: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return posts;
|
return posts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GetAPICount(string? DBPath = null)
|
public static int GetAPICount(string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
try { AddAPICount(); } catch { }
|
try { AddAPICount(); } catch { }
|
||||||
@@ -1054,17 +1017,13 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Tuple<string, int, long, long>> GetBlogsForLikes(string specificBlog = null, int cooldownDays = 7, bool ignoreCooldown = false, string? DBPath = null)
|
public static List<Tuple<string, int, long, long>> GetBlogsForLikes(string specificBlog = null, int cooldownDays = 7, bool ignoreCooldown = false, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
List<Tuple<string, int, long, long>> blogs = new List<Tuple<string, int, long, long>>();
|
List<Tuple<string, int, long, long>> blogs = new List<Tuple<string, int, long, long>>();
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -1140,17 +1099,13 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
Console.WriteLine($"Error fetching blogs for likes: {ex.Message}");
|
Console.WriteLine($"Error fetching blogs for likes: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return blogs;
|
return blogs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<string> GetBlogs(bool reblogsOnly, int from, int to, int top, string? DBPath = null)
|
public static List<string> GetBlogs(bool reblogsOnly, int from, int to, int top, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
List<string> blogs = new List<string>();
|
List<string> blogs = new List<string>();
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -1185,17 +1140,13 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return blogs;
|
return blogs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<string> GetBlogsAll(bool reblogsOnly, int from, int to, int top, string? DBPath = null)
|
public static List<string> GetBlogsAll(bool reblogsOnly, int from, int to, int top, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
List<string> blogs = new List<string>();
|
List<string> blogs = new List<string>();
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -1230,19 +1181,13 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return blogs;
|
return blogs;
|
||||||
}
|
}
|
||||||
public static IEnumerable<List<string>> GetAllPostTextColumns(string? DBPath = null)
|
public static IEnumerable<List<string>> GetAllPostTextColumns(string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
connection.Open();
|
connection.Open();
|
||||||
try
|
|
||||||
{
|
|
||||||
string sql = "SELECT BlogName, reblogURL, PostURL, Slug, ReblogKey, ReblogName, Summary, Quote, Body, Tags, Link, PhotoURL, PhotoCaption, DownloadedFiles, AudioCaption, Question, Answer, Title, RootBlogName, RootURL FROM Posts WHERE IFNULL(DownloadedFiles, '.') = '.'";
|
string sql = "SELECT BlogName, reblogURL, PostURL, Slug, ReblogKey, ReblogName, Summary, Quote, Body, Tags, Link, PhotoURL, PhotoCaption, DownloadedFiles, AudioCaption, Question, Answer, Title, RootBlogName, RootURL FROM Posts WHERE IFNULL(DownloadedFiles, '.') = '.'";
|
||||||
using (SQLiteCommand command = new SQLiteCommand(sql, connection))
|
using (SQLiteCommand command = new SQLiteCommand(sql, connection))
|
||||||
{
|
{
|
||||||
@@ -1270,12 +1215,6 @@ namespace URLNotesGrabberCORE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
connection.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion Gets
|
#endregion Gets
|
||||||
|
|
||||||
#region Updates
|
#region Updates
|
||||||
@@ -1284,7 +1223,7 @@ namespace URLNotesGrabberCORE
|
|||||||
public static void UpdatePostMarkNotesCollected(string blogName, long postID, string? DBPath = null)
|
public static void UpdatePostMarkNotesCollected(string blogName, long postID, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1307,16 +1246,12 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UpdatePostMarkNotFound(string blogName, long postID, string? DBPath = null)
|
public static void UpdatePostMarkNotFound(string blogName, long postID, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1340,10 +1275,6 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----- CollectRunState: tracks the frozen cutoff + completion flag for a managed "-collect 0" full re-check run -----
|
// ----- CollectRunState: tracks the frozen cutoff + completion flag for a managed "-collect 0" full re-check run -----
|
||||||
@@ -1455,7 +1386,7 @@ namespace URLNotesGrabberCORE
|
|||||||
|
|
||||||
Console.WriteLine("{2}\t{0}\t{1}", UnixTimeStampToDateTime(timestamp), noteBlogName, type);
|
Console.WriteLine("{2}\t{0}\t{1}", UnixTimeStampToDateTime(timestamp), noteBlogName, type);
|
||||||
|
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1482,10 +1413,6 @@ namespace URLNotesGrabberCORE
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1601,7 +1528,7 @@ namespace URLNotesGrabberCORE
|
|||||||
public static void UpdateBlogOutput(string blogName, string? DBPath = null)
|
public static void UpdateBlogOutput(string blogName, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1621,16 +1548,12 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UpdateBlogLikesStatus(string blogName, int likesPulled, long likesCursor, string? DBPath = null)
|
public static void UpdateBlogLikesStatus(string blogName, int likesPulled, long likesCursor, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
@@ -1648,10 +1571,6 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
Console.WriteLine($"Error updating blog likes status: {ex.Message}");
|
Console.WriteLine($"Error updating blog likes status: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bumps the high-water mark for a blog. Used during Branch A (initial backfill) when we
|
// Bumps the high-water mark for a blog. Used during Branch A (initial backfill) when we
|
||||||
@@ -1661,7 +1580,7 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
if (newestTimestamp <= 0) return;
|
if (newestTimestamp <= 0) return;
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
@@ -1681,10 +1600,6 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
Console.WriteLine($"Error updating blog likes newest timestamp: {ex.Message}");
|
Console.WriteLine($"Error updating blog likes newest timestamp: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called at the end of a refresh pass (Branch B). Bumps the high-water mark, stamps the
|
// Called at the end of a refresh pass (Branch B). Bumps the high-water mark, stamps the
|
||||||
@@ -1692,7 +1607,7 @@ namespace URLNotesGrabberCORE
|
|||||||
public static void UpdateBlogLikesRefreshStatus(string blogName, long newestTimestamp, int newCount, string? DBPath = null)
|
public static void UpdateBlogLikesRefreshStatus(string blogName, long newestTimestamp, int newCount, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
@@ -1715,16 +1630,12 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
Console.WriteLine($"Error updating blog likes refresh status: {ex.Message}");
|
Console.WriteLine($"Error updating blog likes refresh status: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int UpdateAPICount(string? DBPath = null)
|
public static int UpdateAPICount(string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
int APICount = DataAccess.GetAPICount();
|
int APICount = DataAccess.GetAPICount();
|
||||||
APICount++;
|
APICount++;
|
||||||
@@ -1747,10 +1658,6 @@ namespace URLNotesGrabberCORE
|
|||||||
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
if (ex.Message != "constraint failed\r\nUNIQUE constraint failed: Posts.BlogName, Posts.PostID")
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
return APICount;
|
return APICount;
|
||||||
}
|
}
|
||||||
@@ -1758,7 +1665,7 @@ namespace URLNotesGrabberCORE
|
|||||||
public static int UpdateNoteReplyText(string rootBlogName, long postID, string noteBlogName, long timestamp, string replyText, string? DBPath = null)
|
public static int UpdateNoteReplyText(string rootBlogName, long postID, string noteBlogName, long timestamp, string replyText, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
int rowsAffected = 0;
|
int rowsAffected = 0;
|
||||||
|
|
||||||
// A bare "." collides with the "needs processing" sentinel in GetRepliesWithFilledText, which would loop the post forever. Store as ". " so the data is preserved but no longer matches the sentinel.
|
// A bare "." collides with the "needs processing" sentinel in GetRepliesWithFilledText, which would loop the post forever. Store as ". " so the data is preserved but no longer matches the sentinel.
|
||||||
@@ -1801,17 +1708,13 @@ namespace URLNotesGrabberCORE
|
|||||||
Console.WriteLine($"[UpdateNoteReplyText] Error updating reply text: {ex.Message}");
|
Console.WriteLine($"[UpdateNoteReplyText] Error updating reply text: {ex.Message}");
|
||||||
Console.WriteLine($"[UpdateNoteReplyText] StackTrace: {ex.StackTrace}");
|
Console.WriteLine($"[UpdateNoteReplyText] StackTrace: {ex.StackTrace}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
return rowsAffected;
|
return rowsAffected;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int UpdateAllNoteReplyTextForPost(string rootBlogName, long postID, string replyText, string? DBPath = null)
|
public static int UpdateAllNoteReplyTextForPost(string rootBlogName, long postID, string replyText, string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1847,10 +1750,6 @@ namespace URLNotesGrabberCORE
|
|||||||
Console.WriteLine($"[UpdateAllNoteReplyTextForPost] StackTrace: {ex.StackTrace}");
|
Console.WriteLine($"[UpdateAllNoteReplyTextForPost] StackTrace: {ex.StackTrace}");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endregion Updates
|
#endregion Updates
|
||||||
|
|
||||||
@@ -1861,7 +1760,7 @@ namespace URLNotesGrabberCORE
|
|||||||
public static void EnsureTTFileHelperColumnsExist(string? DBPath = null)
|
public static void EnsureTTFileHelperColumnsExist(string? DBPath = null)
|
||||||
{
|
{
|
||||||
DBPath ??= GetDefaultDbPath();
|
DBPath ??= GetDefaultDbPath();
|
||||||
SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
using SQLiteConnection connection = new SQLiteConnection("Data Source=" + DBPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1907,10 +1806,6 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
Console.WriteLine($"Error ensuring TTFileHelper columns: {ex.Message}");
|
Console.WriteLine($"Error ensuring TTFileHelper columns: {ex.Message}");
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
connection.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// INSERT-or-UPDATE for a post arriving from a Tumblr text-file export.
|
// INSERT-or-UPDATE for a post arriving from a Tumblr text-file export.
|
||||||
@@ -2731,7 +2626,7 @@ namespace URLNotesGrabberCORE
|
|||||||
{
|
{
|
||||||
minRetrySeconds = 0;
|
minRetrySeconds = 0;
|
||||||
if (!_usePool || _overrideKey != null) return false;
|
if (!_usePool || _overrideKey != null) return false;
|
||||||
if (_keys.Count <= 1) return true;
|
if (_keys.Count == 0) return false;
|
||||||
|
|
||||||
var now = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
|
var now = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
|
||||||
bool all = true;
|
bool all = true;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ using Microsoft.Extensions.Configuration;
|
|||||||
using System.Configuration;
|
using System.Configuration;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Microsoft.Extensions.Diagnostics.Latency;
|
using Microsoft.Extensions.Diagnostics.Latency;
|
||||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace URLNotesGrabberCORE
|
namespace URLNotesGrabberCORE
|
||||||
@@ -140,7 +139,10 @@ namespace URLNotesGrabberCORE
|
|||||||
Console.SetOut(dualLogger);
|
Console.SetOut(dualLogger);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<string> contains = settings.GetValue<string>("ContainsList").Split(',').ToList();
|
string? containsListSetting = settings.GetValue<string>("ContainsList");
|
||||||
|
if (string.IsNullOrEmpty(containsListSetting))
|
||||||
|
throw new InvalidOperationException("ContainsList is not configured in appsettings.json");
|
||||||
|
List<string> contains = containsListSetting.Split(',').ToList();
|
||||||
bool logTraversalRecordImports = settings.GetValue("LogTraversalRecordImports", false);
|
bool logTraversalRecordImports = settings.GetValue("LogTraversalRecordImports", false);
|
||||||
|
|
||||||
if (args.Length == 0) //Traverse folder structure to add posts and thus blogs to DB
|
if (args.Length == 0) //Traverse folder structure to add posts and thus blogs to DB
|
||||||
|
|||||||
Reference in New Issue
Block a user