GithubHelp home page GithubHelp logo

craigchat / craig Goto Github PK

View Code? Open in Web Editor NEW
387.0 6.0 69.0 4.76 MB

Craig is a multi-track voice recorder for Discord.

Home Page: https://craig.chat

License: ISC License

Shell 3.98% C 56.83% JavaScript 1.44% Makefile 0.15% C++ 8.75% Assembly 0.71% TypeScript 27.96% HTML 0.05% Sass 0.12%

craig's Introduction

What is Craig?

Craig is a multi-track voice recorder for Discord.

More information can be found here: https://craig.chat/

Self-hosting/installation

Detailed instructions on how to self-host Craig are located here: SELFHOST.md

craig's People

Contributors

annervisser avatar codixer avatar coolguy3289 avatar dependabot[bot] avatar j-silv avatar nan0scho1ar avatar snazzah avatar sukiletxe avatar yahweasel 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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

craig's Issues

Won't join any Voice Channel

Hi @Yahweasel ,

Problem:

Craig won't join any Voice channels, while cycling through these three error messages:

:craig: <(Failed to join! If I persistently fail to join, it may be an issue with the voice server. Try changing the server region in server settings. TypeError: Cannot read property 'send' of undefined)

:craig: <(Failed to join! If I persistently fail to join, it may be an issue with the voice server. Try changing the server region in server settings. Error: Disconnected)

:craig: <(Failed to join! If I persistently fail to join, it may be an issue with the voice server. Try changing the server region in server settings. Error: Voice connection timeout)

steps to reproduce:

On our specific server:

  • issue :craig:, join or :craig:, join VOICECHANNEL
  • craig changes sometimes name to [recording]craig
  • error

on other test servers:
not reproducible

what we tried to solve it:

  • change location of the server multiple times

thank you for your awesome bot, and hopefully good advice on why this won't work or what we can do :)

Should I integrate my weird "local-only" version?

I'd like to offer a version of Craig that is easy to run yourself, mostly by cutting dependencies. To me, it seems that if you're running your own version of Craig, you probably don't need the website--I would offer a version that just saves audio files locally, eliminating PHP, and does any post-processing with (actual) ffmpeg or CLI tools, eliminating js dependencies.

Now one thing I could do is fork and delete several components of the code--if that's what you prefer, just ignore this. But if you'd like, I can also try to integrate the "local-only" version behind a command-line flag, and add a patch and user guide. Up to you.

Support for Docker container

I'm trying to install craig on a Ubuntu vps, but, after installing everything following README.md, the bot don't work.
Can you add a Dockerfile for running this into Docker?

Audio output is a BIG FAIL

Audio output is a BIG FAIL.

https://drive.google.com/file/d/1rcdra66ig3ed7UETy7JjD6mFhhYWMqWy/view?usp=sharing

One of the voice output turned "chipmunk". The real voice was never like this.

You can "educate" people with an "audio primer" all you want but it's all useless if it FAILS BIG TIME.

Downloaded FLAC, AAC, Audacity, raw ogg versions and still all failed miserably. The raw ogg file completely fails to open.

Just make a super simple "all-voices-in-1" (((MP3 MP3 MP3))) download link and all the problems would've been magically solved.

So what if it's obsolete, if it's 100% reliable for normal users? Why impose an audio enthusiast's superiority upon normal users? So what if it's taking space during silence, if the end file is 10x smaller in size compared with "modern" audio formats?

And oh, that "ennuicastr" either takes forever to load or fails to load at all, making it totally useless in the first place.

MP3/MPEG-1 can never deliver the same quality as AAC, simply because MP3/MPEG-1 is proven, by this rotten file, to be BETTER THAN AAC & ETC.

MP3/MPEG-1 is not the file format YOUR software wants. MP3/MPEG-1 is the file format that EVERYBODY ELSE'S software wants.

Why be willing to adapt or stand under an INFERIOR & BLOATED "modern" audio format, when OBSOLETE TECH WORKS JUST FINE & PERFECTLY?

Dropbox support broke install script

