2026-09-02 15:28:15 +06:00
|
|
|
#include <stdio.h>
|
2026-09-03 21:00:32 +06:00
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <string.h>
|
2026-09-02 15:28:15 +06:00
|
|
|
|
2026-09-03 21:00:32 +06:00
|
|
|
#include "libs/argparse.h"
|
|
|
|
|
#include "curl/curl.h"
|
2026-09-02 15:28:15 +06:00
|
|
|
|
|
|
|
|
struct Scheme{
|
|
|
|
|
char fg_color[8];
|
|
|
|
|
char sub_fg_color[8];
|
|
|
|
|
|
|
|
|
|
char bg_color[8];
|
|
|
|
|
char sub_bg_color[8];
|
|
|
|
|
|
|
|
|
|
char accent[8];
|
|
|
|
|
char sub_accent[8];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void write_pallete(const struct Scheme *s){
|
2026-09-03 21:00:32 +06:00
|
|
|
//s->bg_color
|
2026-09-02 15:28:15 +06:00
|
|
|
}
|
|
|
|
|
|
2026-09-03 21:00:32 +06:00
|
|
|
int download_wall(const char *link){
|
|
|
|
|
CURL *curl;
|
|
|
|
|
FILE *fp;
|
|
|
|
|
CURLcode res;
|
2026-09-02 15:28:15 +06:00
|
|
|
|
2026-09-03 21:00:32 +06:00
|
|
|
const char *outfilename = "wallpaper.jpg";
|
2026-09-02 15:28:15 +06:00
|
|
|
|
2026-09-03 21:00:32 +06:00
|
|
|
curl_global_init(CURL_GLOBAL_ALL);
|
|
|
|
|
curl = curl_easy_init();
|
|
|
|
|
|
|
|
|
|
if(curl) {
|
|
|
|
|
fp = fopen(outfilename, "wb");
|
|
|
|
|
|
|
|
|
|
if(fp == NULL) {
|
|
|
|
|
fprintf(stderr, "ошибка: не удалось создать или открыть файл %s\n", outfilename);
|
|
|
|
|
|
|
|
|
|
curl_easy_cleanup(curl);
|
|
|
|
|
curl_global_cleanup();
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
curl_easy_setopt(curl, CURLOPT_URL, link);
|
|
|
|
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
|
|
|
|
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
|
|
|
|
|
|
|
|
|
res = curl_easy_perform(curl);
|
|
|
|
|
|
|
|
|
|
if(res != CURLE_OK) {
|
|
|
|
|
fprintf(stderr, "ошибка скачивания: %s\n", curl_easy_strerror(res));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fclose(fp);
|
|
|
|
|
|
|
|
|
|
curl_easy_cleanup(curl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
curl_global_cleanup();
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main(int argc, const char **argv) {
|
|
|
|
|
const char* link = NULL;
|
|
|
|
|
const char* scheme_output = NULL;
|
|
|
|
|
const char* wall_output = NULL;
|
|
|
|
|
int is_pastel = 0;
|
|
|
|
|
|
|
|
|
|
struct argparse_option options[] = {
|
|
|
|
|
OPT_HELP(),
|
|
|
|
|
OPT_STRING(0,"link", &link, "ссылка на изображение с сайта wallhave.cc", NULL, 0, 0),
|
|
|
|
|
OPT_BOOLEAN('p', "pastel", &is_pastel, "создать пастельные палитры", NULL, 0, 0),
|
|
|
|
|
OPT_STRING(0,"scheme-output", &scheme_output, "директория для сохранения палитр", NULL, 0, 0),
|
|
|
|
|
OPT_STRING(0,"wall-output", &wall_output, "директория для сохранения обоев", NULL, 0, 0),
|
|
|
|
|
OPT_END(),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct argparse argparse;
|
|
|
|
|
argparse_init(&argparse, options, NULL, 0);
|
|
|
|
|
argc = argparse_parse(&argparse, argc, argv);
|
|
|
|
|
|
|
|
|
|
download_wall(link);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
zenith-cli --link="link" -p/--pastel --scheme-output="path" --wall-output="path"
|
|
|
|
|
|
|
|
|
|
*/
|