Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/radiovisual/get-video-id
Get the YouTube, Vimeo, Vine, VideoPress, TikTok, Microsoft Stream, Loom or Dailymotion video id from a url or embed string.
https://github.com/radiovisual/get-video-id
Last synced: 6 days ago
JSON representation
Get the YouTube, Vimeo, Vine, VideoPress, TikTok, Microsoft Stream, Loom or Dailymotion video id from a url or embed string.
- Host: GitHub
- URL: https://github.com/radiovisual/get-video-id
- Owner: radiovisual
- License: mit
- Created: 2016-04-12T13:13:12.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-02-21T22:26:07.000Z (9 months ago)
- Last Synced: 2024-04-23T22:19:30.456Z (7 months ago)
- Language: JavaScript
- Homepage:
- Size: 1020 KB
- Stars: 180
- Watchers: 7
- Forks: 25
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
README
# get-video-id [![codecov](https://codecov.io/gh/radiovisual/get-video-id/branch/master/graph/badge.svg?token=fG7V2VRDYY)](https://codecov.io/gh/radiovisual/get-video-id)
> Get the YouTube, Vimeo, Vine, VideoPress, TikTok, Microsoft Stream, Loom or Dailymotion video id from a url or embed string.
**Pull Requests are welcome** if you would like to see support for other video services or if you find an unsupported video url pattern.
## Install
You can install with npm:
```
$ npm install --save get-video-id
```or with yarn:
```
$ yarn add get-video-id
```## Import
You can use this module in **Node.js** or in the **browser**. See below for the different importing options.
**CommonJS**
```js
const getVideoId = require('get-video-id');
```**ES Module**
```js
import getVideoId from 'get-video-id';
```**Browser**
```html```
###### Download
- [Normal](https://cdn.jsdelivr.net/npm/get-video-id/dist/get-video-id.js)
- [Minified](https://cdn.jsdelivr.net/npm/get-video-id/dist/get-video-id.min.js)###### CDN
- [jsdelivr](https://www.jsdelivr.com/package/npm/get-video-id)
- [unpkg](https://unpkg.com/get-video-id)## Usage
Simply supply the module with a url or embed string matching any of the [patterns known by this module](https://github.com/radiovisual/get-video-id#patterns) and its metadata of `id` and `service` will be returned:
```js
import getVideoId from 'get-video-id';getVideoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
//=> { id: 'dQw4w9WgXcQ', service: 'youtube' }const { id } = getVideoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
//=> 'dQw4w9WgXcQ'
```get-video-id can also find the video buried in a Google redirection URL if it contains a reference to any of the supported URL patterns.
```js
getVideoId('https://www.google.cz/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwj30L2MvpDVAhUFZVAKHb8CBaYQuAIIIjAA&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ');
//=> { id: 'dQw4w9WgXcQ', service: 'youtube' }
```## API
### getVideoId(input)
Returns a metadata `Object` with the video `id` and `service` name:
```
{
id: `String` | `undefined`,
service: `String` | `undefined`
}
```#### input
Type: `String`
The url (or embed code, or google redirect url) from which you want to find the video id. See the
[Patterns section](https://github.com/radiovisual/get-video-id#patterns) to see the formats that can be supplied.## Patterns
This module works on the url / embed patterns below.
(where `*` is the id and `?` or `&` are parameter strings):### YouTube
**YouTube Shortcodes**
```
http://youtu.be/*?
https://youtu.be/*
http://youtu.be/*
http://y2u.be/*
youtube://
```**YouTube Shorts**
```
https://youtube.com/shorts/*
https://www.youtube.com/shorts/*
```**YouTube `/v/` or `/vi/`**
```
http://www.youtube.com/v/*
http://youtube.com/vi/*?
http://youtube.com/v/*?
```**YouTube `v=` or `vi=`**
```
http://www.youtube.com/ytscreeningroom?v=*
http://www.youtube.com/watch?v=*?&
https://www.youtube.com/watch?v=*
http://youtube.com/watch?vi=*&
http://youtube.com/?vi=*&
http://youtube.com/?v=*
```**YouTube `/e/`**
```
https://www.youtube.com/e/*
https://www.youtube.com/e/*?
http://www.youtube.com/e/*
http://www.youtube.com/e/*?
```**YouTube image links `/vi/*/` or `/an_webp/*/`**
```
https://i.ytimg.com/vi/*/hqdefault.jpg
https://i.ytimg.com/an_webp/MYDcdp-VNmQ/mqdefault_6s.webp
```**YouTube embed**
```
http://www.youtube.com/embed/*?
https://www.youtube.com/embed/*
```**YouTube user**
```
http://www.youtube.com/user/username#p/a/u/2/*
http://www.youtube.com/user/username#p/u/1/*?
http://www.youtube.com/user/username#p/u/1/*
```**YouTube iframe**
``````
**YouTube `-nocookie`**
```
www.youtube-nocookie.com/embed/*?
```**YouTube Attribution Link**
```
http://www.youtube.com/attribution_link?u=%2Fwatch%3Fv%3D*%26
http://www.youtube.com/attribution_link?u=%2Fwatch%3Fv%3D
http://www.youtube.com/attribution_link?u=/watch?v=*&
http://www.youtube.com/attribution_link?u=/watch?v=*
http://www.youtube.com/attribution_link?/watch?v=*
```**YouTube live URLs**
```
https://www.youtube.com/live/*
https://youtube.com/live/*
https://youtube.com/live/*?
```**Google Redirection to YouTube**
```
https://google.cz/url?source=web&url=
https://google.com/image?url=
```### Vimeo
**Vimeo urls**
```
https://vimeo.com/*
https://vimeo.com/*?
https://player.vimeo.com/video/*
https://player.vimeo.com/video/*?
https://www.vimeo.com/*
https://www.vimeo.com/*?
```**Vimeo swf embed**
```
http://vimeo.com/foo.swf?clip_id=1234
```**Vimeo events**
```
https://vimeo.com/event/*
```**Vimeo iframe**
``````
### VideoPress
**VideoPress urls**
```
https://videopress.com/v/*
https://videopress.com/embed/*
```**VideoPress iframes**
``````
### Microsoft Stream
**Microsoft Stream urls**
```
https://web.microsoftstream.com/video/*
https://web.microsoftstream.com/embed/video/*
```**Microsoft Stream iframes**
``````
### TikTok
**TikTok urls**
```
https://www.tiktok.com/*/video/*
https://www.tiktok.com/*/video/*?
````
**:warning: Unsupported TikTok urls**
* Shortlink URL (requires a fetch/redirect to find the real id) : `https://vm.tiktok.com/shorLinkId/`### Dailymotion
**Dailymotion urls**
```
http://www.dailymotion.com/video/*_text
http://www.dailymotion.com/video/*
http://www.dailymotion.com/fr/relevance/search/search+query/1#video=*
https://www.dailymotion.com/video/*?playlist=
http://dai.ly/*
```**Dailymotion iframes**
``````
**:warning: Unsupported Dailymotion urls**
* Channel id urls: `http://www.dailymotion.com/hub/*_title`### Loom
**Loom urls**
```
https://www.loom.com/share/*
https://www.loom.com/share/*?
https://www.loom.com/embed/*
```**Loom iframes**
``````
## Contributing
If you discover a url pattern that is not covered by this module, please [open an issue](https://github.com/radiovisual/get-video-id/issues) to report it, or [submit a Pull Request](https://github.com/radiovisual/get-video-id/pull/new/master). For any submitted pull requests, please ensure that you include unit test(s) to fully cover your code contribution(s).
## License
MIT © [Michael Wuergler](https://github.com/radiovisual)