summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrafa_99 <raroma09@gmail.com>2021-09-01 21:25:28 +0100
committerrafa_99 <raroma09@gmail.com>2021-09-01 21:25:28 +0100
commit0b9ddae0a6bbf3144f13c86f9c96dd67a9174e32 (patch)
tree00f4ea5a57d0a8e9900682027f6d90d9ebf79141
parent99df106665a51925c4f918bf8990c7899c0c0216 (diff)
Cleaning Up some 🍝
-rw-r--r--src/utils.c68
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;
}