From 15f352fe8311c0b435228a99e040fdc5e1c08ed4 Mon Sep 17 00:00:00 2001 From: default Date: Mon, 25 Nov 2024 08:15:34 +0100 Subject: When importing CSV lists, also follow that accounts. --- utils.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'utils.c') diff --git a/utils.c b/utils.c index 4f5ac55..42200aa 100644 --- a/utils.c +++ b/utils.c @@ -782,6 +782,21 @@ void import_csv(snac *user) list_content(user, list_id, actor_md5, 1); snac_log(user, xs_fmt("Added %s to list %s", url, lname)); + + if (!following_check(user, url)) { + xs *msg = msg_follow(user, url); + + if (msg == NULL) { + snac_log(user, xs_fmt("Cannot follow %s -- server down?", acct)); + continue; + } + + following_add(user, url, msg); + + enqueue_output_by_actor(user, msg, url, 0); + + snac_log(user, xs_fmt("Following %s", url)); + } } else snac_log(user, xs_fmt("Webfinger error while adding %s to list %s", acct, lname)); -- cgit From 2eff3ffb664d372d68ab2d953466d7ba946c96c2 Mon Sep 17 00:00:00 2001 From: default Date: Mon, 25 Nov 2024 10:08:50 +0100 Subject: Most CSV import code has been moved to their own functions. --- snac.h | 4 ++++ utils.c | 36 ++++++++++++++++++++++++++++++------ 2 files changed, 34 insertions(+), 6 deletions(-) (limited to 'utils.c') diff --git a/snac.h b/snac.h index 7a262a9..9e00351 100644 --- a/snac.h +++ b/snac.h @@ -404,6 +404,10 @@ void verify_links(snac *user); void export_csv(snac *user); int migrate_account(snac *user); + +void import_blocked_accounts_csv(snac *user, const char *fn); +void import_following_accounts_csv(snac *user, const char *fn); +void import_list_csv(snac *user, const char *fn); void import_csv(snac *user); typedef enum { diff --git a/utils.c b/utils.c index 42200aa..b0d8193 100644 --- a/utils.c +++ b/utils.c @@ -670,13 +670,11 @@ void export_csv(snac *user) } -void import_csv(snac *user) -/* import CSV files from Mastodon */ +void import_blocked_accounts_csv(snac *user, const char *fn) +/* imports a Mastodon CSV file of blocked accounts */ { FILE *f; - const char *fn; - fn = "blocked_accounts.csv"; if ((f = fopen(fn, "r")) != NULL) { snac_log(user, xs_fmt("Importing from %s...", fn)); @@ -704,8 +702,14 @@ void import_csv(snac *user) } else snac_log(user, xs_fmt("Cannot open file %s", fn)); +} + + +void import_following_accounts_csv(snac *user, const char *fn) +/* imports a Mastodon CSV file of accounts to follow */ +{ + FILE *f; - fn = "following_accounts.csv"; if ((f = fopen(fn, "r")) != NULL) { snac_log(user, xs_fmt("Importing from %s...", fn)); @@ -757,8 +761,14 @@ void import_csv(snac *user) } else snac_log(user, xs_fmt("Cannot open file %s", fn)); +} + + +void import_list_csv(snac *user, const char *fn) +/* imports a Mastodon CSV file list */ +{ + FILE *f; - fn = "lists.csv"; if ((f = fopen(fn, "r")) != NULL) { snac_log(user, xs_fmt("Importing from %s...", fn)); @@ -808,6 +818,20 @@ void import_csv(snac *user) } else snac_log(user, xs_fmt("Cannot open file %s", fn)); +} + + +void import_csv(snac *user) +/* import CSV files from Mastodon */ +{ + FILE *f; + const char *fn; + + import_blocked_accounts_csv(user, "blocked_accounts.csv"); + + import_following_accounts_csv(user, "following_accounts.csv"); + + import_list_csv(user, "lists.csv"); fn = "bookmarks.csv"; if ((f = fopen(fn, "r")) != NULL) { -- cgit From b3be8e06734c6428376514024af7cabf13774dce Mon Sep 17 00:00:00 2001 From: default Date: Mon, 25 Nov 2024 10:24:47 +0100 Subject: New cmdline ops 'import_list' and 'import_block_list'. --- main.c | 14 ++++++++++++++ utils.c | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'utils.c') diff --git a/main.c b/main.c index c285fac..088d382 100644 --- a/main.c +++ b/main.c @@ -52,6 +52,8 @@ int usage(void) printf("alias {basedir} {uid} {account} Sets account (@user@host or actor url) as an alias\n"); printf("migrate {basedir} {uid} Migrates to the account defined as the alias\n"); printf("import_csv {basedir} {uid} Imports data from CSV files into current directory\n"); + printf("import_list {basedir} {uid} {file} Imports a Mastodon CSV list file\n"); + printf("import_block_list {basedir} {uid} {file} Imports a Mastodon CSV block list file\n"); return 1; } @@ -589,6 +591,18 @@ int main(int argc, char *argv[]) return 0; } + if (strcmp(cmd, "import_list") == 0) { /** **/ + import_list_csv(&snac, url); + + return 0; + } + + if (strcmp(cmd, "import_block_list") == 0) { /** **/ + import_blocked_accounts_csv(&snac, url); + + return 0; + } + if (strcmp(cmd, "note") == 0) { /** **/ xs *content = NULL; xs *msg = NULL; diff --git a/utils.c b/utils.c index b0d8193..df3b55d 100644 --- a/utils.c +++ b/utils.c @@ -681,7 +681,7 @@ void import_blocked_accounts_csv(snac *user, const char *fn) while (!feof(f)) { xs *l = xs_strip_i(xs_readline(f)); - if (*l) { + if (*l && strchr(l, '@') != NULL) { xs *url = NULL; xs *uid = NULL; -- cgit