# @itkyk/youtube-controller

> Module for easily incorporating iframe API.

Latest version **2.1.1** (published 2024-03-15) · ISC license · 0 weekly downloads

## Install

```sh
npm install @itkyk/youtube-controller
pnpm add @itkyk/youtube-controller
yarn add @itkyk/youtube-controller
bun add @itkyk/youtube-controller
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.1 |
| Published | 2024-03-15 |
| First published | 2022-03-13 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 15.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Maintainers | i_takayuki |
| Keywords | youtube, iframe API, typescript, javascript |

## Links

- npm: https://www.npmjs.com/package/@itkyk/youtube-controller
- Repository: https://github.com/itkyk/youtube-controller
- Homepage: https://github.com/itkyk/youtube-controller#readme
- Issues: https://github.com/itkyk/youtube-controller/issues
- npm.io page: https://npm.io/package/@itkyk/youtube-controller

## Dependencies (3)

- [deepmerge](https://npm.io/package/deepmerge.md) ^4.3.1
- [@types/youtube](https://npm.io/package/@types/youtube.md) ^0.0.50
- [is-plain-object](https://npm.io/package/is-plain-object.md) ^5.0.0

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 2.1.1 (latest) — 2024-03-15
- 2.0.7 — 2023-10-26
- 2.0.6 — 2023-03-30
- 2.0.5 — 2023-03-29
- 2.0.4 — 2022-12-22
- 2.0.3 — 2022-09-14
- 2.0.2 — 2022-09-08
- 2.0.1 — 2022-09-08
- 2.0.0 — 2022-09-08
- 1.0.0 — 2022-03-13

## README

# @itkyk/youtube-controller  

## Install
```shell
$ npm i @itkyk/youtube-controller
```

## Use this module

```typescript
import YoutubeController from "@itkyk/youtube-controller";

const initi = async() => {
// start Youtube
  const target = document.querySelector("target"); /* <- insert player in this selector*/
  const options = {
      playerVars: {}
  } /* setting YT.Options */
  const player = new YoutubeController("videoId", target, options);
  await player.onYouTubeIframeAPIReady();
  /* ↓ Can use player ↓ */
  player.cueVideoById({
    videoId: "foobar"
  })
  player.playVideo();
}
```

## Initial Methods
1. onYouTubeIframeAPIReady
   - This function is Promise.
   - when this function return `Promise`, it mean is `onReady` too.

## Methods that Player has
1. playVideo
   - Arguments: none.
   - Return: void;
1. stopVideo
    - Arguments: none.
    - Return: void;
1. pauseVideo
    - Arguments: none.
    - Return: void;
1. loadVideoById
    - Arguments: 
      - Object
        - videoId:string
        - startSeconds?:number
        - suggestedQuality?:`YT.SuggestedVideoQuality`
    - Return: void;
1. loadVideoByUrl
    - Arguments: 
      - Object
        - mediaContentUrl:string
        - startSeconds?:number
        - endSeconds?:number
        - suggestedQuality?:`YT.SuggestedVideoQuality`
    - Return: void;
1. cueVideoById
    - Arguments: 
      - Object
        - videoId: string
        - startSeconds?:number
        - endSeconds?:number
        - suggestedQuality?:`YT.SuggestedVideoQuality`
    - Return: void;
1. cueVideoByUrl
    - Arguments: 
      - Object
        - mediaContentUrl:string
        - startSeconds?:number
        - endSeconds?:number
        - suggestedQuality?:`YT.SuggestedVideoQuality`
    - Return: void;
1. seekTo
   - Arguments:
     - seconds: number,
     - allowSeekAhead:boolean
   - Return: void
1. nextVideo
    - Arguments: none
    - Return none
1. previousVideo
    - Arguments: none
    - Return: void
playVideoAt
    - Arguments:
      - index: number
    - Return none
1. mute
    - Arguments: none
    - Return: void
1. unMute
    - Arguments: none
    - Return: void
1. isMuted
    - Arguments: none
    - Return: boolean
1. setVolume
    - Arguments: 
      - volume: number
    - Return: void
1. getVolume
    - Arguments: none
    - Return: number
1. setSize
    - Arguments:
      - Object
        - width: number
        - height: number
    - Return: void
1. getPlaybackRate
    - Arguments: none
    - Return number
1. setPlaybackRate
    - Arguments:
      - suggestedRate: number
    - Return: void
1. getAvailablePlaybackRates
    - Arguments: none
    - Return: Array<number>
1. setLoop
    - Arguments:
      - loopPlaylists: boolean
    - Return: void
1. setShuffle
    - Arguments:
      - shufflePlaylist: boolean
    - Return: void
1. getVideoLoadedFraction
    - Arguments: none
    - Return: number
1. getPlayerState
    - Arguments: none
    - Return: `YT.PlayerState`
1. getCurrentTime
    - Arguments: none
    - Return: number
1. getPlaybackQuality
    - Arguments: none
    - Return: `YT.SuggestedVideoQuality`
1. setPlaybackQuality
    - Arguments: 
      - suggestedQuality:`YT.SuggestedVideoQuality`
    - Return: void
1. getAvailableQualityLevels
    - Arguments: none
    - Return: Array<`YT.SuggestedVideoQuality`>
1. getDuration
    - Arguments: none
    - Return: number
1. getVideoUrl
    - Arguments: none
    - Return: string
1. getVideoEmbedCode
    - Arguments: none
    - Return: string
1. getPlaylist
    - Arguments: none
    - Return: Array<string>
1. getPlaylistIndex
    - Arguments: none
    - Return: number
1. addEventListener
    - Arguments: 
      - event: keyof `YT.PlayerEvent`
      - listener: (event: `YT.PlayerEvent`)=>void
    - Return: void
1. removeEventListener
    - Arguments:
        - event: keyof `YT.PlayerEvent`
        - listener: (event: `YT.PlayerEvent`)=>void
    - Return: void
1. getIframe
    - Arguments: none
    - Return: HTMLIFrameElement
1. destroy
    - Arguments: none
    - Return: void
1. getPlayer
    - Argument: none
    - Return: `YT.Player`

## Change Log
- ### update v2.1.1
  - Change Types to `@types/youtube`
  - Change option from `playerVars` to `YT.Options`
- ### update v2.0.7
  - Fixed overwrite condition of `onYouTubeIframeAPIReady`
- ### update v2.0.6
  - Fixed a bug in React that prevented it from working.
- ### update v2.0.5
  - Simplified initial setup.  
    Also, the `onYouTubeIframeAPIReady` method has been modified to run correctly.

---
_Source: https://npm.io/package/@itkyk/youtube-controller · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
