GithubHelp home page GithubHelp logo

calzoneman / sync Goto Github PK

View Code? Open in Web Editor NEW
1.4K 1.4K 236.0 13.77 MB

Node.JS Server and JavaScript/HTML Client for synchronizing online media

License: Other

JavaScript 96.42% Shell 0.01% CSS 1.22% CoffeeScript 1.05% Pug 1.30%

sync's Introduction

CyTube

CyTube is a project I started in early 2013 as a hobby project to build my own clone of synchtube.com (which shut down in March 2013).

The basic concept is that users register channels where connected viewers can watch videos from different video hosts (e.g., YouTube, Twitch) and the playback is synchronized for all the viewers in the channel.

Each channel has a playlist where users can queue up videos to play, as well as an integrated chatroom for discussion.

The official server is located at https://cytu.be, but there are other public servers hosted for various communities.

Installation

The installation guide for server administrators is located on the wiki.

Contact

Please check if the FAQ answers your question already.

For bug reports and feature requests, please open a GitHub issue. To report a security vulnerability, or to discuss an issue with https://cytu.be itself (unrelated to the code), please send me an email: [email protected]

Please be courteous and search through the open and closed issues for your request before submitting a new one.

General help with the software and the website is also available on the IRC channel at irc.esper.net#cytube during US daytime hours.

License

Original source code in this repository is provided under the MIT license (see the LICENSE file for the full text).

Bundled source code, such as third-party CSS and JavaScript libraries, are provided under their respective licenses.

sync's People

Contributors

aleves64 avatar animeavi avatar calzoneman avatar damianb avatar deerfarce avatar dependabot[bot] avatar gv1222 avatar h2v4c avatar hdfssk avatar hotmobile avatar jarrpa avatar kethsar avatar kr4ssi avatar lavatoaster avatar lewisakura avatar lolcow avatar mrx1983 avatar npn avatar nuclearace avatar olie440 avatar oneeighteennotwo avatar ourflagismined avatar techanon avatar unbibium avatar xaekai avatar xcang avatar zeratul0 avatar zynjec 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  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

sync's Issues

New domain name?

Can't seem to connect anymore without timing out. is this the correct URL still? (dash.calzoneman.net:1337/?channel=)?

Show which users added which videos

In the playlist you could show the username of the user who added the video. This would allow moderators to determine which users are misbehaving and take appropriate action. It's also nice to see which users add particular videos.

Case insensitive regex

Is it possible to create case insensitive regex? I try to add something like

/word/i

and it seems doesn't work.

Voteskip ratio miscalculation

6 connected users
Ratio 0.6 -> 4.6 votes needed.
Ratio 0.5 -> 4 votes needed
Ratio 0.4 -> 3.4 votes needed
Ergo: (votes needed - 1) should be fine.

Playlists Management and Wall suggestion

What are the possibilities to add a simple playlists management (load/save) and a wall/shoutbox (do you remember it from synchtube)?

Currently we have only possibility to paste set of links separated with comma. It would make playlist management much easier. Moreover, it is impossible now to get set of links from active playlist. As for wall/shoutbox it will make better communication between all members of channel community - leave messages, announcements etc.

If it's possible, I propose to add to the right panel nav tabs with "search" (current "library" box), "playlists" and "wall".

Add multiple videos

It would be easier if you could add multiple videos to the playlist at once.

>

Since I'm using .text() instead of .innerHTML, all of the filtered HTML entities are messed up.

More advanced youtube search

Is it youtube api limitation to have only 25 search results?

If not, and if you have some free time and want to improve it, you could make more advanced searching with results pagination and sorting by relevenance/upload date/view count/rating, just like on YT.

IRC Integration

Each channel could be connected with the IRC Server via bot, let's say syncbot which would forward messages to and from #sync-channel_name. In the SynchTube era many sat in rooms just to talk with friends on the chat. Low priority.

Some minor layout/code suggestions

