aboutsummaryrefslogtreecommitdiff
path: root/src/episode.c
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-10-11 22:45:16 +0200
committerdec05eba <dec05eba@protonmail.com>2020-10-11 22:45:16 +0200
commit0fdd38cb99915bf5f41f8b4ecb5fdb5be8014e5d (patch)
treec3e1876d655bd0f6b37cbc97bed27210966ef223 /src/episode.c
parenta0707a1cf4583f7f00a6fbce2f50fecd09ca7be0 (diff)
Make add rss work for anime titles where resolution is in parantheses instead of brackets
Diffstat (limited to 'src/episode.c')
-rw-r--r--src/episode.c29
1 files changed, 21 insertions, 8 deletions
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);