aboutsummaryrefslogtreecommitdiff
path: root/utils.c
diff options
context:
space:
mode:
authordefault <nobody@localhost>2024-09-18 12:12:58 +0200
committerdefault <nobody@localhost>2024-09-18 12:12:58 +0200
commit748d60497fb6cdcc3fbc0a9dbd3bc812045ba85f (patch)
treeefa0977e7216f1252669139071c45c2aef8dcdae /utils.c
parent5f5d4be347fdde2d1ceb3df9692af3dcfe551bcc (diff)
Started support for CSV data export.
Diffstat (limited to 'utils.c')
-rw-r--r--utils.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/utils.c b/utils.c
index e9ec251..c64829d 100644
--- a/utils.c
+++ b/utils.c
@@ -565,3 +565,64 @@ void verify_links(snac *user)
rename(bfn, fn);
}
}
+
+
+void export_csv(snac *user)
+/* exports user data to current directory in a way that pleases Mastodon */
+{
+ FILE *f;
+ const char *fn;
+
+ fn = "bookmarks.csv";
+ if ((f = fopen(fn, "w")) != NULL) {
+ snac_log(user, xs_fmt("Creating %s...", fn));
+
+ xs *l = bookmark_list(user);
+ const char *md5;
+
+ xs_list_foreach(l, md5) {
+ xs *post = NULL;
+
+ if (valid_status(object_get_by_md5(md5, &post))) {
+ const char *id = xs_dict_get(post, "id");
+
+ if (xs_type(id) == XSTYPE_STRING)
+ fprintf(f, "%s\n", id);
+ }
+ }
+
+ fclose(f);
+ }
+ else
+ snac_log(user, xs_fmt("Cannot create file %s", fn));
+
+ fn = "blocked_accounts.csv";
+ if ((f = fopen(fn, "w")) != NULL) {
+ snac_log(user, xs_fmt("Creating %s...", fn));
+
+ xs *l = muted_list(user);
+ const char *actor;
+
+ xs_list_foreach(l, actor) {
+ xs *uid = NULL;
+ int status;
+
+ if (valid_status((status = webfinger_request(actor, NULL, &uid)))) {
+ fprintf(f, "%s\n", uid);
+ }
+ else
+ snac_log(user, xs_fmt("Error resolving muted user %s %d", actor, status));
+ }
+
+ fclose(f);
+ }
+ else
+ snac_log(user, xs_fmt("Cannot create file %s", fn));
+}
+
+
+void import_csv(snac *user)
+/* import CSV files from Mastodon */
+{
+ (void)user;
+}