summaryrefslogtreecommitdiff
path: root/src/shoki/cpy
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-01-01 11:23:22 -0500
committerAndrew Opalach <andrew@akon.city> 2024-01-01 11:23:22 -0500
commit130a0edc0405e53b45f8b2f8da0b94356480a644 (patch)
tree76cda2f7e0098bdcb6c54dc152bf3e95467fd44e /src/shoki/cpy
parent099126fdca625c5f6c219c5a1a7ecbc0e145988f (diff)
downloadcamu-130a0edc0405e53b45f8b2f8da0b94356480a644.tar.gz
camu-130a0edc0405e53b45f8b2f8da0b94356480a644.tar.bz2
camu-130a0edc0405e53b45f8b2f8da0b94356480a644.zip
wip
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/shoki/cpy')
-rw-r--r--src/shoki/cpy/lib.pxd13
-rw-r--r--src/shoki/cpy/post.pxd58
-rw-r--r--src/shoki/cpy/result.pxd8
-rw-r--r--src/shoki/cpy/setup.py6
-rw-r--r--src/shoki/cpy/shoki.pyx132
-rw-r--r--src/shoki/cpy/str.pxd11
-rw-r--r--src/shoki/cpy/types.pxd11
7 files changed, 0 insertions, 239 deletions
diff --git a/src/shoki/cpy/lib.pxd b/src/shoki/cpy/lib.pxd
deleted file mode 100644
index 5749141..0000000
--- a/src/shoki/cpy/lib.pxd
+++ /dev/null
@@ -1,13 +0,0 @@
-include "types.pxd"
-
-cdef extern from "<al/lib.h>":
- void al_free(void *ptr)
- void al_malloc(size_t size)
- void al_strlen(char *s)
- void al_bzero(void *s, size_t n)
-
-cdef extern from "<al/log.h>":
- s32 al_log_info(const char *ns, const char *, ...)
- s32 al_log_warn(const char *ns, const char *, ...)
- s32 al_log_error(const char *ns, const char *, ...)
- s32 al_log_debug(const char *ns, const char *, ...)
diff --git a/src/shoki/cpy/post.pxd b/src/shoki/cpy/post.pxd
deleted file mode 100644
index 0b0a97e..0000000
--- a/src/shoki/cpy/post.pxd
+++ /dev/null
@@ -1,58 +0,0 @@
-include "str.pxd"
-
-cdef extern from "../../shoki/src/post.h":
- ctypedef struct sho_optional_int:
- s64 i
- bool set
-
- cdef struct sho_post_date:
- u8 type
- s64 timestamp
-
- cdef struct sho_post_media:
- u8 type
- str url
- str thumbnail_url
-
- ctypedef struct sho_dates_array:
- u32 size
- u32 alloc
- sho_post_date *data
-
- ctypedef struct sho_media_array:
- u32 size
- u32 alloc
- sho_post_media *data
-
- cdef struct sho_post_user:
- str unique_id
- str username
- str display_name
- str profile_image_url
-
- cdef struct sho_post_ref:
- str unique_id
-
- cdef struct sho_post:
- u16 version
- u8 type
- str unique_id
- str raw_responses
- str url
- sho_dates_array dates
- sho_post_user author
- str title
- str text
- sho_optional_int likes
- sho_optional_int reposts
- sho_optional_int quotes
- sho_optional_int comments
- sho_optional_int views
- sho_media_array media
- sho_post_ref post
- sho_post_ref quoted
- sho_post_ref in_reply_to
-
- void sho_post_reset(sho_post *post)
- void sho_post_add_media(sho_post *post, u8 type, str *url, str *thumbnail_url)
- void sho_post_add_date(sho_post *post, u8 type, s64 timestamp)
diff --git a/src/shoki/cpy/result.pxd b/src/shoki/cpy/result.pxd
deleted file mode 100644
index 1bebb55..0000000
--- a/src/shoki/cpy/result.pxd
+++ /dev/null
@@ -1,8 +0,0 @@
-include "post.pxd"
-
-cdef extern from "../../shoki/src/search.h":
- cdef struct sho_result:
- pass
-
- void sho_result_add_post(sho_result *res, s32 page, sho_post *post)
- void sho_result_add_to_list(sho_result *res, s32 page, str *unique_id)
diff --git a/src/shoki/cpy/setup.py b/src/shoki/cpy/setup.py
deleted file mode 100644
index 1b491f1..0000000
--- a/src/shoki/cpy/setup.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from Cython.Build import cythonize
-from Cython.Compiler import Options
-from setuptools import Extension
-Options.embed = True
-alabaster_inc = "../../../subprojects/libalabaster/include"
-cythonize([Extension("shoki", ["shoki.pyx"], include_dirs=[alabaster_inc], extra_link_args=[])], language_level=3)
diff --git a/src/shoki/cpy/shoki.pyx b/src/shoki/cpy/shoki.pyx
deleted file mode 100644
index 6d1dd56..0000000
--- a/src/shoki/cpy/shoki.pyx
+++ /dev/null
@@ -1,132 +0,0 @@
-cimport lib
-cimport str
-cimport post
-cimport result
-
-import sys
-sys.path.append('./py')
-
-cdef public int log_info(char *msg) except -1:
- return lib.al_log_info("shoki", "%s", msg)
-
-cdef public int log_warn(char *msg) except -1:
- return lib.al_log_warn("shoki", "%s", msg)
-
-cdef public int log_error(char *msg) except -1:
- return lib.al_log_error("shoki", "%s", msg)
-
-cdef public int log_debug(char *msg) except -1:
- return lib.al_log_debug("shoki", "%s", msg)
-
-def encode_str(str):
- return str.encode('UTF-8')
-
-def decode_str(str):
- return str.decode('UTF-8')
-
-class OutputHook(object):
- def __init__(self):
- self.fd = sys.__stdout__
-
- def __getattr__(self, attr):
- return getattr(self.fd, attr)
-
- def write(self, msg):
- if len(msg) > 0 and msg != '\n':
- log_debug(encode_str(msg))
-
-hook = OutputHook()
-sys.stdout = hook
-sys.stderr = hook
-
-class ShokiLogger():
- def debug(self, msg):
- log_debug(encode_str(msg))
-
- def info(self, msg):
- log_info(encode_str(msg))
-
- def warning(self, msg):
- log_warn(encode_str(msg))
-
- def error(self, msg):
- log_error(encode_str(msg))
-
-import log
-log.set_logger(ShokiLogger())
-
-def exception_handler(exception_type, exception, traceback):
- log.error(repr(exception))
-sys.excepthook = exception_handler
-
-import client
-from post import PostType, DateType
-
-shoki = client.ShokiClient()
-for name, p in client.ALL_PROVIDERS.items():
- if p[0].init():
- shoki.register_provider(name, p)
-
-cdef public int sho_client_search(str.str *provider, str.str *query) except -1:
- cdef char *c_str0 = str.al_str_to_c_str(provider)
- cdef char *c_str1 = str.al_str_to_c_str(query)
- ret = shoki.search(decode_str(c_str0), decode_str(c_str1))
- lib.al_free(c_str0)
- lib.al_free(c_str1)
- return ret
-
-cdef public int py_str_to_str(str.str *s, char *py_c_str) except -1:
- str.al_str_from(s, py_c_str)
- return 0
-
-cdef public int sho_client_get_page(result.sho_result *res, int search_id, int num) except -1:
- cdef post.sho_post cpost
- cdef str.str url
- cdef str.str thumbnail_url
- cdef str.str unique_id
- page = shoki.get_page(search_id, num)
- if not page: return -1
- for py_post in page['posts']:
- post.sho_post_reset(&cpost)
- cpost.version = py_post.version
- cpost.type = py_post.type.value
- py_str_to_str(&cpost.unique_id, encode_str(py_post.unique_id))
- py_str_to_str(&cpost.url, encode_str(py_post.url))
- for date in py_post.dates:
- post.sho_post_add_date(&cpost, date.value, py_post.dates[date])
- py_str_to_str(&cpost.author.unique_id, encode_str(py_post.author.unique_id))
- py_str_to_str(&cpost.author.username, encode_str(py_post.author.username))
- py_str_to_str(&cpost.author.display_name, encode_str(py_post.author.display_name))
- py_str_to_str(&cpost.author.profile_image_url, encode_str(py_post.author.profile_image_url))
- if cpost.type == PostType.REPOST.value:
- py_str_to_str(&cpost.post.unique_id, encode_str(py_post.post.unique_id))
- result.sho_result_add_post(res, num, &cpost)
- continue
- py_str_to_str(&cpost.title, encode_str(py_post.title))
- py_str_to_str(&cpost.text, encode_str(py_post.text))
- cpost.likes.set = py_post.likes != None
- if cpost.likes.set:
- cpost.likes.i = py_post.likes
- cpost.reposts.set = py_post.reposts != None
- if cpost.reposts.set:
- cpost.reposts.i = py_post.reposts
- cpost.quotes.set = py_post.quotes != None
- if cpost.quotes.set:
- cpost.quotes.i = py_post.quotes
- cpost.comments.set = py_post.comments != None
- if cpost.comments.set:
- cpost.comments.i = py_post.comments
- cpost.views.set = py_post.views != None
- if cpost.views.set:
- cpost.views.i = py_post.views
- for media in py_post.media:
- py_str_to_str(&url, encode_str(media.url))
- py_str_to_str(&thumbnail_url, encode_str(media.thumbnail_url))
- post.sho_post_add_media(&cpost, 0, &url, &thumbnail_url)
- py_str_to_str(&cpost.quoted.unique_id, encode_str(py_post.quoted.unique_id))
- py_str_to_str(&cpost.in_reply_to.unique_id, encode_str(py_post.in_reply_to.unique_id))
- result.sho_result_add_post(res, num, &cpost)
- for py_unique_id in page['list']:
- py_str_to_str(&unique_id, encode_str(py_unique_id))
- result.sho_result_add_to_list(res, num, &unique_id)
- return 0
diff --git a/src/shoki/cpy/str.pxd b/src/shoki/cpy/str.pxd
deleted file mode 100644
index a12ced4..0000000
--- a/src/shoki/cpy/str.pxd
+++ /dev/null
@@ -1,11 +0,0 @@
-include "types.pxd"
-
-cdef extern from "<al/str.h>":
- ctypedef struct str:
- u32 len
- s32 alloc
- char *data
-
- void al_str_from(str *s, const char *str)
- char *al_str_to_c_str(str *s)
-
diff --git a/src/shoki/cpy/types.pxd b/src/shoki/cpy/types.pxd
deleted file mode 100644
index fec35a5..0000000
--- a/src/shoki/cpy/types.pxd
+++ /dev/null
@@ -1,11 +0,0 @@
-ctypedef unsigned char u8;
-ctypedef char s8;
-ctypedef unsigned short u16;
-ctypedef short s16;
-ctypedef unsigned int u32;
-ctypedef int s32;
-ctypedef unsigned long u64;
-ctypedef long s64;
-ctypedef float f32;
-ctypedef double f64;
-ctypedef bint bool