=== Dropndot Video Library ===
Contributors: dropndot
Donate link: https://dropndot.com
Tags: video, youtube, embed, rest-api, graphql
Requires at least: 5.0
Tested up to: 7.0
Stable tag: 1.0.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Multi-platform video embeds as a custom post type with REST API and WPGraphQL support for WordPress.

== Description ==

Dropndot Video Library is a powerful WordPress plugin that transforms your website into a comprehensive video management platform. Create, organize, and display videos from popular platforms like YouTube, Vimeo, Dailymotion, Facebook, TikTok, and more through an intuitive custom post type interface.

### Key Features

* **Multi-Platform Support**: Embed videos from YouTube, Vimeo, Dailymotion, Facebook, TikTok, and other video platforms
* **Custom Post Type**: Dedicated "Videos" post type with full WordPress integration
* **Taxonomies**: Organize videos with categories and tags
* **REST API Support**: Full REST API integration for headless implementations
* **WPGraphQL Support**: GraphQL API support for modern applications
* **Custom Templates**: Includes archive, single, and taxonomy templates
* **Admin Interface**: User-friendly video management interface
* **Settings Page**: Customize URL slugs for videos and archives
* **Thumbnail Support**: Featured image support for video thumbnails
* **SEO Friendly**: Proper meta descriptions and structured data support

### Supported Video Platforms

* YouTube
* Vimeo
* Dailymotion
* Facebook
* TikTok
* And many more through embed URLs

== External services ==

This plugin connects to third-party video platform APIs to retrieve oEmbed/metadata so it can normalize URLs, generate embed links, and build thumbnails for videos saved in the Video post type.

= Vimeo API =
Used to fetch metadata and thumbnails for Vimeo URLs.
Data sent: the video ID parsed from the URL.
When sent: when a Vimeo URL is saved or processed.
Terms: https://vimeo.com/terms
Privacy policy: https://vimeo.com/privacy

= Facebook Graph oEmbed API =
Used to fetch oEmbed information for Facebook video URLs.
Data sent: the original Facebook video URL and a site-configured access token (if provided via filter).
When sent: when a Facebook video URL is saved or processed.
If the oEmbed response does not provide a thumbnail URL, the plugin also fetches the original Facebook video page HTML and extracts the `og:image` meta tag to determine a thumbnail.
Terms: https://www.facebook.com/legal/terms
Privacy policy: https://www.facebook.com/privacy/policy/

= TikTok oEmbed API =
Used to fetch oEmbed information for TikTok video URLs.
Data sent: the original TikTok video URL (when available/stored in post meta for normalization).
When sent: when a TikTok URL is saved or processed.
Fallbacks: if needed, the plugin fetches HTML from `https://www.tiktok.com/embed/{video_id}` and also tries `https://www.tiktok.com/v/{video_id}` to parse `og:image` and JSON-LD for a thumbnail.
Terms: https://www.tiktok.com/legal/terms-of-service
Privacy policy: https://www.tiktok.com/legal/privacy-policy

= Wistia API =
Used to fetch metadata for Wistia media URLs.
Data sent: the Wistia media ID parsed from the URL.
When sent: when a Wistia URL is saved or processed.
Terms: https://wistia.com/terms
Privacy policy: https://wistia.com/privacy

= Twitch Helix API =
Used to resolve Twitch stream/channel details for embed generation.
Data sent: Twitch channel username (passed as `user_login`) to resolve live-stream thumbnails; the request includes a `Client-ID` header obtained via the filter `DROPNDOT_VIDEO_LIBRARY_twitch_client_id`.
When sent: when a Twitch URL is saved or processed.
Terms: https://www.twitch.tv/p/en/legal/terms-of-service/
Privacy policy: https://www.twitch.tv/p/en/legal/privacy-notice/

= Veed oEmbed API =
Used to fetch oEmbed information for VEED links.
Data sent: the original VEED video URL.
When sent: when a VEED URL is saved or processed.
Terms: https://www.veed.io/terms
Privacy policy: https://www.veed.io/privacy

= Loom oEmbed API =
Used to fetch oEmbed information for Loom links.
Data sent: the original Loom video URL.
When sent: when a Loom URL is saved or processed.
Terms: https://www.loom.com/terms
Privacy policy: https://www.loom.com/privacy-policy

= Rumble Video Page Fetch =
Used to fetch the Rumble video page HTML to extract thumbnail metadata (Open Graph `og:image`).
Data sent: the Rumble video page URL built from the video ID parsed from the embed URL.
When sent: when generating fallback thumbnails for Rumble embed URLs (and when processing URLs where no provider API response is available).
Terms: https://rumble.com/s/terms
Privacy policy: https://rumble.com/s/privacy

= Streamable API =
Used to fetch metadata for Streamable URLs.
Data sent: the Streamable video ID parsed from the URL.
When sent: when a Streamable URL is saved or processed.
Terms: https://streamable.com/terms
Privacy policy: https://streamable.com/privacy

= Instagram oEmbed API =
Used to fetch oEmbed information for Instagram video URLs.
Data sent: the original Instagram video URL.
When sent: when an Instagram URL is saved or processed.
Terms: https://help.instagram.com/581066165581870
Privacy policy: https://privacycenter.instagram.com/policy

= Direct URL fetch for metadata parsing =
In some providers, the plugin requests the original video page URL to extract metadata when no provider API response is available.
Data sent: a standard HTTP request to the video URL provided by the site editor.
When sent: when processing supported non-API/fallback URL patterns.

== Installation ==

1. Upload the `dropndot-video-library` folder to the `/wp-content/plugins/` directory
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Start adding videos through the new "Videos" menu item
4. Customize settings through Settings > Dropndot Video Library
5. Use the provided templates or create your own

== Frequently Asked Questions ==

= How do I add a new video? =

1. Go to Videos > Add New in your WordPress admin
2. Enter a title for your video
3. Paste the video embed URL in the "Video Embed URL" field
4. Add categories and tags as needed
5. Set a featured image (thumbnail)
6. Publish your video

= What video platforms are supported? =

Dropndot Video Library supports embedding videos from:
- YouTube
- Vimeo
- Dailymotion
- Facebook
- TikTok
- And any platform that provides embed URLs

= Can I customize the video URLs? =

Yes! Go to Settings > Dropndot Video Library to customize the single video and archive page slugs.

= Does it support REST API? =

Yes, Dropndot Video Library includes full REST API support. Videos are available at `/wp-json/wp/v2/videos/`

= Is WPGraphQL supported? =

Yes, Dropndot Video Library includes WPGraphQL support for modern headless WordPress implementations.

= Can I use custom templates? =

Yes, the plugin includes custom templates for archive, single video, and taxonomy pages. You can override these in your theme.

== Screenshots ==

1. Video management interface in WordPress admin
2. Adding a new video with embed URL
3. Video categories and tags organization
4. Settings page for URL customization
5. Frontend display of video archive
6. Single video page with embedded content

== Changelog ==

= 1.0.0 =
* Initial release
* Custom post type for videos
* Support for multiple video platforms
* Categories and tags taxonomy
* REST API integration
* WPGraphQL support
* Custom templates included
* Admin settings page
* Thumbnail support

== Upgrade Notice ==

= 1.0.0 =
Initial release of Dropndot Video Library plugin.

== Support ==

For support, bug reports, or feature requests, please visit:
https://dropndot.com/support/

== Contributing ==

We welcome contributions! Please see our GitHub repository for contribution guidelines.

== License ==

Dropndot Video Library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/gpl-2.0.html.
