Floatplane channel plugin for Jellyfin 10.10.x: browse, HLS proxy, cookie session, CI release
Some checks failed
release / build-release (push) Has been cancelled
Some checks failed
release / build-release (push) Has been cancelled
- IChannel: creators -> sub-channels -> video posts (public listing API, search mapped) - IRequiresMediaInfoCallback -> signed proxy URLs; stream controller rewrites HLS so the AES-128 key is fetched server-side with the session cookie, segments stay on the CDN - delivery/info cached per token lifetime and throttled (~2/min) - config page: paste sails.sid + validate, extra creators, quality, search test - scripts/package.sh -> plugin folder + zip + md5 + manifest.json; Gitea release workflow - research docs, HAR analysis (HAR itself gitignored), install-pi5.sh Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
67
doc/research/reference-sources/fpts_README.md
Normal file
67
doc/research/reference-sources/fpts_README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Unofficial Floatplane API
|
||||
|
||||
This library is not in any way related to LMG or Floatplane Media Inc.
|
||||
|
||||
Features/Endpoints are added as needed so if something is missing please make a [Issue](https://github.com/Inrixia/floatplaneAPI.ts/issues/new) or fork, add it yourself and [Pull Request](https://github.com/Inrixia/floatplaneAPI.ts/pulls)
|
||||
|
||||
### Install
|
||||
|
||||
`$ npm install floatplane`
|
||||
|
||||
### Types & Docs
|
||||
|
||||
This library uses & collaborates with the **[Floatplane API Specification](https://github.com/Jman012/FloatplaneAPI)** which has full **[documentation](https://jamamp.github.io/FloatplaneAPIDocs/)** for most Floatplane endpoints including ones this library has not yet implemented.
|
||||
|
||||
### Example Usage
|
||||
|
||||
```ts
|
||||
import { Floatplane, type AuthToken, OnDeviceCode } from 'floatplane';
|
||||
|
||||
class AuthTokenStore {
|
||||
authToken?: AuthToken;
|
||||
}
|
||||
|
||||
const onDeviceCode: OnDeviceCode = async ({ verification_uri_complete, verification_uri }) => {
|
||||
const verifyUri = verification_uri_complete ?? verification_uri;
|
||||
console.log(`Please login to Floatplane via ${verifyUri}`);
|
||||
};
|
||||
|
||||
const authTokenStore = new AuthTokenStore();
|
||||
|
||||
const floatplane = new Floatplane({
|
||||
authConfig: {
|
||||
clientId: "example-client", // Has to be registered on FloatPlane
|
||||
authToken: authTokenStore.authToken,
|
||||
onAuthToken: (authToken) => {authTokenStore.authToken = authToken},
|
||||
onDeviceCode,
|
||||
},
|
||||
userAgent: `ExampleApp`, // Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/User-Agent
|
||||
});
|
||||
|
||||
// Fetch User subscriptions
|
||||
const subs = await floatplane.user.subscriptions();
|
||||
|
||||
// 20 Latest videos from first subscription
|
||||
const videos = await floatplane.creator.blogPosts(subs[0].creator, { hasVideo: true });
|
||||
|
||||
// Fetch all videos asynchronously
|
||||
for await (const video of floatplane.creator.blogPostsIterable(subs[0].creator, { hasVideo: true })) {
|
||||
console.log(video);
|
||||
}
|
||||
```
|
||||
|
||||
Take a look at https://github.com/Inrixia/Floatplane-Downloader/blob/055e21e42c0af89a68cdf2f58a195cc81ad07ddf/src/lib/helpers/index.ts#L49-L58 for a reference implementation.
|
||||
|
||||
Individual classes can also be imported seperately:
|
||||
|
||||
```ts
|
||||
import { Auth } from "floatplane/auth";
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
## Projects
|
||||
|
||||
The following projects use this library:
|
||||
|
||||
### [Floatplane Downloader](https://github.com/Inrixia/Floatplane-Downloader)
|
||||
Reference in New Issue
Block a user