Update.
This commit is contained in:
		
							parent
							
								
									d1bb1ae129
								
							
						
					
					
						commit
						a7b45c2d99
					
				
							
								
								
									
										4
									
								
								browse.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								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; | ||||
|  | ||||
							
								
								
									
										4
									
								
								browse.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								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); | ||||
|  | ||||
| @ -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
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								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; | ||||
| } | ||||
| } | ||||
							
								
								
									
										34
									
								
								rpylib.c
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								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); | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user