Giter Club home page Giter Club logo

lalkachat's Introduction

LalkaChat Build Status

LalkaChat is a program for displaying multiple chats from services is one place.
It's cross-platform and highly configurable. You can set the style of the chat, so it can look differently and you can tweak a lot of the settings.
Writen in modular way so you can easily add or remove any module that you need or do not need or write your own module if you lack available functionality.
Uses wxPython as a GUI interface and CEF as a browser window that renders current style.
HTTP Server backend is using CherryPy to provide ability for modules to use REST API calls to control chat behaviour.
Various modules that enrich the LalkaChat functionality.
Supports multiple languages being English and Russian at the moment, but core is already there and you can translate to different languages if there is proper translations.
You can see how much viewers you have for each chat in the GUI (You can toggle this function on/off if you desire so).

Supported Websites

Architecture

LalkaChat uses conveyor architecture delivering the messages.

You configure the "Input" chat modules, such as Twitch/Goodgame and will start sending messages to the central queue which will push the message to message process modules that are loaded by priority. Those modules each process the message and pass the message to the next module. Last one module is WebChat module which is HTTP backend that is responsible for hosting the style/theme and sending it to browser.

Available Modules for message processing

  • Blacklist - Allows user to blacklist\hide specific words or chatters.
  • Cloud2Butt - Word substitution module.
  • Dwarf Fortress - Special module that picks chatters by special keyword and writes them into file.
  • Levels - Adds level icons to chatter, allows them to level up in the chat and be awesome by chatting.
  • Logger - Logs all the messages that come via LalkaChat pipe.
  • Mentions - Allows user to specify different words to be highlighted. (Example: Your username differs in different chat and you want to highlight it from everywhere)
  • Webchat - Core module to allow user to view the chat from browser/GUI

Information for Developers

TODO

Messaging Module Basics

TODO // Code Examples

Chat Module Basics

TODO // Code Examples

GUI Module Basics

TODO // Code Examples

Installation from Source

ToDo. Probably will be couple scripts that you can run from python.

Installation from Package (Windows)

Unpack the zip to the folder you want, and run LalkaChat.exe.

Docker Availability

Docker build is available for testing LalkaChat, uses XPRA to display GUI from browser

Usage(GNU/Linux macOS Windows):

  • Install docker
  • docker run -d --name x11-bridge -e MODE="html" -p 10000:10000 -e XPRA_DISPLAY=:14 -e XPRA_PASSWORD=<PASSWORD> jare/x11-bridge
  • docker run -d --name chat -p 8080:8080 -v <PATH_TO_CONFIG>:/usr/lib/python2.7/site-packages/LalkaChat/conf deforce/lalkachat
  • Open chat config at http://localhost:10000/index.html?encoding=png&password=<PASSWORD>
  • And chat window at http://localhost:8080/
  • You can update the chat with docker rmi -f czt/lalkachat
  • Remove containers with docker rmi -f x11-bridge chat

Production docker build:

  • docker build -t deforce/alpine-wxpython:latest docker/Dockerfiles/alpine-wxpython
  • docker build -t deforce/lalkachat:latest .

Testing docker build:

  • docker build -t deforce/alpine-wxpython:latest docker/Dockerfiles/alpine-wxpython
  • docker build -t deforce/lalkachat-build-deps:latest docker/Dockerfiles/lalkachat-build-deps
  • docker run -d --name x11-bridge -e MODE="html" -p 10000:10000 -e XPRA_DISPLAY=:14 -e XPRA_PASSWORD=<PASSWORD> jare/x11-bridge
  • (on source change)
  • docker build -t deforce/lalkachat:testing -f Dockerfile_test .
  • docker run -rm --name chat-test -p 8080:8080 -v <PATH_TO_CONFIG>:/usr/lib/python2.7/site-packages/LalkaChat/conf deforce/lalkachat:testing

Special Thanks:

ftpud - for fixing IE compatibility (Old problem with IE Browser)
JAre - for being awesome with his docker stuff
ichursin - for deep knowledge in JavaScript and helping me with code
l0stparadis3 - for helping and testing in Linux environment

lalkachat's People

Contributors

bondarenkoartur avatar deforce avatar ichursin avatar jaremko avatar mokrinsky avatar nickkush avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

lalkachat's Issues

Remember window size

Window doesn't remember it's size after restart.
Implement ability to save window size between launches

Add translations

Add translation for languages:

  • English
  • Russian
  • Simplified Chinese

Move config/data folders to single folder

Should I move conf/modules/http to single folder data/ or something like that?
It will be easier to track because of frozen app has his own folders. Doesn't really matter for linux freeze.

Is it possible to start without GUI?

For example, we configured everything in .cfg files and we don't need to have one more window of chat, only chat for stream on http server. Is it possible to make something like argument for start and start chat without gui completely in console?

Default configuration modules

Right now there is almost all modules loaded.
I need to rethink what modules should be enabled in default configuration.

Chat modules check

Chat should check for modules folder and exit if it didn't find any, because this is a critical error.

Switch to CEF

On windows IE emulation doesn't work finely with js, so I need to switch to CEF for better compatibility.

Load modules according to priority

Messaging modules can have priority so they load in correct order.

If not, there could be issue that some critical modules of chat like webchat will not get all of the message changes before displaying message in chat.

Wrong message display

I sent this message to chat;

я боюсь, сейчас czt и за пять евро не пускает :)

But instead of replacing :) with emoticon, it was displayed some strange way:

357130

Another one message by another user:

доводы не убедительны что то =\

Was displayed this way:

доводы не убедительны что то =undefined

Show channels viewers

Would be nice if it would be possible to show current viewers for services in main window.
Looks to be hardly implementable at the moment, need to think about it

Categorize modules.

Right now all modules are in settings menu.
Need to categorize them.
Maybe dual tab interface, maybe button categorization. Maybe something else.

Have to think about it.

Add GUI vote module.

We need ability to add GUI modules, and one of them is voting system module.

Will probably need a lot work to make so, because right now I can get to gui from inside of the module, will need to think about that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.