mirror of
https://codeberg.org/grunfink/snac2.git
synced 2024-12-25 16:53:37 +00:00
Some work in CSV importing.
This commit is contained in:
parent
49b2a1d05c
commit
5572bd0a97
2 changed files with 118 additions and 1 deletions
5
main.c
5
main.c
|
@ -274,6 +274,11 @@ int main(int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (strcmp(cmd, "import_csv") == 0) { /** **/
|
||||
import_csv(&snac);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcmp(cmd, "migrate") == 0) { /** **/
|
||||
return migrate_account(&snac);
|
||||
}
|
||||
|
|
114
utils.c
114
utils.c
|
@ -673,5 +673,117 @@ void export_csv(snac *user)
|
|||
void import_csv(snac *user)
|
||||
/* import CSV files from Mastodon */
|
||||
{
|
||||
(void)user;
|
||||
FILE *f;
|
||||
const char *fn;
|
||||
|
||||
fn = "blocked_accounts.csv";
|
||||
if ((f = fopen(fn, "r")) != NULL) {
|
||||
snac_log(user, xs_fmt("Importing from %s...", fn));
|
||||
|
||||
while (!feof(f)) {
|
||||
xs *l = xs_strip_i(xs_readline(f));
|
||||
|
||||
if (*l) {
|
||||
xs *url = NULL;
|
||||
xs *uid = NULL;
|
||||
|
||||
if (valid_status(webfinger_request(l, &url, &uid))) {
|
||||
if (is_muted(user, url))
|
||||
snac_log(user, xs_fmt("Actor %s already MUTEd", url));
|
||||
else {
|
||||
mute(user, url);
|
||||
snac_log(user, xs_fmt("MUTEd actor %s", url));
|
||||
}
|
||||
}
|
||||
else
|
||||
snac_log(user, xs_fmt("Webfinger error for account %s", l));
|
||||
}
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
else
|
||||
snac_log(user, xs_fmt("Cannot open file %s", fn));
|
||||
|
||||
fn = "following_accounts.csv";
|
||||
if ((f = fopen(fn, "r")) != NULL) {
|
||||
snac_log(user, xs_fmt("Importing from %s...", fn));
|
||||
|
||||
while (!feof(f)) {
|
||||
xs *l = xs_strip_i(xs_readline(f));
|
||||
|
||||
if (*l) {
|
||||
xs *l2 = xs_split(l, ",");
|
||||
const char *acct = xs_list_get(l2, 0);
|
||||
const char *show = xs_list_get(l2, 1);
|
||||
|
||||
if (acct) {
|
||||
/* not a valid account? skip (probably the CSV header) */
|
||||
if (strchr(acct, '@') == NULL)
|
||||
continue;
|
||||
|
||||
xs *msg = msg_follow(user, acct);
|
||||
|
||||
if (msg == NULL) {
|
||||
snac_log(user, xs_fmt("Cannot follow %s -- server down?", acct));
|
||||
continue;
|
||||
}
|
||||
|
||||
const char *actor = xs_dict_get(msg, "object");
|
||||
|
||||
if (following_check(user, actor))
|
||||
snac_log(user, xs_fmt("Actor %s already followed", actor));
|
||||
else {
|
||||
following_add(user, actor, msg);
|
||||
|
||||
enqueue_output_by_actor(user, msg, actor, 0);
|
||||
|
||||
snac_log(user, xs_fmt("Following %s", actor));
|
||||
}
|
||||
|
||||
if (show && strcmp(show, "false") == 0) {
|
||||
limit(user, actor);
|
||||
snac_log(user, xs_fmt("Limiting boosts from actor %s", actor));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
else
|
||||
snac_log(user, xs_fmt("Cannot open file %s", fn));
|
||||
|
||||
fn = "lists.csv";
|
||||
if ((f = fopen(fn, "r")) != NULL) {
|
||||
snac_log(user, xs_fmt("Importing from %s...", fn));
|
||||
|
||||
while (!feof(f)) {
|
||||
xs *l = xs_strip_i(xs_readline(f));
|
||||
|
||||
if (*l) {
|
||||
}
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
else
|
||||
snac_log(user, xs_fmt("Cannot open file %s", fn));
|
||||
|
||||
fn = "bookmarks.csv";
|
||||
if ((f = fopen(fn, "r")) != NULL) {
|
||||
snac_log(user, xs_fmt("Importing from %s...", fn));
|
||||
|
||||
while (!feof(f)) {
|
||||
xs *l = xs_strip_i(xs_readline(f));
|
||||
|
||||
if (*l) {
|
||||
}
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
else
|
||||
snac_log(user, xs_fmt("Cannot open file %s", fn));
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue