5 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
39c6a1bcc1 Adds functionality to use command line switches.
The program will now accept the following switches:
-p to print the values stored in the config file.
-s NOT IMPLIMENTED YET. Will be used later to search for a given artist.
2024-10-04 11:09:17 -04:00

View File

@@ -1,10 +1,15 @@
#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:\"%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;
@@ -26,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;
@@ -40,7 +45,7 @@ int get_conf_int(char set_key[10]) {
return 1;
}
setting = config_lookup(&cfg, set_key);
setting = config_lookup(&cfg, set_key);
set_int = config_setting_get_int(setting);
config_destroy(&cfg);
@@ -48,7 +53,7 @@ setting = config_lookup(&cfg, set_key);
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);
@@ -61,15 +66,82 @@ void print_conf(const char m_dir[20], const int mb_conf,
}
}
int main() {
int mb_conf;
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 = curl_easy_init();
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);
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);
buffer = malloc(res_len);
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";
}
printf("Response body: %s\n", buffer);
free(buffer);
curl_easy_cleanup(curl);
}
return mb_id;
}
int main(int argc, char **argv) {
int mb_conf, opt;
const char *m_dir, *ftv_api_key;
m_dir = get_conf_str("dir");
mb_conf = get_conf_int("confidence");
ftv_api_key = get_conf_str("api_key");
print_conf(m_dir, mb_conf, ftv_api_key);
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;
}