open-index/open-npm huggingface dataset:
npm package: @mpv-easy/anime4k
Description: copy from: [Anime4K](https://github.com/bloc97/Anime4K/releases)  [GLSL_Instructions_Windows_MPV](https://github.com/bloc97/Anime4K/blob/master/md/GLSL_Instructions_Windows_MPV.md) [input.conf](https://github.com/bloc97/Anime4K/blob/master/md/Template/GLS
Author: ahaoboy
Latest version: 0.1.15-alpha.20

copy from: [Anime4K](https://github.com/bloc97/Anime4K/releases)  [GLSL_Instructions_Windows_MPV](https://github.com/bloc97/Anime4K/blob/master/md/GLSL_Instructions_Windows_MPV.md) [input.conf](https://github.com/bloc97/Anime4K/blob/master/md/Template/GLSL_Windows_High-end/input.conf)

<div style="display: flex;">
  <img src="../assets/img/anime4k.jpg" alt="anime4k"/>
</div>

## install


- Download the latest version of [anime4k.js](https://github.com/mpv-easy/mpv-easy/releases) and copy it to the mpv script directory

- Add configuration to input.conf [shortkey](https://github.com/mpv-easy/mpv-easy/tree/main/mpv-anime4k#shortkey)

## shortkey

Add config to `input.conf`

```shell
CTRL+0    script-message Anime4K-Clear
CTRL+1    script-message Anime4K-AA-HQ
CTRL+2    script-message Anime4K-B-HQ
CTRL+3    script-message Anime4K-C-HQ
CTRL+4    script-message Anime4K-A-HQ
CTRL+5    script-message Anime4K-BB-HQ
CTRL+6    script-message Anime4K-CA-HQ
```
npm package: @mpv-easy/assdraw
Description: ```bash pnpm i @mpv-easy/assdraw ```
Author: ahaoboy
Latest version: 0.1.15-alpha.20

## usage
```bash
pnpm i @mpv-easy/assdraw
```

## example
```ts
import { AssDraw } from '@mpv-easy/assdraw'

new AssDraw().blueText("hello ").redText("world").toString()
```

## todo
- [ ] svg icon
npm package: @mpv-easy/autoload
Description: Automatically loads other video files in the same directory according to the currently playing file.
Author: ahaoboy
Latest version: 0.1.15-alpha.20

Automatically loads other video files in the same directory according to the currently playing file.

https://github.com/mpv-player/mpv/blob/master/TOOLS/lua/autoload.lua
https://github.dev/gaesa/mpv-autoload


## install
- Download the latest version of [autoload.js](https://github.com/mpv-easy/mpv-easy/releases) and copy it to the mpv script directory

## todo
- [ ] load similar video/audio
npm package: @mpv-easy/clip-play
Description: Use shortcut key(default ctrl+v) to play video from clipboard, supports file, webdav and jellyfin.
Author: ahaoboy
Latest version: 0.1.12

Use shortcut key(default ctrl+v) to play video from clipboard, supports file, webdav and jellyfin.

## Supported link formats
Folders do not support recursive scanning

- local file: c:/a/b/c.mp4
- local folder: c:/a/b
- webdav file http://<host>/a.mp4
- webdav folder: http://<host>/a
- jellyfin file http://<host>/web/index.html#!/details?id=<id>&serverId=<sid>
- jellyfin folder: http://<host>/web/index.html#!/movies.html?topParentId=<id>
- youtube: https://www.youtube.com/watch?v=<id>


## config

```
key: "ctrl+v",
osdDuration: 2000
```

## todo
- [ ] open video from clipboard
npm package: @mpv-easy/clipboard-play
Description: Use shortcut key(default ctrl+v) to play video from clipboard, supports file, webdav and jellyfin.
Author: ahaoboy
Latest version: 0.1.15-alpha.20

Use shortcut key(default ctrl+v) to play video from clipboard, supports file, webdav and jellyfin.


## install
You need to install [yt-dlp](https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#installation) and add yt-dlp to ```PATH``` or put yt-dlp in the same directory as mpv.exe

- Download the latest version of [clipboard-play.js](https://github.com/mpv-easy/mpv-easy/releases) and copy it to the mpv script directory
- Add configuration to input.conf [shortkey](https://github.com/mpv-easy/mpv-easy/tree/main/mpv-clipboard-play#shortkey)

## Supported link formats
Folders do not support recursive scanning

- local file: c:/a/b/c.mp4, c:/a/b/c.mp3, c:/a/b/c.srt
- local folder: c:/a/b
- webdav file http://<host>/a.mp4
- webdav folder: http://<host>/a
- jellyfin file http://<host>/web/index.html#!/details?id=<id>&serverId=<sid>
- jellyfin folder: http://<host>/web/index.html#!/movies.html?topParentId=<id>
- youtube: https://www.youtube.com/watch?v=<id>


## shortkey
Add configuration to `input.conf`

```
CTRL+v     script-message clipboard-play
```

## todo
- [ ] open video from clipboard
npm package: @mpv-easy/copy-screen
Description: Use the shortcut (ctrl+c) to copy the current video content to the clipboard
Author: ahaoboy
Latest version: 0.1.15-alpha.20


Use the shortcut (ctrl+c) to copy the current video content to the clipboard

## install
- Download the latest version of [copy-screen.js](https://github.com/mpv-easy/mpv-easy/releases) and copy it to the mpv script directory
- Add configuration to input.conf [shortkey](https://github.com/mpv-easy/mpv-easy/tree/main/mpv-copy-screen#shortkey)

## shortkey
Add configuration to `input.conf`

```
CTRL+c     script-message copy-screen
```


## todo
- [ ] custom image format
npm package: @mpv-easy/copy-time
Description: Use the shortcut (ctrl+C) to copy the current video time to the clipboard
Author: ahaoboy
Latest version: 0.1.15-alpha.20


Use the shortcut (ctrl+C) to copy the current video time to the clipboard

## install
- Download the latest version of [copy-time.js](https://github.com/mpv-easy/mpv-easy/releases) and copy it to the mpv script directory
- Add configuration to input.conf [shortkey](https://github.com/mpv-easy/mpv-easy/tree/main/mpv-copy-time#shortkey)
-

## shortkey
Add configuration to `input.conf`

```
CTRL+C     script-message copy-time
```


## todo
- [ ] custom time format
npm package: @mpv-easy/crop
Description: crop script for mpv
Author: ahaoboy
Latest version: 0.1.15-alpha.20

crop script for mpv

In order to preserve the filters added by the user, first use the mpv command `screenshot-to-file` to capture the video screen, and then use ffmpeg to crop it

## install

You need to install [ffmpeg](https://www.ffmpeg.org/download.html) and add ffmpeg to ```PATH```

- Download the latest version of [crop.js](https://github.com/mpv-easy/mpv-easy/releases) and copy it to the mpv script directory, or use [mpsm](../mpv-mpsm/readme.md) `mpsm install mpv-crop`

- Add configuration to input.conf [shortkey](https://github.com/mpv-easy/mpv-easy/tree/main/mpv-crop#shortkey)



## usage

By default, the shortcut key `C` adds the current time point to the segment, `esc` cancels the selection, and `o` exports the video.

If the video file is `/a/b/c.mp4`, the output image file is `/a/b/c.time.x.y.w.h.webp`. If no output directory is configured, it will be saved to the user's desktop

### crop

<video src="https://github.com/user-attachments/assets/ffbbd61b-c01a-4b1f-b326-a07b61a460fc" controls></video>

### mpv-easy

Use cut to select the video segment, and then use crop to crop it.


## shortkey

Add configuration to input.conf

```
C         script-message crop
o         script-message output
ESC       script-message cancel
```

## config

config file: `crop.conf`


```conf
crop-event-name="crop"
output-event-name="output"
cancel-event-name="cancel"
line-color="FFFFFF"
mask-color="00000040"
line-color-hover="00FFFF"
line-width=4
label-font-size=24
output-directory=""
crop-image-format="webp"
```
npm package: @mpv-easy/cut
Description: cut videos script for mpv
Author: ahaoboy
Latest version: 0.1.15-alpha.20

cut videos script for mpv

## install

You need to install [ffmpeg](https://www.ffmpeg.org/download.html) and add ffmpeg to ```PATH```

- Download the latest version of [cut.js](https://github.com/mpv-easy/mpv-easy/releases) and copy it to the mpv script directory

- Add configuration to input.conf [shortkey](https://github.com/mpv-easy/mpv-easy/tree/main/mpv-cut#shortkey)


## usage

By default, the shortcut key `c` adds the current time point to the segment, `esc` cancels the selection, and `o` exports the video.

If the video file is `/a/b/c.mp4`, the output video file is `/a/b/c.start.end.x.y.w.h.mp4`

### cut

cut will display the currently selected video segment in the video

<div style="display: flex;">
  <img src="../assets/img/mpv-cut-text.webp" alt="cut"/>
</div>

### mpv-easy

When the mouse is in the progress bar area, add the current mouse position to the segment, otherwise add the current time to the segmen, progress bar uses green to display the selected area by default

<div style="display: flex;">
  <img src="../assets/img/mpv-easy-cut-area.webp" alt="mpv-easy-cut"/>
</div>


## shortkey


Add configuration to input.conf

```
c         script-message cut
o         script-message output
g         script-message output-gif
ESC       script-message cancel
```

## config

config file: `cut.conf`
```conf
cut-event-name="cut"
output-event-name="output"
output-gif-event-name="output-gif"
cancel-event-name="cancel"
output-directory=""
max-width=600
fps=24
flags="spline"
```

## todo

- support remote video

## Inspired
- https://github.com/familyfriendlymikey/mpv-cut
npm package: @mpv-easy/easy-react
Description: @mpv-easy/easy-react
Author: ahaoboy
Latest version: 0.1.15-alpha.20

This project is still in its early stages, and API changes occur frequently. It is not recommended to use it in production projects. The goal of this project is to provide out-of-the-box utility functions and UI components for mpv JS scripts. Based on this foundation, UI interfaces for osc, uosc, and potplayer are implemented.

## dev

bash

```bash
export MPV_CONFIG_DIR=/your_mpv_dir/portable_config && pnpm run dev-copy
```

fish

```fish
set -x MPV_CONFIG_DIR /your_mpv_dir/portable_config ; pnpm run dev-copy
```

powershell

```pwsh
$env:MPV_CONFIG_DIR = "/your_mpv_dir/portable_config"; pnpm run dev-copy
```

## todo

- [ ] @reduxjs/toolkit
- [ ] router
- [ ] setting page
- [ ] dynamic enabling and disabling plugins
- [ ] vertical mode
npm package: @mpv-easy/easy-react-tpl
Description: mpv-easy-tpl
Author: ahaoboy
Latest version: 0.1.15-alpha.20

## dev
bash
```bash
export MPV_CONFIG_DIR=/your_mpv_dir/portable_config/scripts && pnpm run dev
```

fish
```fish
set -x MPV_CONFIG_DIR /your_mpv_dir/portable_config/scripts ; pnpm run dev
```
npm package: @mpv-easy/frame-seeker
Description: A mpv script for frame-by-frame video navigation using mouse control.
Author: ahaoboy
Latest version: 0.1.15-alpha.20

# mpv-easy-frame-seeker

A mpv script for frame-by-frame video navigation using mouse control.

## install

[mpv-build](https://mpv-easy.github.io/mpv-build/#mpv-build=%22%7B%5C%22state%5C%22%3A%7B%5C%22selectedRowKeys%5C%22%3A%5B%5C%22mpv-easy-frame-seeker%5C%22%5D%2C%5C%22externalList%5C%22%3A%5B%5D%2C%5C%22ui%5C%22%3A%5C%22osc%5C%22%2C%5C%22platform%5C%22%3A%5C%22mpv-v3%5C%22%2C%5C%22repos%5C%22%3A%5B%5D%7D%7D%22)



https://github.com/user-attachments/assets/fe5bb251-7179-4cc2-a761-89392f39eeef



## Usage

Activate with `Ctrl+F`:

```
CTRL+f     script-message frame-seeker
```

Once activated, other UI elements are hidden and a dial control appears. Click anywhere on the video to engage (dial turns green), then move the mouse left/right to seek backward/forward by frames.

The number below the dial shows `frame+offset`: the frame number when activated and the current offset from that frame.

## Mouse Position Behavior

The click position affects seek sensitivity:

- Click at center: moving to left edge = -60 frames, to right edge = +60 frames
- Click at 1/4 position: moving to left edge = -60 frames, to right edge = +60 frames

This allows finer control when clicking closer to screen edges.

## Configuration

`frame-seeker.conf`:

```conf
# ARGB
color="#FFFFFFFF"
activeColor="#FF00FF00"
borderSize=2
frames=120
bottom=100
radius=200
ui=yes
text=yes
font-size=24
frameSeekerEventName="frame-seeker"
```
npm package: @mpv-easy/mpsm
Description: @mpv-easy/mpsm
Author: ahaoboy
Latest version: 0.1.15-alpha.20

## mpsm(mpv script manager)

### MPV Script RFC

https://github.com/mpv-easy/mpv-easy/blob/main/blog/Revolutionizing-mpv-Scripting-A-New-Package-Format-Proposal.md


### Usage

```bash
npm i @mpv-easy/mpsm -g

# set mpv config dir first!
mpsm set-config-dir '<your-mpv-dir>/portable_config'

# print mpv config dir
mpsm get-config-dir


# install script from https://github.com/mpv-easy/mpsm-scripts
mpsm install mpv-easy-crop
mpsm uninstall mpv-easy-crop

# install script with custom config dir
mpsm install -c '<your-mpv-dir>/portable_config' mpv-easy-youtube
# or
mpsm install --config-dir '<your-mpv-dir>/portable_config' "https://github.com/mpv-easy/mpv-easy/releases/latest/download/mpv-easy-translate.zip"

# install script from url
mpsm install "<your-script-url>"

# list installed scripts
mpsm list

# update a installed script
mpsm update speed

# update all installed scripts
mpsm update --all

# backup all installed scripts to json file
mpsm backup ./backup.json

# restore all scripts from json file
mpsm restore ./backup.json
```
npm package: @mpv-easy/react
Description: @mpv-easy/react
Author: ahaoboy
Latest version: 0.1.15-alpha.20

## todo
- [ ] Badge
- [ ] input
- [ ] border
- [ ] margin
- [ ] css calc
- [ ] autocomplete
- [ ] radio
- [ ] rate
- [ ] select
- [ ] checkbox
- [ ] menu
- [ ] pagination
- [ ] dropdown
- [ ] switch
- [ ] image
- [ ] tag
- [ ] timeline
- [ ] tooltip
- [ ] progress
- [ ] spin
- [ ] TabIndex
- [ ] mouse hover pointer
- [ ] text-overflow ellipsis
- [ ] overflow hidden
- [ ] renderToString
npm package: @mpv-easy/sponsorblock
Description: Automates skipping of various segments (sponsors, intros, outros, self-promotion, etc.) in YouTube videos using [SponsorBlock](https://sponsor.ajay.app/).
Author: ahaoboy
Latest version: 0.1.15-alpha.20

# @mpv-easy/sponsorblock

Automates skipping of various segments (sponsors, intros, outros, self-promotion, etc.) in YouTube videos using [SponsorBlock](https://sponsor.ajay.app/).

## Features
- **Auto-Skip**: Automatically skip marked segments during YouTube video playback.
- **Customizable Categories**: Choose which categories to skip (e.g., sponsor, outro, self-promotion).
- **Multi-Server Support**: Configure multiple API servers for better reliability.
- **Data Caching**: Cache segment data locally to reduce repetitive requests.

## Installation
1. Visit the [mpv-easy online build tool](https://mpv-easy.github.io/mpv-build/#mpv-build=%22%7B%5C%22state%5C%22%3A%7B%5C%22selectedRowKeys%5C%22%3A%5B%5C%22mpv-easy-sponsorblock%5C%22%5D%2C%5C%22externalList%5C%22%3A%5B%5D%2C%5C%22ui%5C%22%3A%5C%22osc%5C%22%2C%5C%22platform%5C%22%3A%5C%22mpv-v3%5C%22%2C%5C%22repos%5C%22%3A%5B%5D%7D%7D%22).
2. Click **Download portable_config.zip**.
3. Extract the downloaded ZIP file and move its contents to your mpv configuration directory (usually `portable_config` or `~/.config/mpv/`).

## Configuration
You can customize the plugin's behavior by editing `sponsorblock.conf`:

```ini
# API server URLs, separated by commas
# Default: https://sponsor.ajay.app/api/skipSegments,https://api.sponsor.ajay.app/api/skipSegments
servers=https://sponsor.ajay.app/api/skipSegments,https://api.sponsor.ajay.app/api/skipSegments

# whether to enable the plugin at startup
active=yes

# Categories to skip, separated by commas
# Options: sponsor, intro, outro, selfpromo, interaction, music_offtopic, preview, filler
# Default: sponsor,outro,selfpromo
categories=sponsor,outro,selfpromo

# Script message event name, used for keybinding to toggle the plugin status
# Default: sponsorblock
sponsorblock-event-name=sponsorblock

# Cache expiration time (in seconds), default is 86400 (1 day), 0 means no limit
cache-ttl=86400
```

## Keybindings
By default, the plugin can be toggled using the following key (configurable in `input.conf`):

```
b     script-message sponsorblock
```
npm package: @mpv-easy/thumbfast
Description: thumbfast script for mpv
Author: ahaoboy
Latest version: 0.1.15-alpha.20

thumbfast script for mpv

## support ui

- [uosc](https://github.com/tomasklaen/uosc)

## install

- Download the latest version of [thumbfast.js](https://github.com/mpv-easy/mpv-easy/releases) and copy it to the mpv script directory

- ## todo
- [ ] support youtube
- [ ] support osc
npm package: @mpv-easy/tool
Description: @mpv-easy/tool
Author: ahaoboy
Latest version: 0.1.15-alpha.20

## todo
- [ ] rust ext for cross-platform, like [ziggy](https://github.com/tomasklaen/uosc/blob/dc73278d657eec1b7236a4e7ad8466b6fd41f887/src/ziggy/ziggy.go#L6) in uosc
npm package: @mpvite/maps
Description: A Mapbox GL react native module for creating custom maps
Author: React Native Mapbox Team
Latest version: 8.1.6

# Mapbox Maps SDK for React Native

_An unofficial React Native library for building maps with the [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/) and [Mapbox Maps SDK for Android](https://www.mapbox.com/android-sdk/)_

[![npm version](https://badge.fury.io/js/%40react-native-mapbox-gl%2Fmaps.svg)](https://badge.fury.io/js/%40react-native-mapbox-gl%2Fmaps)
![build_status](https://travis-ci.org/react-native-mapbox-gl/maps.svg?branch=master)
[![Depfu](https://badges.depfu.com/badges/2eac6b62372619718b7f55ebbf8e9d8f/overview.svg)](https://depfu.com/github/react-native-mapbox-gl/maps?project_id=8248)

## Installation

**Dependencies**

- [node](https://nodejs.org)
- [npm](https://www.npmjs.com/)
- [React Native](https://facebook.github.io/react-native/) (0.60+)

**Git**

```
git clone git@github.com:react-native-mapbox-gl/maps.git
cd maps
```

**Yarn**

```
yarn add @react-native-mapbox-gl/maps
```

**Npm**

```
npm install @react-native-mapbox-gl/maps --save
```

## Installation Guides

- [Android](/android/install.md)
- [iOS](/ios/install.md)
- [Example](/example)

## [Getting Started](/docs/GettingStarted.md)

## Documentation

### Components

- [MapView](/docs/MapView.md)
- [Light](/docs/Light.md)
- [StyleSheet](/docs/StyleSheet.md)
- [PointAnnotation](/docs/PointAnnotation.md)
- [MarkerView](/docs/MarkerView.md)
- [Callout](/docs/Callout.md)
- [Camera](docs/Camera.md)
- [UserLocation](docs/UserLocation.md)
- [Images](docs/Images.md)

### Sources

- [VectorSource](/docs/VectorSource.md)
- [ShapeSource](/docs/ShapeSource.md)
- [RasterSource](/docs/RasterSource.md)

### Layers

- [BackgroundLayer](/docs/BackgroundLayer.md)
- [CircleLayer](/docs/CircleLayer.md)
- [FillExtrusionLayer](/docs/FillExtrusionLayer.md)
- [FillLayer](/docs/FillLayer.md)
- [LineLayer](/docs/LineLayer.md)
- [RasterLayer](/docs/RasterLayer.md)
- [SymbolLayer](/docs/SymbolLayer.md)
- [HeatmapLayer](/docs/HeatmapLayer.md)

### Offline

- [OfflineManager](/docs/OfflineManager.md)
- [SnapshotManager](/docs/snapshotManager.md)

### Misc

- [CustomHttpHeaders](/docs/CustomHttpHeaders.md)

## Expo Support

We have a feature request open with Expo if you want to see it get in show your support https://expo.canny.io/feature-requests/p/add-mapbox-gl-support

## Testing with Jest

This library provides some mocks which are necessary for running tests.

Example:

```json
"jest": {
  "preset": "react-native",
  "setupFilesAfterEnv": ["@react-native-mapbox-gl/maps/setup-jest"]
}
```

## Developer Group

Have a question or need some help? Join our [Gitter developer group](https://gitter.im/react-native-mapbox-gl/Lobby)!
npm package: @mpwassler/terrafirma
Description: A package for genrating 3D maps from GeoJSON shapes
Author: Mitchel Wassler
Latest version: 1.0.3

# TerraFirma.js

This is a library for rendering 3D maps from geoJSON pbjects. It is not a slippy map renderer and only generates a specific area. It supports drawing lines and markers on the map, as well as some basic animations.

Its great for visualizing hiking trails and could be a cool way to display them in a blog.

Currently it only supports mapbox tiles but I would like to possibly add more. DISCLAIMER: it can be fairly heavy on tile requests if you try to generate to large of an area.

Built with THREE.js and turf.js

Note: still trying to figure out how NPM works once I figure that out it will be available there.

## Basic usage

```js
import TerraFirma from 'terra-firma'

// Define a geoJSON Feature. Can be anything but keep in
// mind the result will always be reqtangular. This is just
// telling it what area you want it to generate for.
let polygon = {
    "type": "Feature",
    "properties": {},
    "geometry": {
        "type": "Polygon",
        "coordinates": [
            [
                [-107.810905, 38.014829],
                [-107.810905, 37.975056],
                [-107.758338, 37.975056],
                [-107.758338, 38.014829],
                [-107.810905, 38.014829]
            ]
        ]
    }
}


window.addEventListener('DOMContentLoaded', (event) => {

  let mapElemenat = document.getElementById('map')

  let map3d = new TerraFirma({
    element: mapElemenat,
    feature: polygon,
    buffer: 10, // extra tile area outside main feature to render.
    bufferUnit: 'meters', // unit of measure for buffer. Ex. meters miles feet
    resolutionMultiple: 1, // Allows you to render higher res satallite tiles. Will slow things down a lot.
    apiToken: "Your Mapbox Key here"
  })

})


```

This will output a rendering like.

<img alt="Sample Render" src="sample/sample_render.png" width="1000" />

To point the camera to a new center
```
map3d.focusOn(geojsonPoint)
```

To add a marker
```
map3d.drawMarker(geojsonPoint)
```

And to draw a linestring
```
map3d.drawLine(linstring)
```

Inputs are all geojson types.