aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrunfink <grunfink@comam.es>2025-09-09 08:33:30 +0200
committergrunfink <grunfink@comam.es>2025-09-09 08:33:30 +0200
commit4b5e945d957aaf6aa96cb11715384d161f245ea1 (patch)
tree40474c817aad2c2af488263532f40af078a65958
parent797403810afbe431b363061f363876e02cc34c82 (diff)
Added support for scheduled posts from the cmdline.
-rw-r--r--main.c38
1 files changed, 29 insertions, 9 deletions
diff --git a/main.c b/main.c
index f767355..c51a16e 100644
--- a/main.c
+++ b/main.c
@@ -808,6 +808,20 @@ int main(int argc, char *argv[])
const char *fn = NULL;
const char *in_reply_to = NULL;
const char **next = NULL;
+ xs *post_date = NULL;
+
+ const char *env_date = getenv("SNAC_POST_DATE");
+ if (env_date) {
+ /* convert to ISO */
+ time_t t = xs_parse_localtime(env_date, "%Y%m%d%H%M%S");
+
+ if (t == 0) {
+ fprintf(stderr, "Invalid $SNAC_POST_DATE format (must be YYYYmmddHHMMSS)\n");
+ return 1;
+ }
+
+ post_date = xs_str_iso_date(t);
+ }
/* iterate possible attachments */
while ((fn = GET_ARGV())) {
@@ -885,7 +899,7 @@ int main(int argc, char *argv[])
content = xs_dup(url);
if (!content || !*content) {
- printf("Nothing to send\n");
+ fprintf(stderr, "Nothing to send\n");
return 1;
}
@@ -896,18 +910,24 @@ int main(int argc, char *argv[])
if (strcmp(cmd, "note_unlisted") == 0)
scope = 2;
- msg = msg_note(&snac, content, NULL, in_reply_to, attl, scope, getenv("LANG"), NULL);
+ msg = msg_note(&snac, content, NULL, in_reply_to, attl, scope, getenv("LANG"), post_date);
- c_msg = msg_create(&snac, msg);
+ const char *id = xs_dict_get(msg, "id");
- if (dbglevel) {
- xs_json_dump(c_msg, 4, stdout);
- }
+ if (post_date)
+ schedule_add(&snac, id, msg);
+ else {
+ c_msg = msg_create(&snac, msg);
- enqueue_message(&snac, c_msg);
- enqueue_webmention(msg);
+ if (dbglevel) {
+ xs_json_dump(c_msg, 4, stdout);
+ }
- timeline_add(&snac, xs_dict_get(msg, "id"), msg);
+ enqueue_message(&snac, c_msg);
+ enqueue_webmention(msg);
+
+ timeline_add(&snac, id, msg);
+ }
return 0;
}