diff --git a/.docs/.editorconfig b/.docs/.editorconfig new file mode 100644 index 0000000..85f1419 --- /dev/null +++ b/.docs/.editorconfig @@ -0,0 +1,7 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +indent_size = 2 +indent_style = space \ No newline at end of file diff --git a/.docs/.eslintignore b/.docs/.eslintignore index a1bd0c8..50d6a2f 100644 --- a/.docs/.eslintignore +++ b/.docs/.eslintignore @@ -1,4 +1,6 @@ dist node_modules .output -.nuxt \ No newline at end of file +public +# Ignore index due to prettier removing setext headers +*.index.md diff --git a/.docs/.eslintrc.cjs b/.docs/.eslintrc.cjs index 38db313..814e439 100644 --- a/.docs/.eslintrc.cjs +++ b/.docs/.eslintrc.cjs @@ -1,8 +1,6 @@ module.exports = { - root: true, - extends: '@nuxt/eslint-config', + extends: ['next', 'plugin:prettier/recommended'], rules: { - 'vue/max-attributes-per-line': 'off', - 'vue/multi-word-component-names': 'off' - } -} \ No newline at end of file + '@next/next/no-img-element': 'off', + }, +}; diff --git a/.docs/.gitattributes b/.docs/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.docs/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.docs/.github/CODEOWNERS b/.docs/.github/CODEOWNERS new file mode 100644 index 0000000..7458772 --- /dev/null +++ b/.docs/.github/CODEOWNERS @@ -0,0 +1 @@ +* @movie-web/project-leads diff --git a/.docs/.github/CODE_OF_CONDUCT.md b/.docs/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c703492 --- /dev/null +++ b/.docs/.github/CODE_OF_CONDUCT.md @@ -0,0 +1 @@ +Please visit the [main document at primary repository](https://github.com/movie-web/movie-web/blob/dev/.github/CODE_OF_CONDUCT.md). diff --git a/.docs/.github/CONTRIBUTING.md b/.docs/.github/CONTRIBUTING.md new file mode 100644 index 0000000..afaa8fc --- /dev/null +++ b/.docs/.github/CONTRIBUTING.md @@ -0,0 +1 @@ +Please visit the [main document at primary repository](https://github.com/movie-web/movie-web/blob/dev/.github/CONTRIBUTING.md). diff --git a/.docs/.github/workflows/github_pages.yml b/.docs/.github/workflows/github_pages.yml new file mode 100644 index 0000000..5ebfd06 --- /dev/null +++ b/.docs/.github/workflows/github_pages.yml @@ -0,0 +1,49 @@ +name: "docs-deploy" + +on: + push: + branches: + - master + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: pnpm + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build + run: pnpm build + + - name: Upload + uses: actions/upload-pages-artifact@v3 + with: + path: ./out + + deploy: + needs: build + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.docs/.github/workflows/linting.yml b/.docs/.github/workflows/linting.yml new file mode 100644 index 0000000..57f972a --- /dev/null +++ b/.docs/.github/workflows/linting.yml @@ -0,0 +1,32 @@ +name: Linting and Testing + +on: + push: + branches: + - master + pull_request: + +jobs: + linting: + name: Run Linters + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v3 + with: + version: 8 + + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'pnpm' + + - name: Install pnpm packages + run: pnpm install + + - name: Run ESLint + run: pnpm run lint diff --git a/.docs/.gitignore b/.docs/.gitignore index 5437013..2766384 100755 --- a/.docs/.gitignore +++ b/.docs/.gitignore @@ -2,12 +2,11 @@ node_modules *.iml .idea *.log* -.nuxt .vscode .DS_Store coverage dist sw.* .env -.output -.nuxt +out +.next diff --git a/.docs/.prettierignore b/.docs/.prettierignore new file mode 100644 index 0000000..1d4848c --- /dev/null +++ b/.docs/.prettierignore @@ -0,0 +1,3 @@ +# Ignore index due to prettier removing setext headers +*.index.md +.github/CODEOWNERS diff --git a/.docs/.prettierrc b/.docs/.prettierrc new file mode 100644 index 0000000..6e778b4 --- /dev/null +++ b/.docs/.prettierrc @@ -0,0 +1,4 @@ +{ + "trailingComma": "all", + "singleQuote": true +} diff --git a/.docs/LICENSE b/.docs/LICENSE new file mode 100644 index 0000000..2c2b7c4 --- /dev/null +++ b/.docs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 movie-web + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.docs/app.config.ts b/.docs/app.config.ts deleted file mode 100644 index 8e05fc4..0000000 --- a/.docs/app.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -export default defineAppConfig({ - docus: { - title: '@movie-web/providers', - description: 'For all your media scraping needs', - socials: { - github: 'movie-web/providers', - }, - image: '', - aside: { - level: 0, - exclude: [], - }, - header: { - logo: false, - }, - }, -}); diff --git a/.docs/assets/css/main.css b/.docs/assets/css/main.css deleted file mode 100644 index 17a99c2..0000000 --- a/.docs/assets/css/main.css +++ /dev/null @@ -1,3 +0,0 @@ -code > span { - white-space: pre; -} diff --git a/.docs/bun.lockb b/.docs/bun.lockb new file mode 100644 index 0000000..1300016 Binary files /dev/null and b/.docs/bun.lockb differ diff --git a/.docs/components/Logo.module.css b/.docs/components/Logo.module.css new file mode 100644 index 0000000..1366e5a --- /dev/null +++ b/.docs/components/Logo.module.css @@ -0,0 +1,18 @@ +.logo { + border-radius: 5px; + margin-left: -0.5rem; + padding: 0.5rem; + transition: transform 100ms ease-in-out, background-color 100ms ease-in-out; +} + +.logo > img { + height: 1.5rem; +} + +.logo:hover { + background-color: rgba(var(--colors-bgLightest)); +} + +.logo:active { + transform: scale(1.05); +} diff --git a/.docs/components/Logo.tsx b/.docs/components/Logo.tsx new file mode 100644 index 0000000..18c61d8 --- /dev/null +++ b/.docs/components/Logo.tsx @@ -0,0 +1,11 @@ +import Link from 'next/link'; +import classes from './Logo.module.css'; +import logoUrl from '../public/icon-light.png'; + +export function Logo() { + return ( + + Logo of movie-web + + ); +} diff --git a/.docs/content/0.index.md b/.docs/content/0.index.md deleted file mode 100644 index 29d9522..0000000 --- a/.docs/content/0.index.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "@movie-web/providers | For all your media scraping needs" -navigation: false -layout: page ---- - -::block-hero ---- -cta: - - Get Started - - /get-started/introduction -secondary: - - Open on GitHub → - - https://github.com/movie-web/providers -snippet: npm i @movie-web/providers ---- - -#title -@movie-web/providers - -#description -Easily scrape all sorts of media sites for content -:: - -::card-grid -#title -What's included - -#root -:ellipsis - -#default - ::card{icon="vscode-icons:file-type-light-json"} - #title - Scrape popular streaming websites. - #description - Don't settle for just one media site for you content, use everything that's available. - :: - ::card{icon="codicon:source-control"} - #title - Multi-platform. - #description - Scrape from browser or server, whichever you prefer. - :: - ::card{icon="logos:typescript-icon-round"} - #title - Easy to use. - #description - Get started with scraping your favourite media sites with just 5 lines of code. Fully typed of course. - :: -:: diff --git a/.docs/content/1.get-started/3.examples.md b/.docs/content/1.get-started/3.examples.md deleted file mode 100644 index a2a90db..0000000 --- a/.docs/content/1.get-started/3.examples.md +++ /dev/null @@ -1,5 +0,0 @@ -# Examples - -::alert{type="warning"} -There are no examples yet, stay tuned! -:: diff --git a/.docs/content/1.get-started/_dir.yml b/.docs/content/1.get-started/_dir.yml deleted file mode 100644 index d43345e..0000000 --- a/.docs/content/1.get-started/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -icon: ph:shooting-star-fill -navigation.redirect: /get-started/introduction diff --git a/.docs/content/2.essentials/_dir.yml b/.docs/content/2.essentials/_dir.yml deleted file mode 100644 index a2dbf9c..0000000 --- a/.docs/content/2.essentials/_dir.yml +++ /dev/null @@ -1,3 +0,0 @@ -icon: ph:info-fill -navigation.redirect: /essentials/usage -navigation.title: "Get started" diff --git a/.docs/content/3.in-depth/_dir.yml b/.docs/content/3.in-depth/_dir.yml deleted file mode 100644 index 03f39fc..0000000 --- a/.docs/content/3.in-depth/_dir.yml +++ /dev/null @@ -1,3 +0,0 @@ -icon: ph:atom-fill -navigation.redirect: /in-depth/sources-and-embeds -navigation.title: "In-depth" diff --git a/.docs/content/4.extra-topics/_dir.yml b/.docs/content/4.extra-topics/_dir.yml deleted file mode 100644 index 87faebd..0000000 --- a/.docs/content/4.extra-topics/_dir.yml +++ /dev/null @@ -1,3 +0,0 @@ -icon: ph:aperture-fill -navigation.redirect: /extra-topics/development -navigation.title: "Extra topics" diff --git a/.docs/next-env.d.ts b/.docs/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/.docs/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/.docs/next.config.mjs b/.docs/next.config.mjs new file mode 100644 index 0000000..5e40ee1 --- /dev/null +++ b/.docs/next.config.mjs @@ -0,0 +1,10 @@ +import { guider } from '@neato/guider'; + +const withGuider = guider({ + themeConfig: './theme.config.tsx', +}); + +export default withGuider({ + output: 'export', + basePath: '/providers', +}); diff --git a/.docs/nuxt.config.ts b/.docs/nuxt.config.ts deleted file mode 100755 index 9fa8296..0000000 --- a/.docs/nuxt.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -export default defineNuxtConfig({ - // https://github.com/nuxt-themes/docus - extends: '@nuxt-themes/docus', - - css: [ - '@/assets/css/main.css', - ], - - build: { - transpile: [ - "chalk" - ] - }, - - modules: [ - // https://github.com/nuxt-modules/plausible - '@nuxtjs/plausible', - // https://github.com/nuxt/devtools - '@nuxt/devtools' - ] -}) diff --git a/.docs/package.json b/.docs/package.json index cf9261d..9f5d4a9 100644 --- a/.docs/package.json +++ b/.docs/package.json @@ -1,22 +1,28 @@ { "name": "providers-docs", - "version": "0.1.0", + "version": "0.2.0", "private": true, "scripts": { - "dev": "nuxi dev", - "build": "nuxi build", - "generate": "nuxi generate", - "preview": "nuxi preview", - "lint": "eslint .", - "preinstall": "npx -y only-allow pnpm" + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "lint:fix": "next lint --fix" }, "devDependencies": { - "@nuxt-themes/docus": "^1.13.1", - "@nuxt/devtools": "^1.0.1", - "@nuxt/eslint-config": "^0.1.1", - "@nuxtjs/plausible": "^0.2.1", - "@types/node": "^20.4.0", - "eslint": "^8.44.0", - "nuxt": "^3.6.2" + "@types/react": "18.2.73", + "eslint": "^8.56.0", + "eslint-config-next": "^14.1.4", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.2", + "prettier": "^3.1.1", + "typescript": "5.4.3" + }, + "dependencies": { + "@neato/guider": "^0.1.5", + "next": "^14.1.4", + "next-seo": "^6.5.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/.docs/pages/404.tsx b/.docs/pages/404.tsx new file mode 100644 index 0000000..66983a7 --- /dev/null +++ b/.docs/pages/404.tsx @@ -0,0 +1,3 @@ +import { createNotFoundPage } from '@neato/guider/client'; + +export default createNotFoundPage(); diff --git a/.docs/pages/_app.tsx b/.docs/pages/_app.tsx new file mode 100644 index 0000000..b77d1e9 --- /dev/null +++ b/.docs/pages/_app.tsx @@ -0,0 +1,4 @@ +import '@neato/guider/style.css'; +import { createGuiderApp } from '@neato/guider/client'; + +export default createGuiderApp(); diff --git a/.docs/content/5.api-reference/1.ProviderControlsRunAll.md b/.docs/pages/api-reference/ProviderControlsRunAll.md similarity index 93% rename from .docs/content/5.api-reference/1.ProviderControlsRunAll.md rename to .docs/pages/api-reference/ProviderControlsRunAll.md index 5270b64..851558b 100644 --- a/.docs/content/5.api-reference/1.ProviderControlsRunAll.md +++ b/.docs/pages/api-reference/ProviderControlsRunAll.md @@ -6,8 +6,10 @@ You can attach events if you need to know what is going on while it is processin ## Example ```ts +import { ScrapeMedia, targets } from '@movie-web/providers'; + // media from TMDB -const media = { +const media : ScrapeMedia = { type: 'movie', title: 'Hamilton', releaseYear: 2020, diff --git a/.docs/content/5.api-reference/6.ProviderControlsgetMetadata.md b/.docs/pages/api-reference/ProviderControlsgetMetadata.md similarity index 100% rename from .docs/content/5.api-reference/6.ProviderControlsgetMetadata.md rename to .docs/pages/api-reference/ProviderControlsgetMetadata.md diff --git a/.docs/content/5.api-reference/5.ProviderControlslistEmbeds.md b/.docs/pages/api-reference/ProviderControlslistEmbeds.md similarity index 100% rename from .docs/content/5.api-reference/5.ProviderControlslistEmbeds.md rename to .docs/pages/api-reference/ProviderControlslistEmbeds.md diff --git a/.docs/content/5.api-reference/4.ProviderControlslistSources.md b/.docs/pages/api-reference/ProviderControlslistSources.md similarity index 100% rename from .docs/content/5.api-reference/4.ProviderControlslistSources.md rename to .docs/pages/api-reference/ProviderControlslistSources.md diff --git a/.docs/content/5.api-reference/3.ProviderControlsrunEmbedScraper.md b/.docs/pages/api-reference/ProviderControlsrunEmbedScraper.md similarity index 100% rename from .docs/content/5.api-reference/3.ProviderControlsrunEmbedScraper.md rename to .docs/pages/api-reference/ProviderControlsrunEmbedScraper.md diff --git a/.docs/content/5.api-reference/2.ProviderControlsrunSourceScraper.md b/.docs/pages/api-reference/ProviderControlsrunSourceScraper.md similarity index 91% rename from .docs/content/5.api-reference/2.ProviderControlsrunSourceScraper.md rename to .docs/pages/api-reference/ProviderControlsrunSourceScraper.md index e99396b..695f797 100644 --- a/.docs/content/5.api-reference/2.ProviderControlsrunSourceScraper.md +++ b/.docs/pages/api-reference/ProviderControlsrunSourceScraper.md @@ -5,10 +5,10 @@ Run a specific source scraper and get its emitted streams. ## Example ```ts -import { SourcererOutput, NotFoundError } from '@movie-web/providers'; +import { ScrapeMedia , SourcererOutput, NotFoundError } from '@movie-web/providers'; // media from TMDB -const media = { +const media : ScrapeMedia = { type: 'movie', title: 'Hamilton', releaseYear: 2020, diff --git a/.docs/content/5.api-reference/_dir.yml b/.docs/pages/api-reference/_dir.yml similarity index 100% rename from .docs/content/5.api-reference/_dir.yml rename to .docs/pages/api-reference/_dir.yml diff --git a/.docs/pages/api-reference/index.tsx b/.docs/pages/api-reference/index.tsx new file mode 100644 index 0000000..4b74947 --- /dev/null +++ b/.docs/pages/api-reference/index.tsx @@ -0,0 +1,3 @@ +import { createRedirect } from '@neato/guider/client'; + +export default createRedirect({ to: '/api-reference/makeProviders' }); diff --git a/.docs/content/5.api-reference/0.makeProviders.md b/.docs/pages/api-reference/makeProviders.md similarity index 100% rename from .docs/content/5.api-reference/0.makeProviders.md rename to .docs/pages/api-reference/makeProviders.md diff --git a/.docs/content/5.api-reference/8.makeSimpleProxyFetcher.md b/.docs/pages/api-reference/makeSimpleProxyFetcher.md similarity index 100% rename from .docs/content/5.api-reference/8.makeSimpleProxyFetcher.md rename to .docs/pages/api-reference/makeSimpleProxyFetcher.md diff --git a/.docs/content/5.api-reference/7.makeStandardFetcher.md b/.docs/pages/api-reference/makeStandardFetcher.md similarity index 100% rename from .docs/content/5.api-reference/7.makeStandardFetcher.md rename to .docs/pages/api-reference/makeStandardFetcher.md diff --git a/.docs/content/2.essentials/3.customize-providers.md b/.docs/pages/essentials/customize-providers.mdx similarity index 99% rename from .docs/content/2.essentials/3.customize-providers.md rename to .docs/pages/essentials/customize-providers.mdx index ecb20c4..f58bc78 100644 --- a/.docs/content/2.essentials/3.customize-providers.md +++ b/.docs/pages/essentials/customize-providers.mdx @@ -71,4 +71,4 @@ const providers = buildProviders() } }) .build(); -``` +``` \ No newline at end of file diff --git a/.docs/content/2.essentials/2.fetchers.md b/.docs/pages/essentials/fetchers.mdx similarity index 99% rename from .docs/content/2.essentials/2.fetchers.md rename to .docs/pages/essentials/fetchers.mdx index 5f12097..4194fd7 100644 --- a/.docs/content/2.essentials/2.fetchers.md +++ b/.docs/pages/essentials/fetchers.mdx @@ -71,4 +71,4 @@ const myFetcher: Fetcher = (url, ops) => { statusCode: 200, }; } -``` +``` \ No newline at end of file diff --git a/.docs/pages/essentials/index.tsx b/.docs/pages/essentials/index.tsx new file mode 100644 index 0000000..4e5182d --- /dev/null +++ b/.docs/pages/essentials/index.tsx @@ -0,0 +1,3 @@ +import { createRedirect } from '@neato/guider/client'; + +export default createRedirect({ to: '/essentials/usage-on-x' }); diff --git a/.docs/content/2.essentials/1.targets.md b/.docs/pages/essentials/targets.mdx similarity index 70% rename from .docs/content/2.essentials/1.targets.md rename to .docs/pages/essentials/targets.mdx index 08f3c2e..2a3f1ba 100644 --- a/.docs/content/2.essentials/1.targets.md +++ b/.docs/pages/essentials/targets.mdx @@ -2,13 +2,13 @@ When creating provider controls, you will immediately be required to choose a target. -::alert{type="warning"} + A target is the device on which the stream will be played. -**Where the scraping is run has nothing to do with the target**, only where the stream is finally played in the end is significant in choosing a target. -:: +**Where the scraping is being run has nothing to do with the target**, only where the stream is finally played in the end is significant in choosing a target. + #### Possible targets - **`targets.BROWSER`** Stream will be played in a browser with CORS - **`targets.BROWSER_EXTENSION`** Stream will be played in a browser using the movie-web extension (WIP) - **`targets.NATIVE`** Stream will be played on a native video player -- **`targets.ANY`** No restrictions for selecting streams, will just give all of them +- **`targets.ANY`** No restrictions for selecting streams, will just give all of them \ No newline at end of file diff --git a/.docs/content/2.essentials/0.usage-on-x.md b/.docs/pages/essentials/usage-on-x.mdx similarity index 61% rename from .docs/content/2.essentials/0.usage-on-x.md rename to .docs/pages/essentials/usage-on-x.mdx index da53dc1..3ea021d 100644 --- a/.docs/content/2.essentials/0.usage-on-x.md +++ b/.docs/pages/essentials/usage-on-x.mdx @@ -24,7 +24,7 @@ const providers = makeProviders({ ## Browser client-side Using the provider package client-side requires a hosted version of simple-proxy. -Read more [about proxy fetchers](./2.fetchers.md#using-fetchers-on-the-browser). +Read more [about proxy fetchers](/essentials/fetchers#using-fetchers-on-the-browser). ```ts import { makeProviders, makeStandardFetcher, targets } from '@movie-web/providers'; @@ -41,27 +41,32 @@ const providers = makeProviders({ ## React native To use the library in a react native app, you would also need a couple of polyfills to polyfill crypto and base64. -1. First install the polyfills: -```bash -npm install @react-native-anywhere/polyfill-base64 react-native-quick-crypto -``` + + + ### First install the polyfills: + ```sh npm2yarn + npm install @react-native-anywhere/polyfill-base64 react-native-quick-crypto + ``` + + + ### Add the polyfills to your app: + ```ts + // Import in your entry file + import '@react-native-anywhere/polyfill-base64'; + ``` -2. Add the polyfills to your app: -```ts -// Import in your entry file -import '@react-native-anywhere/polyfill-base64'; -``` + And follow the [react-native-quick-crypto documentation](https://github.com/margelo/react-native-quick-crypto) to set up the crypto polyfill. + + + ### Then you can use the library like this: + ```ts + import { makeProviders, makeStandardFetcher, targets } from '@movie-web/providers'; -And follow the [react-native-quick-crypto documentation](https://github.com/margelo/react-native-quick-crypto) to set up the crypto polyfill. - -3. Then you can use the library like this: - -```ts -import { makeProviders, makeStandardFetcher, targets } from '@movie-web/providers'; - -const providers = makeProviders({ - fetcher: makeStandardFetcher(fetch), - target: target.NATIVE, - consistentIpForRequests: true, -}) -``` + const providers = makeProviders({ + fetcher: makeStandardFetcher(fetch), + target: target.NATIVE, + consistentIpForRequests: true, + }) + ``` + + \ No newline at end of file diff --git a/.docs/content/2.essentials/4.using-streams.md b/.docs/pages/essentials/using-streams.mdx similarity index 60% rename from .docs/content/2.essentials/4.using-streams.md rename to .docs/pages/essentials/using-streams.mdx index 1cf8ff2..49988e4 100644 --- a/.docs/content/2.essentials/4.using-streams.md +++ b/.docs/pages/essentials/using-streams.mdx @@ -4,13 +4,13 @@ Streams can sometimes be quite picky on how they can be used. So here is a guide ## Essentials -All streams have the same common parameters: - - `Stream.type`: The type of stream. Either `hls` or `file` - - `Stream.id`: The id of this stream, unique per scraper output. - - `Stream.flags`: A list of flags that apply to this stream. Most people won't need to use it. - - `Stream.captions`: A list of captions/subtitles for this stream. - - `Stream.headers`: Either undefined or a key value object of headers you must set to use the stream. - - `Stream.preferredHeaders`: Either undefined or a key value object of headers you may want to set if you want optimal playback - but not required. +All streams have the same common parameters : + - `Stream.type` : The type of stream. Either `hls` or `file` + - `Stream.id` : The id of this stream, unique per scraper output. + - `Stream.flags` : A list of flags that apply to this stream. Most people won't need to use it. + - `Stream.captions` : A list of captions/subtitles for this stream. + - `Stream.headers` : Either undefined or a key value object of headers you must set to use the stream. + - `Stream.preferredHeaders` : Either undefined or a key value object of headers you may want to set if you want optimal playback - but not required. Now let's delve deeper into how to watch these streams! @@ -22,7 +22,7 @@ These streams have an extra property `Stream.playlist` which contains the m3u8 p Here is a code sample of how to use HLS streams in web context using hls.js ```html - +