Giter Site home page Giter Site logo

invidjs / invidjs Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 1.0 1.78 MB

An attempt to bring Invidious support to Node.js.

Home Page: https://invidjs.js.org/

License: GNU Affero General Public License v3.0

TypeScript 100.00%
invidious invidious-api javascript typescript node-js

invidjs's Introduction

InvidJS

npm version npm

An attempt to bring Invidious support to Node.js.

Installation and usage

Your Node.js version must be 16.9.0 or greater.

You can check your version by typing node -v in the terminal.

To install InvidJS, type npm install @invidjs/invid-js in your terminal.

After installing, insert the following in your code:

import * as InvidJS from "@invidjs/invid-js"

Changes from the stock Invidious API

  • Useless or broken endpoints are not carried over. Previously working endpoints are marked as deprecated.
  • Only the most important data is fetched for big objects.
  • Some data is filled in for you and/or made humanly-readable where possible.
  • Minimal and basic versions of objects are available to be consistent with different outputs.
  • Limit options are provided where they're not normally supported by the API.
  • Some objects and outputs are combined, for example:
    • Video and Audio formats are a single object.
    • formatStreams and adaptiveFormats are a single array.
    • Playlists and mixes are the same object, and fetched via the same function.

Building from source

To build the package, clone this repository and execute npm run build in your terminal.

Documentation

invidjs's People

Contributors

alexavil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

asrain

invidjs's Issues

Classes to port

Invidious docs state the following classes exist:

  • ImageObject
  • ThumbnailObject (has the "quality" field, similar to ImageObject otherwise)
  • VideoObject
  • PlaylistObject
  • ChannelObject

Extra classes:

  • Instance (and its stats)
  • Format

[Bug] Can't use in browser environment

Describe the bug.

I'm using Vite, React, react-router. In a router loader, I call invidJS to fetch instances. Any function I tried, I receive the following errors.

Code and Stack Trace

In a route loader:

import * as invidJS from "@invidjs/invid-js"
...
const instances = await invidJS.fetchInstances()
...

Errors in the devtools:

Module "stream" has been externalized for browser compatibility. Cannot access "stream.Stream" in client code. See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.

browser-external:fs:9 Uncaught TypeError: Cannot convert a Symbol value to a string
  at Object.get (browser-external:fs:9:102)
    at node_modules/graceful-fs/graceful-fs.js (graceful-fs.js:43:6)
    at __require2 (chunk-OZI5HTJH.js?v=4f187028:15:50)
    at node_modules/@invidjs/invid-js/node_modules/fs-extra/lib/fs/index.js (index.js:5:12)
    at __require2 (chunk-OZI5HTJH.js?v=4f187028:15:50)
    at node_modules/@invidjs/invid-js/node_modules/fs-extra/lib/index.js (index.js:5:6)
    at __require2 (chunk-OZI5HTJH.js?v=4f187028:15:50)
    at index.mjs:222:16
get @ browser-external:fs:9
node_modules/graceful-fs/graceful-fs.js @ graceful-fs.js:43
__require2 @ chunk-OZI5HTJH.js?v=4f187028:15
node_modules/@invidjs/invid-js/node_modules/fs-extra/lib/fs/index.js @ index.js:5
__require2 @ chunk-OZI5HTJH.js?v=4f187028:15
node_modules/@invidjs/invid-js/node_modules/fs-extra/lib/index.js @ index.js:5
__require2 @ chunk-OZI5HTJH.js?v=4f187028:15
(anonymous) @ index.mjs:222

Expected behaviour

Fetch instances data.

Additional context

https://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility

Release Checklist

The module will be fully ready once the following checklist is completed:

  • Instance fetching (basic info and stats)
  • Video info fetching.
  • Playlist info fetching.
  • Mixes info fetching (should be similar to playlists).
  • Stream fetching and playback (must work in DoppelBot's testing build)
  • Search engine.
  • Documentation.
  • Tests.

Annotations

Converted to a separate issue since this will most likely be tackled post-release.

Captions

API returns an error page for now.

Endpoints to port

The Invidious API has the following endpoints:

  • Stats
  • Videos
  • #6
  • Comments
  • #7
  • Trending
  • Popular
  • Channels
  • Search
  • Playlists/mixes

[Bug] Cannot fetch instances

Describe the bug.

The fetchInstances method is broken

Code and Stack Trace

test("Only a single instance should be fetched if a URL is given.", async () => {
  const instances = await InvidJS.fetchInstances({
    url: "https://vid.puffyan.us",
  });
  expect(instances).toHaveLength(1);
  expect(instances[0].url).toBe("https://vid.puffyan.us");
}, 60000);

image

Expected behaviour

Test cases should pass

Additional context

No response

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.