DROPBOX_CLIENT_ID wasn't added to the environmental variable generation in the install script, I could probably put together a PR if needed since I was able to edit it in locally, but I'm not really familiar with the repo yet and don't want to break anything.

[feature request] Confirmation / messaging on Craig auto-upload to Google Drive

Craig has been a wonderful resource, and the auto-upload to Google Drive is amazingly useful! It would be even more awesome if Craig would message a confirmation or error message upon completion of a recording, letting you know whether the recording successfully uploaded or if there was an issue. (And maybe, if possible, also share a link to the recording on GDrive)

Is this doable? Would it be too verbose? Could enabling this be a toggleable flag?

Download proceeds even after clicking cancel

In the new website, clicking cancel after clicking any of the download recording buttons still makes the download proceed in the background. It's just not saving the files to disk. This wastes bandwidth. See the following gif:
craig_download_bug

Furthermore after that, all the download buttons fail giving the following error. Thus downloading the recording becomes impossible.
Screenshot_from_2022-02-12_15-34-05

Craig emoticon issues?

Not sure on this one, but I was having trouble getting craig to record a channel, until I deleted the craig emoticon. I was not having issues getting it to leave.

It's possible it was some unrelated transient problem?

1 track is slow, other tracks are good

Hello,

My friends have recorded a discussion. There was 5 tracks.
In 1 of the tracks, the voice was slowed-down. We tried to sped it up in post but no try could match either the original voice speed nor the tempo of the conversation.
We are planning to try another discussion like this soon to this if this happens again.

We are all using windows 10, windows discord client and there was no connection drop or noticeable lag during the call.
We used a music bot and his track was also recorded without problems.

Any idea why this happens and how we can prevent this ?

include chat log in info.txt

It would be great to have a chat log, with timestamps, of the channel Craig has joined, and to put that content into the info.txt. Obviously it should be optional. I imagine the cleanest way to expose this functionality is with a new command, something like /textjoin.

Live streaming support (or, at least, something like it)

Hi :) I'm working on some integrations with Discord for a D&D 5e game I'm running, and I think Craig is really great for what I need (streaming audio from each user separately). I really need the information in real-time, which Craig sort of supports, but the issue is more on the server side than client side due to the implementation I've come up with:

  1. Poll at intervals (e.g. every 30 seconds), pulling the latest audio from Craig
  2. Transcribe the audio using OpenAI Whisper, for each speaker
  3. Collate the audio files (with timestamps) into a transcript, and push it to a Discord webhook

The issue, of course, is that I currently have no choice but to pull all the audio at every iteration, including audio I've already processed. I can alleviate this somewhat by making a simple Discord bot that disconnects and reconnects Craig every x minutes (e.g. every 30 minutes), but it's still an unnecessary drain. I've not looked too deeply into the code, as I figured (correctly, it turns out) it would be simpler to just copy the API calls from the website, so that's my perspective here; with that said, I think a reasonable solution would be: when making the POST request to https://craig.horse/api/recording/{id}/cook?key={key}, support an additional argument: startTime (and endTime, why not?). Then just pull audio which was created within that time period (or before/after that time, if only one of the fields is given). I think this would be a relatively straightforward solution to implement on the server-side, since it's just a case of pruning the audio files at some point before sending them (ideally as early as possible, to avoid

A more rigorous (but complex) option would be to support streaming more directly - that'd be really cool, but (I imagine) a lot more work too.

One other option I'm looking into is creating a simple version of Craig which only captures the audio, which I can then run on my own computer. This would bypass all the issues with transfer and compute, but if this is something other people might want to be able to do with Craig, maybe it's worth building it as a feature?

License?

Hello,
Any chance you could add a License to this project? GNUv3 is pretty popular, or MIT if you are feeling generous.

Record video stream in addition to audio

This may not be possible per current Discord features/APIs, and this may be super complicated work given that Discord does multiple video streams and Craig would basically have to either be tied in with a manual controller (to decide, say, which screen share stream to watch and record when there are two). But…

It would be amazing if Craig could record some kind of video feed as well, to make uploads to YouTube much more interesting content.

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.