npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

seylan

v1.0.1

Published

simple stream re-streamer

Downloads

6

Readme

seylan

Fast and simple audio and video streamer which utilitizes yt-dlp and ffmpeg for re-streaming media streams.

seylan works as an accelerator middleware between the source of media streams and media player.

Regular HLS streams found in m3u files, and all the sources that yt-dlp supports, including youtube videos and twitch streams, are supported.

Why

There are many great softwares available for re-streaming and watching IPTV streams (like streamlink, tvheadend, mpv and vlc), but if you happen to use these programs for playing you will notice that for some streams there is a long delay before stream starts to play. It's because some servers are slow to produce/serve m3u files and it takes time to analyze the available formats and this makes switching between the streams an annoying experience, especially on slow networks.

seylan tries to facilitate this problem by getting the streams' metadata and caching formats.

Dependencies

  • node runtime: seylan is a node.js program
  • yt-dlp: for getting available formats
  • ffmpeg: for re-streaming

Installation

via npm:

$ npm i -g seylan

via yarn:

$ yarn global add seylan

After installating the package, add the global prefix directory of npm or yarn to your PATH environment variable. If you are using npm, command npm get prefix prints the current npm prefix.

Configuration

seylan uses environment variables for configuration.

  • SEYLAN_PORT: port for seylan server. default is 7777
  • SEYLAN_CACHE_INTERVAL: interval for stream caching in milliseconds. default is 300000 (5 minutes)
  • SEYLAN_PROXY: proxy to be used for yt-dlp and ffmpeg

Channels

seylan optionally reads channels.json file for prefeching metadata and creating a playlist. The file should be created in $HOME/.config/seylan/channels.json.

Example

{
    "Youtube Stream": "https://www.youtube.com/watch?v=YOUTUBE_VIDEO_ID",
    "Twitch Stream": "https://www.twitch.tv/CHANNEL_ID"
}

seylan watches the channels.json file and recreates the playlist on the fly. You can use https://github.com/iptv-org/iptv for finding stream links.

Caching

seylan creates a file in $HOME/.cache/seylan directory for each stream defined in channels.json file. As youtube stream formats get expired after several hours it updates the cache by using an interval.

Usage

Starting the server

$ SEYLAN_PORT=7777 seylan

Getting and playing the playlist by using mpv

$ mpv --playlist=http://localhost:7777/get_playlist

Playing a stream directly

$ mpv "http://127.0.0.1:7777/stream\?url=URI_ENCODED_URL"

systemd integration (Linux)

One way of running seylan on system startup is creating a systemd unit file. Create a file in $HOME/.config/systemd/user/seylan.service with following content:

[Unit]
Description=Seylan
After=network.target

[Service]
# Environment=SEYLAN_PORT=7777
# Environment=SEYLAN_PROXY=http://localhost:3333
ExecStart=/path/to/seylan

Restart=always

[Install]
WantedBy=default.target

And enable the unit:

$ systemctl --user daemon-reload
$ systemctl --user enable --now seylan

License

Licensed under MIT.