#include #include void extract(PyObject* instance) { PyObject *returned_object; Py_ssize_t i, list_size; returned_object = PyObject_CallMethod(instance, "get_result", NULL); /* returned_object: list of dicts. every dict has keys: url, links links is also list */ list_size = PyList_Size(returned_object); for(i = 0; i < list_size; ++i) { PyObject *dict_item, *url, *links; Py_ssize_t links_size, j; dict_item = PyList_GetItem(returned_object, i); assert(dict_item != NULL); url = PyDict_GetItemString(dict_item, "url"); assert(url != NULL); links = PyDict_GetItemString(dict_item, "links"); assert(links != NULL); links_size = PyList_Size(links); printf("url: %s\t", PyString_AsString(url)); printf("%d entries\n", (int)links_size); for(j = 0; j < links_size; ++j) { PyObject *entry_item = PyList_GetItem(links, j); assert(entry_item != NULL); printf("%s\n", PyString_AsString(entry_item)); } Py_DECREF(returned_object); } } int main(int argc, char** argv) { int i; PyObject *module, *class, *instance; int size; if(argc < 2) { fprintf(stderr, "Usage: count_href.out [URLS...]\n"); return 1; } Py_Initialize(); PyRun_SimpleString( "import sys\n" "sys.path.append('.')\n"); module = PyImport_ImportModule("count_href"); assert(module != NULL); class = PyObject_GetAttrString(module, "count_href"); assert(class != NULL); instance = PyObject_CallObject(class, NULL); assert(instance != NULL); for(i = 1; i < argc; ++i) { printf("count_href: %s\n", argv[i]); PyObject_CallMethod(instance, "count", "s", argv[i]); } extract(instance); Py_Finalize(); return 0; }