{"id":17168103,"url":"https://github.com/mateimicu/asciipic","last_synced_at":"2026-02-24T15:34:20.492Z","repository":{"id":68053191,"uuid":"83340198","full_name":"mateimicu/asciipic","owner":"mateimicu","description":null,"archived":false,"fork":false,"pushed_at":"2017-05-29T03:56:32.000Z","size":340,"stargazers_count":0,"open_issues_count":18,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-12T10:30:32.463Z","etag":null,"topics":["cherrypy","python","python-3","rest-api"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mateimicu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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":"2017-02-27T17:55:55.000Z","updated_at":"2020-08-18T10:28:39.000Z","dependencies_parsed_at":"2023-02-21T12:30:23.038Z","dependency_job_id":null,"html_url":"https://github.com/mateimicu/asciipic","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateimicu%2Fasciipic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateimicu%2Fasciipic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateimicu%2Fasciipic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateimicu%2Fasciipic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mateimicu","download_url":"https://codeload.github.com/mateimicu/asciipic/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247434383,"owners_count":20938504,"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":["cherrypy","python","python-3","rest-api"],"created_at":"2024-10-14T23:11:12.264Z","updated_at":"2025-10-26T18:39:33.289Z","avatar_url":"https://github.com/mateimicu.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Titlu: AsciiPic\n==============\n[![Requirements Status](https://requires.io/github/micumatei/ascipic/requirements.svg?branch=master)](https://requires.io/github/micumatei/ascipic/requirements/?branch=master)\n\n### Descriere:\n\n\nInspirat din CoLiW. \nIn mod normal, accesul la Web se realizeaza pe baza unui browser. \nSe doreste experimentarea unei interactiuni Web in linia de comandă, punandu-se la dispozitie o platforma \nextensibila capabila sa ofere suport pentru cautarea, manipularea, agregarea si exportarea imaginilor \nimpreuna cu metadata ascociata acestora utilizand difierite API-uri publice ca Flickr, Instagram, etc.\n\nAplicatia va expune propriul API si va pune la dispozitie doua modalitati de interactiune cu acesta: \n  - una prin intermediul unei interfete web ce emuleaza o linie de comanda\n  - iar a doua folosind un client, direct dintr-un terminal.\n\nPrintre functionalitati aplicatia permite:\n  - cautarea si filtrarea imaginilor dupa tag-uri, data postarii, dimensiune etc.\n  - vizualizarea imaginilor in format ascii(atat la linia de comanda cat si in interfata web);\n  - exportarea url-urilor impreuna cu metadata asociata acestora in diverse formate(JSON, XML, etc.);\n  - transformarea imaginilor astfel gasite(resize, aplicarea diverselor filtre);\n\nDatorita faptului ca anumite request-uri pot fi costisitoare oferim posibilitatea postarii asincrone de job-uri \ncare for fi executate de o arhitectura distribuita de work-eri.\nAstfel putem interoga statusul job-ului sau la finalul lui putem opta pentru primirea unui e-mail cu informatiile cerute.\n\n\nAm estimat proiectul ca fiind unul de tip S care ar avea nevoie de 4 persoane pentru o implementare optima in timpul acordat.\n\n---\n\nWebsite: https://asciipic.xyz/\n\n\nQuick start\n-----------\nEste indicata generarea unui fisier de configurare prima data.\n\n```bash\n# install deps\n# for ubuntu\n~ $ sudo apt-get install vim git python-dev -y\n# fot centos\n~ $ sudo yum install vim git python-dev -y\n\n~ $ pip install virtualenv\n\n# clone project\n~ $ git clone https://github.com/micumatei/asciipic\n~ $ cd asciipic\n\n# create a virtual env for this project\n~ asciipic/ $ virtualenv --python=python3 .venv/asciipic\n\n# activate the venv\n~ asciipic/ $ source .venv/asciipic/bin/activate\n\n# install the project\n~ asciipic/ $ pip install ../asciipic\n# Or \n~ asciipic/ $ python setup.py install\n\n# install oracle client\n# Se poate sa aveti nevoie de niste binare de la oracle :'(\n# dar daca aveti oracle-db instalat pe masina ar trebui sa fie deja instalate\n~ asciipic/ $ pip install -r oracle-requirements.txt\n\n```\n\nGenerarea fisierului de configurare\n-----------------------------------\nPentru a genera fisierul de configurare trebuie sa avem proiectul deja instalat.\n```bash\n\n# genetare a config file\n~ asciipic/ $ oslo-config-generator --config-file etc/asciipic/asciipic-config-generator.conf\n~ asciipic/ $ sudo mkdir /etc/asciipic/\n\n# copy the config file in /etc/asciipic\n~ asciipic/ $ sudo cp etc/asciipic/asciipic.conf.sample /etc/asciipic/asciipic.conf\n```\n\n\nRequirements\n-----------\nProiectul are cateva dependite mai speciale:\n####OracleDB\nFoloseste ca DB oracle si trebuie sa specificam informatiile de acces catre aceasta baza de date\nin fisierul `/etc/asciipic/asciipic.conf`.\nExemplu :\n```\n[oracle]\nhost = x.x.x.x\nport = 8080\nusername = ASCIIPIC\npassword = ASCIIPIC\n```\nPentru a instala oracle puteti urmari acest [tutorial](http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r1/prod/install/dbinst/dbinst.htm) dar din experienta procesul nu este prea usor.\nO varianta mai usoara este sa folosim docker-engine pentru a porni un container cu oracle deja instalat.\n#####OracleDB in docker container \nPentru a instala docker puteti urmari [documentatia oficiala](https://docs.docker.com/engine/installation/).\nUn tutorial bun pentru python se poate gasi [aici](https://gist.github.com/kimus/10012910).\nDupa ce aveti docker instalat puteti porni containerul ( creat special pentru aceasta aplicatie ) cu urmatoare comanda:\n` docker run --name oracle-asciipic -d -p 8081:1521 matei10/asciipic_db:latest`\n\n####Redis\nFolosit pentru short-term storage si channels ( messaging queue ). \nLa fel ca in cazul bazei de date trebuie sa specificam datele de acces in fisierul `/etc/asciipic/asciipic.conf`:\n```\n[redis]\nhost = 127.0.0.1\nport = 6379\ndatabase = 0\n```\n\n##Heroku\nPentru CD folosim [Heroku](http://herokuapp.com/) in care trebuie sa instalam clientul nativ de oracle.\nCea mai sipla varianta e sa folosim doua buildpacks:\n- la indexul 1 `https://github.com/wealthsimple/oracle-heroku-buildpack`\n- la indexul 2 `heroku/python`\n\nPrimul va instala clientul nativ pentru oracle al doilea va instala proiectul de python\n\n**Note** Putem folosi si buildpack-ul `multi-builpack` pentru a versiona pachetele\n\n\nTest the project\n----------------\nDupa ce s-a intalat proiectul putem sa il testam pronind local API-ul.\n\n```bash\n# activate the venv\n~ asciipic/ $ source .venv/asciipic/bin/activate\n\n# start the api\n~ asciipic/ $ asciipic server start\n[19/Mar/2017:02:06:35] ENGINE Listening for SIGHUP.\n[19/Mar/2017:02:06:35] ENGINE Listening for SIGHUP.\n[19/Mar/2017:02:06:35] ENGINE Listening for SIGTERM.\n[19/Mar/2017:02:06:35] ENGINE Listening for SIGTERM.\n[19/Mar/2017:02:06:35] ENGINE Listening for SIGUSR1.\n[19/Mar/2017:02:06:35] ENGINE Listening for SIGUSR1.\n[19/Mar/2017:02:06:35] ENGINE Bus STARTING\n[19/Mar/2017:02:06:35] ENGINE Bus STARTING\n....\n....\n....\n[19/Mar/2017:02:06:35] ENGINE Serving on http://127.0.0.1:8080\n[19/Mar/2017:02:06:35] ENGINE Bus STARTED\n[19/Mar/2017:02:06:35] ENGINE Bus STARTED\n....\n....\n....\n```\nPutem verifica acum la url-ul afisat(va depinde de fisierul de configurare) daca avem acces la api \n\nProducer / Consumer example\n---------------------------\nIntr-un terminal rulati `asciipic worker start` pentru a porni un worker\n\nIn alt terminal rulati task-ul exemplu\n```\nfrom rq import Queue\n\nfrom asciipic.worker import worker\nfrom asciipic.tasks import example_task\n\n# NOTE(mmicu): just a hack in order to get\n# the rededis connection\nw = worker.Worker()\nrc = w.rcon\n\nq = Queue(connection=rc , name=\"low\")\nr = q.enqueue(example_task.ExampleTask())\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateimicu%2Fasciipic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmateimicu%2Fasciipic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateimicu%2Fasciipic/lists"}