Home
Softono
m

msramalho

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
2

Software by msramalho

twitter-watch
Open Source

twitter-watch

<h1 align="center"><img align="" width="22px" src="https://cdn.jsdelivr.net/npm/simple-icons@v3/icons/twitter.svg"> Twitter Watch</h1> <p align="center">A framework for Twitter data collection.</p> * [core](core/) contains the code for data collection * [ui](ui/) contains the code for the UI, it can be automatically deployed to gh-pages. you can also use [the original UI client](https://msramalho.github.io/twitter-watch) if you deployed your own core collection by changing the access URL to your own. For a full description, please check the preliminary version of Twitter Watch's [paper](preliminary-paper.pdf). <!-- If you use this tool academically, you can cite it through: ```bibtex { } ``` --> ## Architecture The current version merges the core and api containers but you can use the version in the original architecture by using the docker-compose-2.yml file and commenting the second line in the [launcher.sh](core/launcher.sh) file (`nohup python api/main.py > logs_flask.txt &`). <p align="center"><img src="https://i.imgur.com/7Fj4L0J.png"/></p> ## UI <p align="center"><img src="https://i.imgur.com/yVo1Mr1.png"/></p> ## Implementation The overall implementation is a sequential execution of groups of tasks until the scheduled (and parallel) tasks are reached. <p align="center"><img src="https://i.imgur.com/yeF2A82.png"/></p> ## Practical results This tool was used to collect data on the Portuguese Twittersphere, the following figure summarizes the amount of accounts and tweets it collected. <p align="center"><img src="https://i.imgur.com/BaBEJGZ.png"/></p> ## Tips and Tricks ### docker compose deploy * `cp example.env .env` and edit * `docker-compose up` (pass `-d` for detached mode) ### mongo dumps ```bash docker exec some-mongo sh -c 'exec mongodump -d twitter --archive' > PATHTOLOCALFILE/dump.archive ``` ```bash docker exec -it twitter-watch_core_1 bash ``` ### Pre-commit Check [pre-commit.com](https://pre-commit.com/hooks.html) for more pre-commit functionality and then add it to the [pre-commit config file](.pre-commit-config.yaml). To run, execute `pre-commit run --all-files`.

Browser Automation Live Chat & Chatbots
36 Github Stars
desarquivo
Open Source

desarquivo

<!-- <h1 align="center">Desarquivo</h1> --> <p align="center"> <a href="https://msramalho.github.io/desarquivo/" > <img height="100px" src="https://i.imgur.com/bbqpudq.gif" /> </a> <br> <br> Um projeto que procura democratizar e complementar o <u>jornalismo de investigação</u> e a <u>verificação de factos</u>. <br> Arquivo.pt para justiça, jornalismo e verdade. <br> <br> <i>A project that seeks to democratize and complement <u>investigative journalism</u> and <u>fact-checking</u>. <br> Arquivo.pt for justice, journalism and truth.</i> <br> <h3 align="center"><a href="README_en.md">English Version</a></h3> </p> ## Sobre o Projeto O Desarquivo foi desenhado como um esforço reprodutível que tem por base um conjunto de configurações das quais se destacam - As primeiras entidades a investigar e que dão origem à expansão da rede - nesta versão, foram `José Sócrates` e `Isabel dos Santos` - O período de tempo a incluir - nesta versão, entre o ano `2000` e o ano `2020` - Os jornais a procurar - nesta versão, foram [Público](https://www.publico.pt/), [Expresso](https://expresso.pt/), [Diário de Notícias](https://www.dn.pt/), [Correio da Manhã](https://www.cmjornal.pt/), [Sol](https://sol.sapo.pt/), [Visão](https://visao.sapo.pt/) e [Jornal de Notícias](https://www.jn.pt/) As notícias recolhidas foram analisadas e de lá foram extraídas entidades (pessoas, organizações, lugares, entre outras) e respetivas relações. Estas relações formam uma rede imensa que é agora explorável nesta interface gráfica ou diretamente nos dados que são de [livre acesso](DATASETS.md). O desarquivo assenta sobre duas bases de dados, nomeadamente [MongoDB](https://www.mongodb.com/) (NoSQL) e [neo4j](https://neo4j.com/) (Grafos). <p align="center"> <a href="https://youtu.be/tVlOUuRqIVU" > <img height="200px" src="https://i.imgur.com/0sHj6Fi.png"/> </a> <br> Vídeo de apresentação </p> ### Cidadãos Podem aceder ao [desarquivo](https://msramalho.github.io/desarquivo/) e explorar as suas diferentes funcionalidades e exemplos. <p align="center"><img src="https://i.imgur.com/NRxBO0h.png"/></p> ### Investigadores e Programadores Podem ainda aceder aos [datasets](DATASETS.md) disponibilizados e executar _queries_ mais complexas sobre os grafos gerados. #### Instruções completas para usar o comando `neo4j-admin` ```bash # instalar docker, docker-compose, mongorestore -> pesquisar instruções mais recentes online # clonar este repositório e entrar na pasta git clone https://github.com/msramalho/desarquivo cd desarquivo # fazer uma cópia dos ficheiros deo configuração cp .neo4j.env.example .neo4j.env cp .mongo.env.example .mongo.env cp ./api/.env.example .api/.env # (editar os ficheiros com as passwords desejadas) ... # criar as pastas correspondentes aos volumes necessários (se for o Docker a fazê-lo as permissões estaram erradas) mkdir neo4j/import neo4j/data neo4j/conf neo4j/logs mongodb/data/db # colocar os datasets no formato igual ao dataset03a.zip (i_entities.csv e i_relationships.csv) na pasta /import unzip dataset03a.zip -d <SOME DIR> cp <SOME DIR>/i_*.csv ./neo4j/import/ # correr o seguinte comando para que importar o dataset neo4j # (verificar que a pasta atual é $HOME/desarquivo) senão atualizar docker run --interactive --tty --rm \ --publish=7474:7474 --publish=7687:7687 \ --volume=$HOME/desarquivo/neo4j/data:/data \ --volume=$HOME/desarquivo/neo4j/import:/import \ --user="$(id -u):$(id -g)" \ neo4j:latest \ neo4j-admin import --id-type=STRING --nodes=/import/i_entities.csv --relationships=rel=/import/i_connections.csv # iniciar o docker-compose docker-compose up -d # se aceder a IP:7474 verá o interface do neo4j, para o esconder do # público editar as portas do serviço neo4j no docker-compose ... # quando os 3 containers estiverem a correr ... # importar os dados para o neo4j # carregar o dataset02.zip para o servidor unzip dataset02.zip -d dataset02 cd dataset02 # usar o mongorestore para importar para a isntância mongo # -d é o nome da base de dados # . é a pasta atual onde estarão os .bson e .json mongorestore -u USER -p PASSWORD --authenticationDatabase admin --uri="mongodb://localhost:27017/" -d desarquivo . # feito. # basta aceder a IP:80 para aceder à API que estará ligada a ambas as bases de dados, com os dados carregados ``` <p align="center"><img src="https://i.imgur.com/wNThGU0.png"/></p> ## Criação do Desarquivo O Desarquivo é uma junção de diferentes peças que se encontram descritas abaixo. ### Recolha e Limpeza de Dados Cujo código se encontra na pasta [collection](collection/) e que diz respeito à interação com as [APIs do Arquivo.pt](https://github.com/arquivo/pwa-technologies/wiki/APIs) e com a respetiva organização na base de dados MongoDB. Há a realçar que o processo tira partido de parallelismo o que, na prática, resulta numa redução de mais de uma ordem de grandeza no tempo total de recolha. Os demais pormenores estão explicados no ficheiro de instruções na dita [pasta](collection/). ### API A API foi desenvolvida em [Flask](https://flask.palletsprojects.com/en/1.1.x/) e todo o respetivo código encontra-se na pasta [api](api/). Este diz respeito à interação com ambas as bases de dados (MongoDB e neo4j). ### A Interface A Interface, desenvolvida em [Vue.js](https://vuejs.org/) com [Nuxt.js](https://nuxtjs.org/) e [Vuetify](https://vuetifyjs.com/en/) e com recurso à biblioteca [cytoscape.js](https://js.cytoscape.org/) para a visualização do grafo. Todo o código respetivo encontra-se na pasta [ui](ui/). A interface está preparada para ser automaticamente colocada em produção em [gh-pages](https://pages.github.com/). ## Docker À exceção da interface e do processo de recolha de dados, as restantes partes do Desarquivo (API, MongoDB, neo4j) encontram-se em containers Docker o que significa que há uma maior flexibilidade e interoperabilidade quer no desenvolvimento quer em produção. Os comandos mais importantes para orquestrar estes serviços são - `docker-compose up -d` - `docker-compose down` De realçar que se o projeto for executado em Windows, é necessário desativar o volume do serviço mongodb. ## Futuro do Desarquivo O Desarquivo continuará a ser melhorado e procurará tornar-se uma ferramenta mais completa que se afirma como defensora de transparência, liberdade de expressão, e investigação jornalística. As possibilidades são inúmeras e as ideias também. Se te revês neste projeto e acreditas que faz sentido, considera contribuir com tempo, conselhos, ou ideais. Para entrar em contacto comigo, utiliza o [LinkedIn](https://www.linkedin.com/in/msramalho/). Agradecemos sugestões de melhoria e identificação de erros. Nesses casos, usem os [issues](https://github.com/msramalho/desarquivo/issues) do Github.

Event Tracking & CDP Data Visualisation
33 Github Stars