Skip to content
Snippets Groups Projects
README.md 3.31 KiB
Newer Older
Kevin von Spiczak's avatar
Kevin von Spiczak committed
# Ext: sg_vimeo

<img alt="" src="https://www.sgalinski.de/typo3conf/ext/project_theme/Resources/Public/Images/logo.svg" />

Kevin von Spiczak's avatar
Kevin von Spiczak committed
License: [GNU GPL, Version 2](https://www.gnu.org/licenses/gpl-2.0.html)

Repository: https://gitlab.sgalinski.de/typo3/sg_vimeo

Please report bugs here: https://gitlab.sgalinski.de/typo3/sg_vimeo

Kevin von Spiczak's avatar
Kevin von Spiczak committed
## Installation / Integration

First install the extension and activate it in the Extension Manager.

## Vimeo app

* Create a new vimeo app: https://developer.vimeo.com/apps/new
* Answer the question `Will people besides you be able to access your app?` with:
  `No. The only Vimeo accounts that will have access to the app are my own.`
* Go to your vimeo app on https://developer.vimeo.com/apps and copy your client identifier & client secret.

### TypoScript integration

* Include the TypoScript in Configuration/TypoScript/setup.typoscript and constants.typoscript in your theme.
* Add your Vimeo client identifier & client secret (and optionally your personal access token):
Kevin von Spiczak's avatar
Kevin von Spiczak committed

```typoscript
plugin.tx_sgvimeo {
	settings {
		# cat=plugin.tx_sgvimeo/file; type=string; label=Vimeo client identifier
		clientId = <your-client-id>
		# cat=plugin.tx_sgvimeo/file; type=string; label=Vimeo client secret
		clientSecret = <your-client-secret>
		# cat=plugin.tx_sgvimeo/file; type=string; label=Vimeo Personal access token
		personalAccessToken =
### Private videos

If you have a video which is not available to the public, but you want to show it on your website, you need an
authenticated personal access token. You can find a guide, on how to generate such a token here:
https://vimeo.zendesk.com/hc/en-us/articles/360042445032-How-do-I-generate-a-personal-access-token-

The following requirements have to be met, for the private video to show up:
* the video has to be hosted on the same vimeo account, that was used to configure the clientSecret & clientId (vimeo app)
* a personal access token with access scope "private" has to be configured in the typoscript settings (personalAccessToken)
Kevin von Spiczak's avatar
Kevin von Spiczak committed
### Working with Rate Limits

As with almost every API, there is a usage limit, which depends on the vimeo user membership of the user, that makes the
API requests (the owner of the vimeo app).

sg_vimeo uses the following endpoints:

* Video https://api.vimeo.com/videos/{video_id}
* Channel Videos https://api.vimeo.com/channels/{channel_id}/videos

sg_vimeo uses [field filtering](https://developer.vimeo.com/guidelines/rate-limiting#avoid-rate-limiting) to requests
only the fields that are needed.

#### Caching behaviour

Because of the quota costs we implemented a caching for the calls for each day. The response from the APIs will be saved
and used for 24 hours. Normally the site cache would do it, but it could be, that the cache will be cleared multiple
times in a row, or that the plugin is on an uncached page. The TYPO3 registry is used as a cache. The cleanup is handled
on the fly.

If the `?disableVimeoCache=1` parameter is added to the URL, this cache will be ignored as well.

### .htaccess

Requires `img-src https://i.vimeocdn.com;`, `script-src https://player.vimeo.com;` and `connect-src https://cdn.plyr.io;`.

### Known issues
- Additional URL parameters won't get passed to the iframe inside the lightbox, this is seemingly caused by Plyr's integration of the Vimeo API
    - Workaround: disable the lightbox for your Vimeo video