=== BarkingLlama Roulette ===
Contributors: grandllama
Tags: youtube, video, playlist, random, shortcode
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Spin the wheel to embed a random YouTube playlist video via shortcode or REST API.

== Description ==

BarkingLlama Roulette adds a simple shortcode and REST endpoint that selects a random YouTube video from a configured playlist and embeds it on your site.

Perfect for motivational cards as Shorts, “daily randomness” pages, or any curated playlist you want to keep fresh.

Features:
* Shortcode: [llama_roulette]
* REST endpoint: /wp-json/llama-roulette/v1/random
* Playlist caching via transients to reduce YouTube API calls
* Optional Privacy Enhanced Mode (youtube-nocookie embeds)
* "Start Muted" setting for reliable autoplay

== Installation ==

1. Upload the plugin folder to /wp-content/plugins/ or install via the Plugins screen.
2. Activate the plugin.
3. Go to Settings → BarkingLlama Roulette.
4. Enter:
   - Playlist URL or ID
   - YouTube API Key
5. Add the shortcode [llama_roulette] to any post or page.

== Frequently Asked Questions ==

= Do I need a YouTube API key? =
Yes for v1. BarkingLlama Roulette uses the YouTube Data API to fetch playlist items. The plugin caches results to reduce quota usage.

= How do I find my Playlist ID? =
If your playlist URL looks like:
https://www.youtube.com/playlist?list=PLabc123...
…the playlist ID is the value after "list=".

= Does it work on mobile? =
Yes. It uses a standard YouTube embed iframe.

= How do I use Privacy Enhanced Mode? =
Enable “Privacy Enhanced Mode” in Settings → BarkingLlama Roulette to embed using youtube-nocookie.com.

= Why does autoplay not work with sound? =
Modern browsers block videos from autoplaying with sound on initial load unless a user has interacted with the page first. For reliable autoplay, enable the "Default Muted" setting.

= How do I get a YouTube Data API key? =

BarkingLlama Roulette uses the YouTube Data API to retrieve videos from your playlist. Google requires an API key for this.

Follow these steps:

1. Go to the Google Cloud Console:
   https://console.cloud.google.com/

2. Sign in with the Google account that owns (or can access) the YouTube playlist.

3. Create a new project:
   - Click the project dropdown at the top
   - Click “New Project”
   - Give it any name (for example: “BarkingLlama Roulette”)
   - Click Create

4. Enable the YouTube Data API:
   - With your project selected, go to:
     APIs & Services → Library
   - Search for “YouTube Data API v3”
   - Click it, then click “Enable”

5. Create an API key:
   - Go to:
     APIs & Services → Credentials
   - Click “Create Credentials”
   - Choose “API key”
   - Copy the generated key

6. (Optional but recommended) Restrict the API key:
   - In the Credentials screen, click your new API key
   - Under “API restrictions”, select “Restrict key”
   - Choose “YouTube Data API v3”
   - Save changes

7. Paste the API key into WordPress:
   - Go to Settings → BarkingLlama Roulette
   - Paste the key into the “YouTube API Key” field
   - Save changes

That’s it. BarkingLlama Roulette will automatically cache playlist data to minimize API usage.

== External services ==

This plugin uses the YouTube Data API v3 (Google) to retrieve videos from the configured YouTube playlist so it can select and display a random video.

What data is sent and when:
* The configured playlist ID (or playlist ID parsed from a provided playlist URL) is sent when the plugin requests playlist items.
* The configured YouTube API key is sent with those API requests for authentication.
* These requests occur when cached playlist data is missing or expired, or when playlist data must be refreshed.

Service provider:
* Google / YouTube Data API v3

Terms of Service and Privacy Policy:
* Google API Services Terms of Service: https://developers.google.com/terms/
* YouTube API Services Terms of Service: https://developers.google.com/youtube/terms/api-services-terms-of-service
* Google Privacy Policy: https://policies.google.com/privacy

== Shortcode ==

Basic:
`[llama_roulette]`

Available attributes:
* `button_label` - Custom label for the trigger button (e.g., `button_label="Try Luck"`).
* `playlist` - Optional YouTube Playlist ID or URL to override the global setting.
* `autoplay` - Set to `1` to auto-load/play, `0` to wait for click.
* `muted` - Set to `1` to start muted, `0` for sound (Note: browsers block unmuted autoplay).
* `show_title` - Set to `1` to show the video title below the player, `0` to hide.
* `align` - `left`, `center`, or `right`.
* `max_width` - Any CSS width value (e.g., `max_width="800px"`).
* `aspect_ratio` - CSS aspect-ratio (e.g., `16/9`, `4/3`).
* `class` - Append custom CSS classes.

Example:
`[llama_roulette playlist="PLxxxx" button_label="Spin!" autoplay="1" muted="1" show_title="1"]`

== REST API ==

GET /wp-json/llama-roulette/v1/random

Optional query param:
* playlist (Playlist ID or URL) to override the configured playlist for that request

Example:
GET /wp-json/llama-roulette/v1/random?playlist=PLabc123

== Screenshots ==

1. Settings page (playlist, API key, cache, privacy, display settings)
2. Front-end embed with “Spin again” button and video title

== Changelog ==

= 1.0.4 =
* FIX: Generic bugs
* TESTED: Up to 7.0

= 1.0.2 =
* FEATURE: Added "Show Video Title" option in admin settings and shortcode.
* FEATURE: Added `playlist` attribute to shortcode for per-instance overrides.
* FIX: Improved shortcode initialization and reliability for multiple instances.
* FIX: Added automatic cache refresh when switching to title-inclusive data format.

= 1.0.1 =
* SECURITY: Added output escaping for all template variables.
* SECURITY: Improved redirect logic with `wp_safe_redirect`.
* FIX: Endpoint button label now respects default settings.
* FEATURE: Added "Start Muted" setting for reliable autoplay.
* FEATURE: Added `muted` attribute to shortcode.
* FIX: Improved shortcode attribute reliability via data attributes.

= 1.0.0 =
* Initial release: shortcode + REST endpoint + playlist caching + privacy mode

== Upgrade Notice ==

= 1.0.4 =
Generic bug fixes and testing up to Wordpress 7.0

= 1.0.1 =
Security fixes and new autoplay settings.

= 1.0.0 =
Initial release.

== License ==

This plugin is licensed under the GPLv2 or later.
