diff --git a/browse.c b/browse.c index ef942d8..f8c547f 100644 --- a/browse.c +++ b/browse.c @@ -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; diff --git a/browse.h b/browse.h index 7273de1..ec67358 100644 --- a/browse.h +++ b/browse.h @@ -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); diff --git a/db_utils.c b/db_utils.c index 877d527..8a51658 100644 --- a/db_utils.c +++ b/db_utils.c @@ -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); } diff --git a/main.c b/main.c index e4a6b49..95375ad 100644 --- a/main.c +++ b/main.c @@ -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; -} +} \ No newline at end of file diff --git a/rpylib.c b/rpylib.c index 92755c8..b75609c 100644 --- a/rpylib.c +++ b/rpylib.c @@ -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); +} \ No newline at end of file diff --git a/rpylib.so b/rpylib.so index 6db39fd..4213a40 100755 Binary files a/rpylib.so and b/rpylib.so differ