4 Commits

Author SHA1 Message Date
63f86aa8e4 Add comments in function get_mb_id. 2024-10-04 20:25:22 -04:00
c7faeb6bc8 get_mb_id now taking artist name as input variable.
The function can now be fed an artist name to be placed in the
MusicBrainz query string. This will allow it to be used in a loop in the
future.
2024-10-04 14:16:04 -04:00
6189a8b17f USERAGENT identifier has been added.
The request to MusicBrainz is now returning real results.
2024-10-04 11:46:32 -04:00
9530bb9190 MusicBraniz request functioning.
It will need to be updated with an identifer to return anything useful.
2024-10-04 11:21:59 -04:00

View File

@@ -1,13 +1,15 @@
#include <libconfig.h>
#include <unistd.h>
#include <curl/curl.h>
#include <libconfig.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define version_str "1.0"
#define conf_file "config.ini"
#define mb_url "https://musicbrainz.org/ws/2/artist?query=artist:\"Slayer\"&fmt=json"
#define mb_url \
"https://musicbrainz.org/ws/2/artist?query=artist:\"%s\"&fmt=json"
const char *get_conf_str(char set_key[10]) {
const char *get_conf_str(char set_key[]) {
const char *prog_conf = malloc(10 * sizeof(char));
config_t cfg;
config_setting_t *setting;
@@ -29,7 +31,7 @@ const char *get_conf_str(char set_key[10]) {
return prog_conf;
}
int get_conf_int(char set_key[10]) {
int get_conf_int(char set_key[]) {
int set_int;
config_t cfg;
config_setting_t *setting;
@@ -51,7 +53,7 @@ int get_conf_int(char set_key[10]) {
return set_int;
}
void print_conf(const char m_dir[20], const int mb_conf,
void print_conf(const char m_dir[], const int mb_conf,
const char ftv_api_key[32]) {
if (m_dir != NULL) {
printf("The music directory is: %s\n", m_dir);
@@ -64,52 +66,59 @@ void print_conf(const char m_dir[20], const int mb_conf,
}
}
const char* get_mb_id(){
int response_code;
const char *mb_id;
CURL *curl;
CURLcode res;
char *buffer;
long res_len;
const char *get_mb_id(char *artist_name) {
int response_code;
const char *mb_id;
CURL *curl;
CURLcode res;
char *buffer;
long res_len;
char mb_url_full[100];
curl_global_init(CURL_GLOBAL_DEFAULT);
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, mb_url);
if (curl) {
/*Make the artist name URL safe.*/
char *artist_name_esc = curl_easy_escape(curl, artist_name, 0);
printf("%s", artist_name_esc);
/*Format the MB URL to insert the Artist name for the query.*/
snprintf(mb_url_full, sizeof(mb_url_full), mb_url, artist_name_esc);
printf("%s\n", mb_url_full);
curl_easy_setopt(curl, CURLOPT_URL, mb_url_full);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "get_artist_art.py/1.0");
res = curl_easy_perform(curl);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed with error: %s\n", curl_easy_strerror(res));
return "1";
}
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed with error: %s\n",
curl_easy_strerror(res));
return "1";
}
curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &res_len);
curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &res_len);
buffer = malloc(res_len);
buffer = malloc(res_len);
res = curl_easy_recv(curl, buffer, res_len, 0);
res = curl_easy_recv(curl, buffer, res_len, 0);
if(res != CURLE_OK){
fprintf(stderr, "curl_easy_recv() failed with error: %s\n", curl_easy_strerror(res));
return "1";
}
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_recv() failed with error: %s\n",
curl_easy_strerror(res));
return "1";
}
printf("Response body: %s\n", buffer);
printf("Response body: %s\n", buffer);
free(buffer);
free(buffer);
curl_easy_cleanup(curl);
}
curl_easy_cleanup(curl);
}
return mb_id;
return mb_id;
}
int main(int argc, char **argv) {
int mb_conf, opt;
const char *m_dir, *ftv_api_key;
@@ -118,16 +127,21 @@ int main(int argc, char **argv) {
mb_conf = get_conf_int("confidence");
ftv_api_key = get_conf_str("api_key");
while ((opt = getopt(argc, argv, "ps:")) != -1){
switch (opt) {
case 'p':
print_conf(m_dir, mb_conf, ftv_api_key);
break;
default:
printf("So long and thanks for all the fish.\n");
break;
}
}
while ((opt = getopt(argc, argv, "ps:")) != -1) {
switch (opt) {
case 'p':
print_conf(m_dir, mb_conf, ftv_api_key);
break;
case 's':
printf("This doesn't do anything yet but you searched for %s\n", optarg);
break;
default:
printf("So long and thanks for all the fish.\n");
break;
}
}
get_mb_id("The Beatles");
return EXIT_SUCCESS;
}