diff options
author | rafa_99 <raroma09@gmail.com> | 2021-09-01 21:25:28 +0100 |
---|---|---|
committer | rafa_99 <raroma09@gmail.com> | 2021-09-01 21:25:28 +0100 |
commit | 0b9ddae0a6bbf3144f13c86f9c96dd67a9174e32 (patch) | |
tree | 00f4ea5a57d0a8e9900682027f6d90d9ebf79141 | |
parent | 99df106665a51925c4f918bf8990c7899c0c0216 (diff) |
Cleaning Up some 🍝
-rw-r--r-- | src/utils.c | 68 |
1 files changed, 23 insertions, 45 deletions
diff --git a/src/utils.c b/src/utils.c index b58836c..8b3e691 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,6 +1,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <stdbool.h> #include "utils.h" #include "../libs/curl.h" #include "../libs/string.h" @@ -136,61 +137,38 @@ char *queryNormalizer(char *query) return norm; } -int* jsonDataLimits(int tokenCount, char **tokens, char *topDelimiter, char *bottomDelimiter) -{ - int *limits = (int *) calloc(2, sizeof(int)); - - for (int i = 0; i < tokenCount + 1 && (limits[0] == 0 || limits[1] == 0); i++) - { - if (tokens[i] != NULL && strcmp(tokens[i], topDelimiter) == 0 && strcmp(tokens[i + 1], "=") == 0) - { - limits[0] = i + 2; - } - else if (tokens[i] != NULL && limits[1] == 0 && limits[0] > 0 && strstr(tokens[i], bottomDelimiter) != NULL) - { - limits[1] = i; - } - } - - return limits; -} - char* extractQueryJSON(char *youtubeurl) { char *json = NULL; if (youtubeurl != NULL && strlen(youtubeurl) > 0) { - // Setting Up Vars - char jsonVar[] = "ytInitialData", unneededHtml[] = ";</script><script", *htmlPage = downloadPage(youtubeurl), **tokens = tokenizer(htmlPage, " "); - int numberOfTokens = tokenCount(htmlPage, " "), *limits = jsonDataLimits(numberOfTokens, tokens, jsonVar, unneededHtml); - json = (char *)calloc(1, sizeof(char)); - - // Pre Clearing Unused Memory - free(htmlPage); - - // Creating the JSON String - for (int i = limits[0]; i <= limits[1]; i++) + char *htmlPage = downloadPage(youtubeurl); + if ( htmlPage != NULL && strlen(htmlPage) > 0 ) { - if (i < limits[1]) - { - json = realloc(json, (strlen(json) + strlen(tokens[i]) + 2)); - strcat(json, tokens[i]); - strcat(json, " "); - } - else + // Setting Up Vars + char jsonVar[] = "ytInitialData", needlessHTML[] = ";</script><script", **tokens = tokenizer(htmlPage, " "); + int numberOfTokens = tokenCount(htmlPage, " "); + json = (char *)calloc(1, sizeof(char)); + + // Extracting JSON String + for (int i = 0, j = 1; i < numberOfTokens && strstr(tokens[j-1], needlessHTML) == NULL; i++) { - // Last byte doesn't need a extra space - json = realloc(json, (strlen(json) + strlen(tokens[i]) + 1)); - strcat(json, tokens[i]); + if ( strcmp(tokens[i], jsonVar) == 0 ) + { + for ( j = i + 2; strstr(tokens[j-1], needlessHTML) == NULL; j++ ) + { + json = realloc(json, (strlen(json) + strlen(tokens[j]) + 2)); + strcat(json, tokens[j]); + strcat(json, " "); + } + } } - } - - json[strlen(json) - strlen(unneededHtml)] = '\0'; - freeTokens(tokens, numberOfTokens); - free(limits); + json[strlen(json) - strlen(needlessHTML)] = '\0'; + freeTokens(tokens, numberOfTokens); + } + free(htmlPage); } - return json; } |