TikTok-Chat-Reader
nodeBB
Our great sponsors
TikTok-Chat-Reader | nodeBB | |
---|---|---|
1 | 17 | |
244 | 13,912 | |
- | 1.0% | |
3.5 | 9.9 | |
about 1 month ago | 2 days ago | |
JavaScript | JavaScript | |
- | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
TikTok-Chat-Reader
-
How to connect the comments to the words of the game?
!< !< !< Level: 1 Score: 0 Attempts: 0 Submit Reset Chats !< >! !< >!!< script.js const userGuess = document.getElementById("user-guess"); const submitBtn = document.getElementById("submit"); const usersWord = document.getElementById("scrambled-word"); const info = document.getElementById("info"); const levelOutput = document.getElementById("level"); const scoreOutput = document.getElementById("score"); const attemptsOutput = document.getElementById("attempts"); const gameContainer = document.getElementById("game-container"); const guessContainer = document.getElementById("guess-container"); const resetBtn = document.getElementById("reset-btn"); let level = 1; let score = 0; let word; let attempts = 0; let correct = 0; const lvlOneWords = [ >! "test"!< ]; const lvlTwoWords = [ >! "test"!< ]; const lvlThreeWords = [ >! "test"!< ]; const lvlFourWords = [ >! "test"!< ]; const lvlFiveWords = [ >! "test"!< ]; const lvlSixWords = [ >! "test"!< ]; const lvlSevenWords = [ >! "test"!< ]; const lvlEightWords = [ >! "test"!< ]; function reset() { >! level = 1;!< >! score = 0;!< >! correct = 0;!< >! attempts = 0;!< >! word = "";!< >! updateBoard();!< >! info.innerHTML = "";!< >! userGuess.value = "";!< } function randomWord(lvl) { >! word = lvl[Math.floor(Math.random() * lvl.length + 1) - 1];!< >! return word;!< } function scrambleWord(word) { >! let letters = word.split("");!< >! let currentIndex = letters.length,!< temporaryValue, randomIndex; >! // While there remain elements to shuffle...!< >! while (0 !== currentIndex) {!< // Pick a remaining element... randomIndex = Math.floor(Math.random() * currentIndex); currentIndex -= 1; // And swap it with the current element. temporaryValue = letters[currentIndex]; letters[currentIndex] = letters[randomIndex]; letters[randomIndex] = temporaryValue; >! }!< >! return letters.join(" ");!< } function updateBoard() { >! scoreOutput.innerHTML = score;!< >! levelOutput.innerHTML = level;!< >! attemptsOutput.innerHTML = attempts;!< } function checkAnswer(guess) { >! console.log(`Correct: ${correct}`);!< >! if (correct == 3) {!< level += 1; correct = 0; >! }!< >! if (attempts == 3) {!< guessContainer.classList.toggle("hidden"); info.innerHTML = "Sorry. You are out of chances. Retry ";!< reset(); >! }!< >! if (guess === word) {!< info.innerHTML = "aCORRECT";!< score += 1; correct += 1; attempts = 0; setLevel(); >! } else {!< info.innerHTML = "Bzzzt! That's not right!";!< score -= 1; attempts += 1; >! }!< >! updateBoard();!< } function setLevel() { >! if (level == 1) {!< randomWord(lvlOneWords); >! } else if (level == 2) {!< randomWord(lvlTwoWords); >! } else if (level == 3) {!< randomWord(lvlThreeWords); >! } else if (level == 4) {!< randomWord(lvlFourWords); >! } else if (level == 5) {!< randomWord(lvlFiveWords); >! } else if (level == 6) {!< randomWord(lvlSixWords); >! } else if (level == 7) {!< randomWord(lvlSevenWords); >! } else if (level == 8) {!< randomWord(lvlEightWords); >! } else if (level == 9) {!< info.innerHTML = "You Win! Great job! You can reset or keep playing.";!< >! }!< >! console.log(`Word: ${word}`);!< >! usersWord.innerHTML = scrambleWord(word);!< } submitBtn.addEventListener("click", function(e) { >! checkAnswer(userGuess.value.toLowerCase());!< >! userGuess.value = "";!< }); ///////// ///// window.addEventListener( >! "keypress",!< >! function(e) {!< if (e.keyCode == 13) { checkAnswer(userGuess.value.toLowerCase()); userGuess.value = ""; } >! },!< >! false!< ); resetBtn.addEventListener("click", function(e) { >! reset();!< >! setLevel();!< >! guessContainer.classList.remove("hidden");!< >! userGuess.value = "";!< }); setLevel(); style.css /* http://meyerweb.com/eric/tools/css/reset/ >! v2.0 | 20110126!< >! License: none (public domain)!< */ /* line 6, ../sass/partials/_normalize.scss */ html1, body1, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { >! margin: 0;!< >! padding: 0;!< >! border: 0;!< >! font-size: 100%;!< >! font: inherit;!< >! vertical-align: baseline;!< } /* HTML5 display-role reset for older browsers */ /* line 27, ../sass/partials/_normalize.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { >! display: block;!< } /* line 31, ../sass/partials/_normalize.scss */ body { >! line-height: 1;!< } /* line 34, ../sass/partials/_normalize.scss */ ol, ul { >! list-style: none;!< } /* line 37, ../sass/partials/_normalize.scss */ blockquote, q { >! quotes: none;!< } /* line 40, ../sass/partials/_normalize.scss */ blockquote:before, blockquote:after, q:before, q:after { >! content: "";!< >! content: none;!< } /* line 45, ../sass/partials/_normalize.scss */ table { >! border-collapse: collapse;!< >! border-spacing: 0;!< } /* line 5, ../sass/styles.scss */ html, body { >! font-size: 16px;!< >! width: 50%;!< >! font-family: "Quicksand", sans-serif;!< >! overflow-x: hidden;!< >! overflow-y: hidden;!< } /* line 13, ../sass/styles.scss */ nav { >! border-bottom: #e18a07 2px solid;!< >! width: 100%;!< >! padding: 0.625em;!< >! display: block;!< >! height: 2em;!< } /* line 20, ../sass/styles.scss */ h1 { >! font-size: 2em;!< >! display: inline-block;!< >! float: left;!< >! padding-left: 1em;!< } /* line 26, ../sass/styles.scss */ #contact { >! font-size: 2em;!< >! display: inline-block;!< >! float: right;!< >! padding-right: 1em;!< } /* line 32, ../sass/styles.scss */ #contact a { >! color: #000;!< } /* line 35, ../sass/styles.scss */ #contact i:hover { >! color: #e18a07;!< >! cursor: pointer;!< } /* line 40, ../sass/styles.scss */ #rules { >! position: absolute;!< >! z-index: 999;!< >! width: 31.25em;!< >! height: 31.25em;!< >! text-align: center;!< >! left: 50%;!< >! margin-left: -200px;!< >! top: 50%;!< >! margin-top: -200px;!< } /* line 51, ../sass/styles.scss */ #rules p { >! margin-bottom: 1.25em;!< } /* line 55, ../sass/styles.scss */ #game-container { >! text-align: center;!< >! margin: 2em auto;!< >! width: 100vh;!< >! height: 80vh;!< } /* line 62, ../sass/styles.scss */ #game-container p { >! display: inline-block;!< >! margin-right: 1em;!< >! margin-bottom: 3em;!< >! font-weight: 500;!< >! font-size: 1.5em;!< } /* line 69, ../sass/styles.scss */ #game-container p span { >! font-weight: 300;!< } /* line 72, ../sass/styles.scss */ #game-container p#info { >! display: block;!< >! text-align: center;!< >! font-size: 2em !important;!< >! height: 2em;!< >! margin-bottom: 1em;!< } /* line 80, ../sass/styles.scss */ #scrambled-word { >! font-size: 3em !important;!< >! font-family: "Anton", sans-serif;!< >! text-transform: uppercase;!< >! display: block;!< >! margin-left: 48px;!< >! margin-bottom: 1em !important;!< } /* line 89, ../sass/styles.scss */ #scrambled-word p { >! display: block;!< >! width: 100%;!< } /* line 94, ../sass/styles.scss */ #user-guess { >! display: block;!< >! width: 20em;!< >! height: 3em;!< >! padding-left: 1em;!< >! margin: 0 auto 1.25em;!< >! border: 1px solid #000;!< >! outline-color: #e18a07;!< >! font-size: 1.1em;!< } /* line 104, ../sass/styles.scss */ small { >! font-size: 0.8em;!< } /* line 107, ../sass/styles.scss */ .lead { >! font-size: 1.2em;!< >! font-weight: 700;!< } /* line 111, ../sass/styles.scss */ .correct, .incorrect { >! font-size: 1.5em;!< >! font-weight: 700;!< } /* line 116, ../sass/styles.scss */ .correct { >! color: green;!< >! display: block;!< } /* line 121, ../sass/styles.scss */ .incorrect { >! color: red;!< >! display: block;!< } /* line 126, ../sass/styles.scss */ .hidden { >! visibility: hidden;!< } /* line 129, ../sass/styles.scss */ button { >! cursor: pointer;!< >! width: 12em;!< >! height: 3em;!< >! outline: none;!< >! text-transform: uppercase;!< >! font-weight: 400;!< >! font-size: 1.1em;!< } /* line 138, ../sass/styles.scss */ #submit { >! background: #fff;!< >! border: 2px solid #e18a07;!< } /* line 143, ../sass/styles.scss */ #submit:hover { >! background: #e18a07;!< >! color: #fff;!< >! transition: 0.2s background;!< } /* line 138, ../sass/styles.scss */ /* line 150, ../sass/styles.scss */ #reset-btn { >! background: #fff;!< >! border: none;!< >! box-shadow: 1px 1px 1px #999;!< } /* line 155, ../sass/styles.scss */ #reset-btn:hover { >! box-shadow: 1px 1px 1px #000;!< >! transition: 0.2s box-shadow;!< } /* line 161, ../sass/styles.scss */ button:active { >! position: relative;!< >! top: 1px;!< } /* line 166, ../sass/styles.scss */ #copyright { >! text-align: center;!< } https://github.com/zerodytrash/TikTok-Chat-Reader API to retrieve chat comments
nodeBB
-
Don't Use Discord as a Forum
> I'm a big fan of https://nodebb.org/
TIL to what shit Netgate moved pfSense forums to. I'm glad you are fine with it, but not only my FullHD monitor is not a smartphone, so I don't need 400% fonts on everything (and post dates on the faaaaar right clearly shows nobody ever even used the forum) and most importantly - search doesn't work. It's not like the previous forum had a good search, but at least it worked.
Bonus point: try to Ctrl+mousewheel on any NodeBB (including the official one).
-
Just remember forums exist
NodeBB
- What are the alternatives for Reddit?
-
Hey Guys, I'm an Open Source enthusiast. StackFoss.com is an open source StackOverFlow alternative, and what makes StackFoss awesome is Focus on open source and Ad-free.
You said it's based on. This means that there are modifications to the implementation of nodebb. So where is your modifications' source code then? stackfoss/stackfoss is just a single readme file
-
Some forum software written in Rust
Obviously forums aren't as popular as they used to be, so this topic might not be of interest to many. For folks that want to run a forum, they'd most certainly go with Discourse (Ruby), Flarum (PHP), Xenforo (PHP), NodeBB (Javascript), Nimforum (Nim) and maybe Casnode (Go)
-
The over-reliance on Discord is doing more harm than good.
If you want to make your own app out of custom code that you will actively develop new features for, I think your points are true. But if you just wanted a modern version of the old phpBB forums, there are plenty of almost-turnkey projects/templates you can use. Check out NodeBB for instance. Maybe the barrier for entry is higher in a way, given increased complexity, but you also get more and nicer features "for free". I think it's a wash.
-
Any Rust based forum software?
I was looking into actively maintained Rust based forum software similar to NodeBB (Node.js) or Discourse (Ruby on Rails) and Flaskbb (Python).
-
Apko: A Better Way To Build Containers?
package: name: nodebb version: 2.5.3 dependencies: runtime: - nodejs environment: contents: packages: - alpine-baselayout - ca-certificates-bundle - nodejs - npm - git pipeline: - uses: fetch with: uri: https://github.com/NodeBB/NodeBB/archive/refs/tags/v${{package.version}}.tar.gz expected-sha256: 92e390d7cda190e7f098833cbbbf03fbe1c50f25653656ad589ae97dc18a7684 strip-components: 0 - runs: | mkdir -p "${{targets.destdir}}/usr/share/nodebb" cd NodeBB-${{package.version}} cp install/package.json . npm install --omit=dev cp -a ./. "${{targets.destdir}}/usr/share/nodebb"
- NodeBB - Node.js based forum software built for the modern web
- Node.js based forum software built for the modern web
What are some alternatives?
TikTokLive - Python library to receive live stream events (comments, gifts, etc.) in realtime from TikTok LIVE.
Discourse - A platform for community discussion. Free, open, simple.
Darkwire.io - End-to-end encrypted instant web chat
Flarum - Simple forum software for building great communities.
Agora-Many-to-Many-Live-Streaming-SDK-NG - Many to many, live video streaming using the Agora Web SDK NG.
phpBB - phpBB Development: phpBB is a popular open-source bulletin board written in PHP. This repository also contains the history of version 2.
gatsby-plugin-gdpr-cookies - Gatsby plugin to add Google Analytics (V4 is supported), Google Tag Manager, Facebook Pixel, TikTok Pixel and Hotjar in a GDPR form to your site.
MyBB - MyBB is a free and open source forum software.
social-network - Mini social network that I made as my first web app project.
flaskbb - A classic Forum Software in Python using Flask.
rocketchat-emoji-bulk-upload - Rocket.Chat Emoji Bulk Upload: A Node.js script to easily import custom emojis from a YAML file into a Rocket.Chat instance using the Rocket.Chat API. Automate bulk imports and simplify managing your custom emojis.
Talkyard - A community discussion platform: Brings together the main features from StackOverflow, Slack, Discourse, Reddit, and Disqus blog comments.