Added [admin/youtube_import.php (line
1)](/Users/tyemeclifford/Documents/GH/mediaplayer/admin/youtube_import.php:1),
which:
Accepts a channel URL, @handle, or UC... channel ID.
Scrapes the channel /videos page.
Extracts videos from ytInitialData.
Shows a preview with checkboxes.
Imports selected videos into videos and video_sources.
Stores each video as a canonical YouTube watch URL with mime_type =
text/html, so the existing YouTube embed playback path handles it
correctly.
Downloads scraped thumbnails into media/thumbs/ when possible.
Skips duplicates by matching existing remote YouTube URLs.
Also wired it into the admin navigation in [admin/index.php (line
172)](/Users/tyemeclifford/Documents/GH/mediaplayer/admin/index.php:172),
[admin/add.php (line
199)](/Users/tyemeclifford/Documents/GH/mediaplayer/admin/add.php:199),
[admin/edit.php (line
267)](/Users/tyemeclifford/Documents/GH/mediaplayer/admin/edit.php:267),
and [admin/settings.php (line
109)](/Users/tyemeclifford/Documents/GH/mediaplayer/admin/settings.php:109).
Updated [README.md (line
81)](/Users/tyemeclifford/Documents/GH/mediaplayer/README.md:81) with
usage notes.
Changed:
[includes/db.php (line
43)](/Users/tyemeclifford/Documents/GH/mediaplayer/includes/db.php:43)
adds source_type and source_url, with an automatic migration for
existing SQLite databases.
[admin/add.php (line
260)](/Users/tyemeclifford/Documents/GH/mediaplayer/admin/add.php:260)
and [admin/edit.php (line
383)](/Users/tyemeclifford/Documents/GH/mediaplayer/admin/edit.php:383)
now let each source be an upload or an external URL.
[index.php (line
226)](/Users/tyemeclifford/Documents/GH/mediaplayer/index.php:226) and
[embed.php (line
193)](/Users/tyemeclifford/Documents/GH/mediaplayer/embed.php:193)
resolve playback URLs based on where the source lives.
[catalogue.php (line
79)](/Users/tyemeclifford/Documents/GH/mediaplayer/catalogue.php:79) now
has public search for published videos only.
[README.md (line
63)](/Users/tyemeclifford/Documents/GH/mediaplayer/README.md:63)
documents local vs remote sources and public search.