Not really important, just my thoughts about a little layout improvement.

  • library search results box displays only scrollbar after loading a channel, you could make it hidden by default
  • shouldn't "help" link on the top navbar be opened in a new tab, or you want it open on purpose in the same tab?
  • unique id for every <div class="row">, it's not very comfortable to use .row:nth-child(1) etc. while creating custom css

Poll creator

Can you add a simple poll creator displaying after /poll command?

Creating polls on a chatline may be a little troublesome. And if you want a longer option name, you can't currently use commas because they are separators.

Implement registration password verification and reset

There's enough people using this now that people forgetting their passwords is becoming a problem.

2 things to do:

  1. Modify the registration form to include a "confirm password" field that must match the password field (and also perhaps a recovery email?)
  2. Implement some way to reset your password.

Client side mute ability

Requesting a client side mute ability (just for those people who we may have a personal dislike for heh)

afk option

I propose adding /afk command (or/and dropdown menu option) for people who wants their nick to stay on the userlist, but they are away or just listen music while doing something else. User names will be displayed italic.

Strange behavior of "close poll" button

If the poll is open, after every make/take leader action, a new "close poll" button is added.
buttonbug

Also, I suggest change caption to "End Poll". "Close" may be misunderstood.

Skip ability

Please add a skip ability, whether with democratic (fixed on 51%) or variable treshold.

License

I really love this software. My users love it too. Modern, simple, elegant unlike most other synchtube clones. I've came across it just recently, searching for something that would suit our users after synchtube death.

What I didn't notice at the first glance is the non-standard and non-free license. Actually, some people in my environment would be very keen on contributing, but seeing this license, they are now wasting time searching for alternatives.

We are not really going to make it commercial product, but there are some things (like inclusion of google ads, combination with a whole product) that can't be done with CC BY-NC 3.0. Even if we, unlikely, went full-commercial, we see much profit with being open source.

Thus, I want to ask you to reconsider the licensing options. If you are a fan of Creative Commons, cc-by or cc-by-sa should suffice. If you happen to be afraid of the source of the code when it goes commercial, GNU AGPL should be ok. But if you happen to be a really kind person, please consider some license like zlib/libpng, MIT/X11 or BSD.

Yours sincerely,
Marcin Łabanowski on behalf of other vichan[1] staff and users.

[1] http://vichan.net/

Userlist fuckup

I think in Channel.userLeave, indexOf is returning -1 or something weird like that and removing the wrong client.

Escape MySQL Queries

You perform input sanitation when getting data from a client (which is good), but depending solely on that is error-prone. Most SQL libraries allow for escaping in your queries. node-mysql allows this, but the library you're using doesn't appear to. I don't know how you want to solve this.

Questions about library data storage

  1. If the same video was played couple of times, each time a new record is adding to the database table, or each video has only one record?
  2. What exactly are "seconds" and "duration" columns in the code below? What is the difference between them?

var query = "INSERT INTO chan_{1}_library VALUES ('{2}', '{3}', {4}, '{5}', '{6}')" .replace("{1}", channame) .replace("{2}", media.id) .replace("{3}", media.title) .replace("{4}", media.seconds) .replace("{5}", media.duration) .replace("{6}", media.type);

Duplicates detection

Currently channel can be spammed with the same video over and over, which leads to the channel crash.

Improve Password Storage

Proper practice for password storing is:

  • Hash on the server (not on the client)
  • Use a (longish) salt
  • Use a few hundred rounds
  • Ideally use something like bcrypt instead of sha256, which is designed to be fast to compute on GPUs. (Crackers love that)

Bundled dark theme

It's would be nice to include dark theme for people who don't feel alright with bright colors or for those with sight issues, especially at night. I know that there is custom css option, but dark theme is quite essential.

Custom JS

Hi, can we have "Custom JS" field in channel options, just like we have now "Custom CSS"? Many of channel owners want to make their channels more flexible and functionable using jquery (for example advanced layout change, emoticons panels etc.).

Regular members playlist control

It seems that moving videos and "next" playlist buttons are not working for normal users, even if the queue is open and all options are allowed. Deleting and jumping to a video is ok. Could you check it? Bug, or my admin didn't update some files yet?

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.