{"id":15723632,"url":"https://github.com/xaviave/cudi_rs","last_synced_at":"2025-07-04T03:06:09.658Z","repository":{"id":186684556,"uuid":"599960271","full_name":"xaviave/cudi_rs","owner":"xaviave","description":"This app is a display of the world, it will show you images with a particular aesthetic to keep your attention on the screen.","archived":false,"fork":false,"pushed_at":"2023-09-07T09:12:56.000Z","size":546476,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"refacto_engine","last_synced_at":"2025-03-31T00:17:42.052Z","etag":null,"topics":["glutin","iced","opengl","opengl-es","rust","winit"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xaviave.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-10T09:08:11.000Z","updated_at":"2024-06-04T09:33:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"a87b7e37-a3f2-4f4b-b92b-0f0fbc12606a","html_url":"https://github.com/xaviave/cudi_rs","commit_stats":null,"previous_names":["xaviave/cudi_rs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xaviave/cudi_rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviave%2Fcudi_rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviave%2Fcudi_rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviave%2Fcudi_rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviave%2Fcudi_rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xaviave","download_url":"https://codeload.github.com/xaviave/cudi_rs/tar.gz/refs/heads/refacto_engine","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviave%2Fcudi_rs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263437338,"owners_count":23466365,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["glutin","iced","opengl","opengl-es","rust","winit"],"created_at":"2024-10-03T22:12:36.996Z","updated_at":"2025-07-04T03:06:04.637Z","avatar_url":"https://github.com/xaviave.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CUDI\n\n### Description\n\nCUDI is for Custom Diaporama.\nThis app is a display of the world, it will show you images with a particular aesthetic to keep your attention on the screen.\n\n---\n\n## Installation\n\n- Never forget to update your system:\n\n      sudo apt update \u0026\u0026 sudo apt upgrade\n\n- Install [Rust and Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html) if it's not already done\n\n- Install PostgreSQL:\n\n      linux:\n      sudo apt install postgresql postgresql-client\n\n      windows:\n      setx PQ_LIB_DIR \"C:\\Program Files\\PostgreSQL\\15\\lib\"\n      install postgresql from their website\n\n- set this env\n\n      echo DATABASE_URL=postgres://username:password@localhost/diesel_demo \u003e .env\n\n- Create the database:\n\n      CREATE ROLE gmx;\n      CREATE DATABASE cudi_db;\n      CREATE USER gmx WITH PASSWORD '1234';\n      ALTER ROLE gmx SET default_transaction_isolation TO 'read committed';\n      GRANT ALL PRIVILEGES ON DATABASE cudi_db TO gmx;\n      \\q\n\n- Run following commands:\n\n      cd media_handler\n      diesel migration run\n      cd ..\n      python3 toolbox.py -fc/--from-scratch\n\n---\n\n## To do\n\n### Steps\n\n1. Simple OpenGL engine in Rust:\n   - ~~Open a window with some images shown~~\n   - ~~Handle the high volume of local image to download per-second~~\n   - Handle the sound\n   - Handle video on screen\n2. Options and customizations of the engine:\n   - Custom parameter to control the engine\n     - ~~FPS~~\n     - Filter\n     - Mode (Cinema/Background/image with cudi in a plain rect see data/readme)\n     - ~~Media path selector~~\n     - Tags (WIP)\n     - Animations\n   - Custom parameter in UX\n   - Show Music player\n   - Show Music analysis window\n   - Media history (like/dislike) -\u003e search engine w/ postgresql (WIP)\n3. External API (real-time data acquisition):\n   - Download photos or videos from API such as Archillect, Tumblr ou Google Photos\n   - Handle the Deezer or Youtube API to play music\n4. ML everywhere:\n   - Add auto tagging image/video with themes/colors\n   - Add music tagging with themes/styles and BPM selector\n   - Adapt music and image/video BPM and tags\n\n---\n\n### Main parts:\n\n#### Image selector\n\n- create a database to stock the link of the image\n- create an ImageLink class that get the link from Archillect or Google Photos or instagram feed (check the max requests)\n- create an ML tag creator class using tensorflow to make a classification from all images\n- found different sources to get the image's links\n\n#### ML Tag\n\nImage tagger to reference images or videos following recurrent themes or aesthetic descriptions.\nThe tags could be stored within a SQL database next to the image link.\n\nFind tag that referenced this themes:\n\n- Main Colors\n- Feelings\n- Vibes / mood\n- Art mouvements\n- Words\n- Custom tag to create KNN like media groups\n- Music style\n\n#### Screen handler\n\n- create a Menu class that override the screen and manage all the options (image_speed - tags - mode - filter - media_root)\n- create different mode (normal - gif surrounding the screen - animation (image or video where a part of the screen will aff cudi, the reste will be the template))\n- add an history of every file with a tag search or color search\n\n#### Music handler\n\n- manage the audio from the computer\n- analyze the sound's curb to adapt cudi's parameter\n- add an ML class to adapt the tags from the audio\n\n#### Animation\n\nAnimation could be add to the screen:\n\n- TV screen (high speed video\\* accelerated with b/w filter and speed cut)\n- Images in line on the top of the screen, a slow dark wallscreen animation will be always display. Those images will describe a type of sound (frequencies). When this type will appear in a music the corresponding image will grow then retake is place. All the sounds will create a nearly chaotic and unique animation for each music.\n- Color palette with gradient from left to right in high speed\n- Fill the screen with the same image in high speed and in a geometric way\n- Themes displayed with associative color palette (death -\u003e dark)\n- [pixel sorting](\u003chttp://satyarth.me/articles/pixel-sorting/#:~:text=Pixel%20sorting%20is%20an%20interesting,(processing%20source%20code%20here).\u003e)\n- video in background and cudi on the top on certains part of the screen (anonymisation instead of blurring)\n- check [compression artifact](https://en.wikipedia.org/wiki/Compression_artifact)\n  [here also](https://github.com/scriptkittie/GlitchKernel)\n\n##### \\*car chase, illegal japanese drift, race (boat, bike, car, plane, spaceship)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaviave%2Fcudi_rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxaviave%2Fcudi_rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaviave%2Fcudi_rs/lists"}