aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c38
1 files changed, 30 insertions, 8 deletions
diff --git a/src/main.c b/src/main.c
index 8e743eb..16cc482 100644
--- a/src/main.c
+++ b/src/main.c
@@ -60,9 +60,10 @@ static void usage_add(void) {
}
static void usage_sync(void) {
- fprintf(stderr, "usage: automedia sync <download_dir>\n");
+ fprintf(stderr, "usage: automedia sync [--no-error-notification] <download_dir>\n");
fprintf(stderr, "OPTIONS\n");
- fprintf(stderr, " download_dir The path where media should be downloaded to\n");
+ fprintf(stderr, " --no-error-notification Disable error notifications\n");
+ fprintf(stderr, " download_dir The path where media should be downloaded to\n");
fprintf(stderr, "EXAMPLES\n");
fprintf(stderr, " automedia sync /home/user/Downloads/automedia\n");
exit(1);
@@ -466,6 +467,7 @@ static int iterate_tracked_item_rss_callback(char *title, char *link, char *plug
typedef struct {
char *program_dir;
const char *download_dir;
+ bool show_error_notifications;
} IterateHtmlItemUserdata;
static int iterate_tracked_item_html_callback(char *title, char *link, char *plugin, char *config_dir, cJSON *json_data, fallback *fall, void *userdata) {
@@ -481,17 +483,18 @@ static int iterate_tracked_item_html_callback(char *title, char *link, char *plu
tracked_html.title = title;
tracked_html.link = link;
tracked_html.json_data = json_data;
- return sync_html(&tracked_html, iterate_html_item_userdata->program_dir, iterate_html_item_userdata->download_dir, config_dir);
+ return sync_html(&tracked_html, iterate_html_item_userdata->program_dir, iterate_html_item_userdata->download_dir, config_dir, iterate_html_item_userdata->show_error_notifications);
}
static void sync_tracked_rss(TransmissionSession *transmission_session, char *rss_config_dir, fallback *fall) {
iterate_tracked_items(rss_config_dir, iterate_tracked_item_rss_callback, fall, transmission_session);
}
-static void sync_tracked_html(char *html_config_dir, char *program_dir, const char *download_dir) {
+static void sync_tracked_html(char *html_config_dir, char *program_dir, const char *download_dir, bool show_error_notifications) {
IterateHtmlItemUserdata iterate_html_item_userdata;
iterate_html_item_userdata.program_dir = program_dir;
iterate_html_item_userdata.download_dir = download_dir;
+ iterate_html_item_userdata.show_error_notifications = show_error_notifications;
iterate_tracked_items(html_config_dir, iterate_tracked_item_html_callback, NULL, &iterate_html_item_userdata);
}
@@ -543,7 +546,7 @@ static void torrent_list_check_new_downloads_callback(int id, const char *name,
}
}
-static void sync_rss_html(char *rss_config_dir, char *html_config_dir, char *program_dir, const char *download_dir, int sync_rate_sec, fallback *fall) {
+static void sync_rss_html(char *rss_config_dir, char *html_config_dir, char *program_dir, const char *download_dir, int sync_rate_sec, fallback *fall, bool show_error_notifications) {
if(transmission_is_daemon_running() != 0) {
if(transmission_start_daemon(download_dir) != 0) {
fprintf(stderr, "Failed to start torrent daemon\n");
@@ -571,7 +574,7 @@ static void sync_rss_html(char *rss_config_dir, char *html_config_dir, char *pro
/* running is set to 0 in SIGINT signal handler (ctrl+c) */
while(automedia_running) {
sync_tracked_rss(&transmission_session, rss_config_dir, fall);
- sync_tracked_html(html_config_dir, program_dir, download_dir);
+ sync_tracked_html(html_config_dir, program_dir, download_dir, show_error_notifications);
fprintf(stderr, "Finished syncing rss and html. Syncing again in %d minutes\n", sync_rate_sec / 60);
int check_count = 0;
@@ -632,7 +635,26 @@ static void command_sync(int argc, char **argv, char *rss_config_dir, char *html
if(argc < 1)
usage_sync();
- char *download_dir = argv[0];
+ char *download_dir = NULL;
+ bool show_error_notifications = true;
+ for(int i = 0; i < argc; ++i) {
+ if(strncmp(argv[i], "--", 2) == 0) {
+ if(strcmp(argv[i], "--no-error-notification") == 0) {
+ show_error_notifications = false;
+ } else {
+ fprintf(stderr, "Error: invalid option to sync '%s'\n", argv[i]);
+ usage_sync();
+ }
+ } else {
+ download_dir = argv[i];
+ }
+ }
+
+ if(!download_dir) {
+ fprintf(stderr, "Error: download_dir option not specified to sync command\n");
+ usage_sync();
+ }
+
const char automedia_pid_path[] = "/tmp/automedia.pid";
if(create_directory_recursive(download_dir) != 0) {
@@ -695,7 +717,7 @@ static void command_sync(int argc, char **argv, char *rss_config_dir, char *html
close(pid_file);
const int sync_rate_sec = 15 * 60; /* every 15 min */
- sync_rss_html(rss_config_dir, html_config_dir, program_dir, download_dir, sync_rate_sec, &fall);
+ sync_rss_html(rss_config_dir, html_config_dir, program_dir, download_dir, sync_rate_sec, &fall, show_error_notifications);
unlink(automedia_pid_path);
fallback_deinit(&fall);
}