From 0fdd38cb99915bf5f41f8b4ecb5fdb5be8014e5d Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 11 Oct 2020 22:45:16 +0200 Subject: Make add rss work for anime titles where resolution is in parantheses instead of brackets --- src/episode.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'src/episode.c') diff --git a/src/episode.c b/src/episode.c index 67ec5ba..b74417a 100644 --- a/src/episode.c +++ b/src/episode.c @@ -77,7 +77,16 @@ int episode_info_create_from_episode_name(EpisodeInfo *self, const char *episode self->anime_name = strip(self->anime_name); episode_name_offset += anime_name_len + 1; - int resolution_index = string_find(episode_name_stripped, episode_name_stripped_len, last_dash + 1, '['); + int resolution_index_bracket = string_find(episode_name_stripped, episode_name_stripped_len, last_dash + 1, '['); + int resolution_index_parentheses = string_find(episode_name_stripped, episode_name_stripped_len, last_dash + 1, '('); + char resolution_end_char = ']'; + int resolution_index = resolution_index_bracket; + self->resolution_in_brackets = 1; + if(resolution_index_parentheses != -1 && resolution_index_parentheses < resolution_index_bracket) { + resolution_index = resolution_index_parentheses; + resolution_end_char = ')'; + self->resolution_in_brackets = 0; + } if(resolution_index == -1) { /* TODO: Test if this works */ int episode_len = episode_name_stripped_len - (last_dash + 1); @@ -93,13 +102,15 @@ int episode_info_create_from_episode_name(EpisodeInfo *self, const char *episode self->episode = strip(self->episode); episode_name_offset += episode_len + 1; - int resolution_end = string_find(episode_name_stripped, episode_name_stripped_len, resolution_index + 1, ']'); + int resolution_end = string_find(episode_name_stripped, episode_name_stripped_len, resolution_index + 1, resolution_end_char); if(resolution_end != -1) { int resolution_len = resolution_end - (resolution_index + 1); - self->resolution = self->episode_name + episode_name_offset; - memcpy(self->resolution, episode_name_stripped + resolution_index + 1, resolution_len); - self->resolution[resolution_len] = '\0'; - self->resolution = strip(self->resolution); + if(resolution_len != 8 && episode_name_stripped[resolution_end - 1] == 'p') { // resolution_len is 8 when [] is a CRC and not resolution + self->resolution = self->episode_name + episode_name_offset; + memcpy(self->resolution, episode_name_stripped + resolution_index + 1, resolution_len); + self->resolution[resolution_len] = '\0'; + self->resolution = strip(self->resolution); + } } } @@ -112,10 +123,12 @@ int episode_info_get_generic_name(EpisodeInfo *self, char *output_buffer, int ou int bytes_written = 0; if(self->resolution) { + char res_start_symbol = (self->resolution_in_brackets ? '[' : '('); + char res_end_symbol = (self->resolution_in_brackets ? ']' : ')'); if(self->extension) - bytes_written = snprintf(output_buffer, output_buffer_size, "[%s] %s [%s]%s", self->group_name, self->anime_name, self->resolution, self->extension); + bytes_written = snprintf(output_buffer, output_buffer_size, "[%s] %s %c%s%c%s", self->group_name, self->anime_name, res_start_symbol, self->resolution, res_end_symbol, self->extension); else - bytes_written = snprintf(output_buffer, output_buffer_size, "[%s] %s [%s]", self->group_name, self->anime_name, self->resolution); + bytes_written = snprintf(output_buffer, output_buffer_size, "[%s] %s %c%s%c", self->group_name, self->anime_name, res_start_symbol, self->resolution, res_end_symbol); } else { if(self->extension) bytes_written = snprintf(output_buffer, output_buffer_size, "[%s] %s%s", self->group_name, self->anime_name, self->extension); -- cgit v1.2.3