This commit is contained in:
retoor 2025-04-03 05:26:11 +02:00
parent d1bb1ae129
commit a7b45c2d99
6 changed files with 42 additions and 22 deletions

View File

@ -1,4 +1,6 @@
#include "browse.h"
#include <stdio.h>
#include <stdlib.h>
int main() {
char *query = "example";
@ -8,7 +10,7 @@ int main() {
printf("Result: %s\n", result);
free(result); // Free the allocated memory for the result
} else {
printf("Failed to fetch news.\n");
fprintf(stderr, "Error: Failed to fetch news.\n");
}
return 0;

View File

@ -13,7 +13,7 @@ char *web_search_news(char *q) {
news[0] = 0;
char *q_encoded = url_encode(q);
sprintf(news,
"https://search.molodetz.nl/search?q=%s&format=json&categories=news",
"https://search.molodetz.nl/search?q=%s&format=json&categories=news&preferences=eJx1WMuy4zYO_Zp4o4ormaRqahZepZL5gexVFAlLiEhCzYdt3a8PoIdFWt2Ldl8fkCCIxwForRL0FBDirQcPQdmLVb7PqoebyokulrSycPP2Il81uclCgtvlrh6oybcBItkHhNsFHW9qp0Cv-faXshEuDtJA5vb_P_--RHWHCCro4fbLJQ3g4BZRdF1YQbYptqzLw7NNqtt2G8JDOyn-eqXQX9ZtbUyz3UzU4BOEVlnsveO_t_3KPJTXYNrt3BX9liHMLfo2YWIFK4j-jh4Ta9WBrN3QdZ8YplcvzazKgk63v0OGy0BphDneDNwV3-CSg23vFJxKCX1_mwKkNF8MRtVZtgJ8j57d_L9e9W0bSaOyjQOD6qf__MG366CJ7OCxbRdHxhptHmiA2nb571OmskGWuRxRi8hOfFJj0edXMyk9ijpWm0TmvYqN3Asf0LZ3tOtJ09g4DIFCibGfG_6UU0K52CuOvFGbSo8vis0TR9yADi3Kv8LaDlOX9QhpX5IM9v2hcvHDVWt9NVBs0xN78Q4BOI7bTg5QjAyyCzUKztgMU7M6rXCegJxQDMknAwbgi9Pk7SYDMamEvIA4IQMjEOiJ5vhu2GT519NZfSFbzS3MLmS1BQf-BCWHHGet3nZq4uX8KdY4-gcnccyx6tdXYcLdBBJzdydyDps0qOS4usplAThR6J6eKkBjMHAGSy6v_rwH9CMqXW6Y58IJPeDXwPVQIFw5qtvjQQY6CP32lWXAgSS3fycyAZQptxP1fNXJqlmyKx4XKCWOHgilU7muIEjNCO2UkRhUF5R8bEcOnPEQVsevALzeycNK4lWKZfmOznSHYej6HArF6FVxPnr-EynH72N7VnHEAlPJXOj5B-NAxzFcHEGFuRG-jVhc31IXE1zDbjfTp9KT8nudTbtT_azUsY3MHKGsGprAb4ccpwrICoFqKMBEhQkrW2Dc65TLb2XBcwEcoirHp9xxDT-2_QGMwXSiu0ApMVETx5SgSA0mS51jvE4zN4793loZM0tKubw5drEMfx7IwglfbZKsbOTjjTrlE-omat6lQskeicaZEnGMRvH17ook9-TlKr_vlqp0EcaLE-glTQ91JhvwxyouYoDx7L4Nr3y35PyEltKxP-Ru7sHtOTEBhJS7MtyLU3n1yJufT-gK0az0fD46ZMcdqVhmuRdEDn2JPemFI3mOZRNnT34WTtmN4nwbQ237Cp3OWuETQ8ZHL5lXLHwwlS0da7vonJ2zc1U1R2VEykHDkN9pOvbXnva8u4CvWy4PMC_lTRAm3aYcYVzJ3bVJFs1LBU6TsgeHFz7K-Ko4llo6VqyVmw4GEGUbbRfLeCT4_H721oJWbl2Qk_u6qSuVSSHzkBRL1tcD3Efi8eXtQW0pmzsnPygsd3NHfRrJnRLk7lmt4eEG4QORtjyXGPsfuczYhWWjNH3DI5LMV7gQd7GehKmbIe_NRBSymdvgVawUnxqVKpce3bREefaCubIU0uyICdEXCXy3qMeS63k5ljTeCz3tbYKb2mHj2qTKA7a2dYrmhlfx3LBTRDf8O_Q0bOcth49stoplzwDn5mYnwZWKaq5dV-QI4Ucy7gDpRzLRzK44i79-freYty1bY6M7b_Nc4LH0hkghBeWj5SZc-o9D0z-q0DrFI6ch_wOz3-JBxYF5-jsrzN49HL6WxD9C6-hrqArAPZkP6-N5JIJ9npDqUjw1Sf5FSBXZ7zLuepxRasvwWh4TD2CJZ7p9sJuM8PexaOKXhHS7TYrymoFY1tAkhFJky_L9ulzouNeEMt10qojIRMxNkUvCyAi0J_-7c5d3Ptr5npuFbLldY7hfo1_z_HhCHEbmzomVxcXmaafVb08mhlLnAtS1sUKnMlrhU8UExZNX0zF5xXKqD9gPqTGqIoX1Zm6OWGde5G6rdl8czYkyc3qdNPxU0CMxyd4tPfdWEcfcZZ_y3pUyz345vhMnChNO8igujySLhufvsFbV96aNY3H2kYfhOJTPGjVQdbcFqB05U_6YEd7I-_Gj0DItSsIWyx7oqkfmE7v5k4Y7ojF-gtXxAnzLVLt6mZaWtn1C9xmqgsWyaoCVpdLkllGv1vCg-cPLggp1cTleTwlVCk9pVQo_3tWlaInbEb4n2XtQjl_eQ92jUKcv8pVtjkcpxw-w5k2GphT_-ttv_30dmiN8eeWq_cvkWCJePSTpypyoG_OTgvE4FgMcn62reuRul-QBKYo-yPSprB34CP_hQ8c9vTolpXDFYvbldvCorr4A54Cs8HnKWeDP9lnpS7_vPyIcP7RMNvPYF2-k2vUnpGfgsl86aUzsy7XeKLQ8IunxPSzu28QzPJW08nNO4EA91uFJWZ05VhSWsuQ3Dbc4FqVtHrb3Fv2d5BSp11XZhZ8WzP-3fwFOiVFV",
q_encoded);
free(q_encoded);
char *ret = curl_get(news);
@ -35,7 +35,7 @@ char *web_search(char *q) {
char *news = (char *)malloc(4096);
news[0] = 0;
char *q_encoded = url_encode(q);
sprintf(news, "https://search.molodetz.nl/search?q=%s&format=json",
sprintf(news, "https://search.molodetz.nl/search?q=%s&format=json&preferences=eJx1WMuy4zYO_Zp4o4ormaRqahZepZL5gexVFAlLiEhCzYdt3a8PoIdFWt2Ldl8fkCCIxwForRL0FBDirQcPQdmLVb7PqoebyokulrSycPP2Il81uclCgtvlrh6oybcBItkHhNsFHW9qp0Cv-faXshEuDtJA5vb_P_--RHWHCCro4fbLJQ3g4BZRdF1YQbYptqzLw7NNqtt2G8JDOyn-eqXQX9ZtbUyz3UzU4BOEVlnsveO_t_3KPJTXYNrt3BX9liHMLfo2YWIFK4j-jh4Ta9WBrN3QdZ8YplcvzazKgk63v0OGy0BphDneDNwV3-CSg23vFJxKCX1_mwKkNF8MRtVZtgJ8j57d_L9e9W0bSaOyjQOD6qf__MG366CJ7OCxbRdHxhptHmiA2nb571OmskGWuRxRi8hOfFJj0edXMyk9ijpWm0TmvYqN3Asf0LZ3tOtJ09g4DIFCibGfG_6UU0K52CuOvFGbSo8vis0TR9yADi3Kv8LaDlOX9QhpX5IM9v2hcvHDVWt9NVBs0xN78Q4BOI7bTg5QjAyyCzUKztgMU7M6rXCegJxQDMknAwbgi9Pk7SYDMamEvIA4IQMjEOiJ5vhu2GT519NZfSFbzS3MLmS1BQf-BCWHHGet3nZq4uX8KdY4-gcnccyx6tdXYcLdBBJzdydyDps0qOS4usplAThR6J6eKkBjMHAGSy6v_rwH9CMqXW6Y58IJPeDXwPVQIFw5qtvjQQY6CP32lWXAgSS3fycyAZQptxP1fNXJqlmyKx4XKCWOHgilU7muIEjNCO2UkRhUF5R8bEcOnPEQVsevALzeycNK4lWKZfmOznSHYej6HArF6FVxPnr-EynH72N7VnHEAlPJXOj5B-NAxzFcHEGFuRG-jVhc31IXE1zDbjfTp9KT8nudTbtT_azUsY3MHKGsGprAb4ccpwrICoFqKMBEhQkrW2Dc65TLb2XBcwEcoirHp9xxDT-2_QGMwXSiu0ApMVETx5SgSA0mS51jvE4zN4793loZM0tKubw5drEMfx7IwglfbZKsbOTjjTrlE-omat6lQskeicaZEnGMRvH17ook9-TlKr_vlqp0EcaLE-glTQ91JhvwxyouYoDx7L4Nr3y35PyEltKxP-Ru7sHtOTEBhJS7MtyLU3n1yJufT-gK0az0fD46ZMcdqVhmuRdEDn2JPemFI3mOZRNnT34WTtmN4nwbQ237Cp3OWuETQ8ZHL5lXLHwwlS0da7vonJ2zc1U1R2VEykHDkN9pOvbXnva8u4CvWy4PMC_lTRAm3aYcYVzJ3bVJFs1LBU6TsgeHFz7K-Ko4llo6VqyVmw4GEGUbbRfLeCT4_H721oJWbl2Qk_u6qSuVSSHzkBRL1tcD3Efi8eXtQW0pmzsnPygsd3NHfRrJnRLk7lmt4eEG4QORtjyXGPsfuczYhWWjNH3DI5LMV7gQd7GehKmbIe_NRBSymdvgVawUnxqVKpce3bREefaCubIU0uyICdEXCXy3qMeS63k5ljTeCz3tbYKb2mHj2qTKA7a2dYrmhlfx3LBTRDf8O_Q0bOcth49stoplzwDn5mYnwZWKaq5dV-QI4Ucy7gDpRzLRzK44i79-freYty1bY6M7b_Nc4LH0hkghBeWj5SZc-o9D0z-q0DrFI6ch_wOz3-JBxYF5-jsrzN49HL6WxD9C6-hrqArAPZkP6-N5JIJ9npDqUjw1Sf5FSBXZ7zLuepxRasvwWh4TD2CJZ7p9sJuM8PexaOKXhHS7TYrymoFY1tAkhFJky_L9ulzouNeEMt10qojIRMxNkUvCyAi0J_-7c5d3Ptr5npuFbLldY7hfo1_z_HhCHEbmzomVxcXmaafVb08mhlLnAtS1sUKnMlrhU8UExZNX0zF5xXKqD9gPqTGqIoX1Zm6OWGde5G6rdl8czYkyc3qdNPxU0CMxyd4tPfdWEcfcZZ_y3pUyz345vhMnChNO8igujySLhufvsFbV96aNY3H2kYfhOJTPGjVQdbcFqB05U_6YEd7I-_Gj0DItSsIWyx7oqkfmE7v5k4Y7ojF-gtXxAnzLVLt6mZaWtn1C9xmqgsWyaoCVpdLkllGv1vCg-cPLggp1cTleTwlVCk9pVQo_3tWlaInbEb4n2XtQjl_eQ92jUKcv8pVtjkcpxw-w5k2GphT_-ttv_30dmiN8eeWq_cvkWCJePSTpypyoG_OTgvE4FgMcn62reuRul-QBKYo-yPSprB34CP_hQ8c9vTolpXDFYvbldvCorr4A54Cs8HnKWeDP9lnpS7_vPyIcP7RMNvPYF2-k2vUnpGfgsl86aUzsy7XeKLQ8IunxPSzu28QzPJW08nNO4EA91uFJWZ05VhSWsuQ3Dbc4FqVtHrb3Fv2d5BSp11XZhZ8WzP-3fwFOiVFV",
q_encoded);
free(q_encoded);
char *ret = curl_get(news);

View File

@ -1,5 +1,7 @@
#include "db_utils.h"
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
void db_initialize() {
sqlite3 *db;
@ -7,6 +9,7 @@ void db_initialize() {
int rc = sqlite3_open("database.db", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Error: Cannot open database: %s\n", sqlite3_errmsg(db));
return;
}
@ -15,6 +18,7 @@ void db_initialize() {
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", err_msg);
sqlite3_free(err_msg);
}

18
main.c
View File

@ -12,7 +12,6 @@
#include "openai.h"
#include "utils.h"
#include "db_utils.h"
#include "tools.h"
volatile sig_atomic_t sigint_count = 0;
@ -38,6 +37,13 @@ char *get_prompt_from_stdin(char *prompt) {
char *get_prompt_from_args(int argc, char **argv) {
char *prompt = malloc(10 * 1024 * 1024 + 1);
char *system = malloc(1024 * 1024);
if (!prompt || !system) {
fprintf(stderr, "Error: Memory allocation failed.\n");
free(prompt);
free(system);
return NULL;
}
bool get_from_std_in = false;
for (int i = 1; i < argc; i++) {
@ -62,7 +68,7 @@ char *get_prompt_from_args(int argc, char **argv) {
} else if (strcmp(argv[i], "--nh") == 0) {
SYNTAX_HIGHLIGHT_ENABLED = false;
fprintf(stderr, "Syntax highlighting disabled.\n");
} else if (!get_from_std_in) {
} else {
strcat(system, argv[i]);
strcat(system, (i < argc - 1) ? " " : ".");
}
@ -70,7 +76,6 @@ char *get_prompt_from_args(int argc, char **argv) {
if (get_from_std_in) {
if (*system) openai_system(system);
free(system);
prompt = get_prompt_from_stdin(prompt);
} else {
free(prompt);
@ -101,7 +106,6 @@ bool try_prompt(int argc, char *argv[]) {
return false;
}
char **get_parameters(const char *content, const char *delimiter) {
char *start = NULL;
char **parameters = NULL;
@ -141,7 +145,6 @@ void repl() {
line = line_read("> ");
if (!line || !*line) continue;
if (!strncmp(line, "!dump", 5)) {
printf("%s\n", message_json());
continue;
@ -187,7 +190,6 @@ void repl() {
}
}
char *strreplace(const char *content, const char *what, const char *with) {
char *pos = strstr(content, what);
if (!pos) return strdup(content);
@ -219,7 +221,7 @@ void init() {
schema);
free(schema);
fprintf(stderr, "Loading... ");
fprintf(stderr, "Loading... 4e6");
openai_system(payload);
if (!openai_include(".rcontext.txt")) {
openai_include("~/.rcontext.txt");
@ -251,4 +253,4 @@ int main(int argc, char *argv[]) {
repl();
return 0;
}
}

View File

@ -46,42 +46,59 @@ static PyObject *rpylib_reset(PyObject *self, PyObject *args) {
static PyObject *rpylib_chat(PyObject *self, PyObject *args) {
const char *role, *message;
printf("That goes alright! 1\n");
if (!PyArg_ParseTuple(args, "ss", &role, &message)) {
return NULL;
}
printf("That goes alright! 2\n");
char *result = openai_chat(role, message);
if (!result) {
PyErr_SetString(PyExc_RuntimeError, "Failed to get response from OpenAI.");
return NULL;
}
PyObject *py_result = PyUnicode_FromString(result);
free(result);
return py_result;
}
static PyObject *rpylib_prompt(PyObject *self, PyObject *args) {
const char *role = "user";
const char *message;
if (!PyArg_ParseTuple(args, "s", &message)) {
return NULL;
}
char *result = openai_chat(role, message);
if (!result) {
PyErr_SetString(PyExc_RuntimeError, "Failed to get response from OpenAI.");
return NULL;
}
PyObject *py_result = PyUnicode_FromString(result);
free(result);
return py_result;
}
static PyObject *rpylib_system(PyObject *self, PyObject *args) {
const char *role = "system";
const char *message;
if (!PyArg_ParseTuple(args, "s", &message)) {
return NULL;
}
char *result = openai_chat(role, message);
if (!result) {
PyErr_SetString(PyExc_RuntimeError, "Failed to get response from OpenAI.");
return NULL;
}
PyObject *py_result = PyUnicode_FromString(result);
free(result);
return py_result;
}
static PyMethodDef MyModuleMethods[] = {
{"chat", rpylib_chat, METH_VARARGS, "Chat with OpenAI."},
//{"prompt", rpylib_prompt, METH_VARARGS, "Prompt to OpenAI."},
//{"system", rpylib_system, METH_VARARGS, "Add system message."},
{"reset", rpylib_reset, METH_NOARGS, "Reset message history."},
{NULL, NULL, 0, NULL}};
@ -90,11 +107,6 @@ static struct PyModuleDef rpylib = {
"R - the power of R in Python, made by retoor.", -1, MyModuleMethods};
PyMODINIT_FUNC PyInit_rpylib(void) {
auth_init();
printf("Init\n");
void *res = PyModule_Create(&rpylib);
printf("GLOB\n");
return res;
}
return PyModule_Create(&rpylib);
}

BIN
rpylib.so

Binary file not shown.