Status: π‘ ~70% Complete | Type: TypeScript | Size: ~26 KB
A GrayJay plugin for Joyn - German streaming platform for TV shows, series, movies, and live TV.
- π Home Feed - Browse featured content from landing page
- π Search - Powered by Algolia with pagination
- πΊ Live TV Channels - ProSieben, Sat.1, Kabel Eins, etc.
- π Series as Playlists - Browse all seasons and episodes
- π¬ Episode Metadata - Titles, descriptions, thumbnails
- π Anonymous Authentication - Auto-managed tokens
- πΎ State Persistence - Saves auth across sessions
- β Video Playback - Stream URL extraction (needs DRM handling)
- β Movie Details - Full metadata parsing
- β Brand Channels - Mediathek content browsing
https://raw.githubusercontent.com/grayjay-sources/grayjay-source-joyn/main/build/JoynConfig.json
- Visit https://grayjay-sources.github.io
- Search for "Joyn"
- Click "Install"
(Scan with GrayJay mobile app)
Content Hierarchy:
βββ Channels
β βββ Live TV (ProSieben, Sat.1, etc.) β
β βββ Brands/Mediatheken β³
βββ Playlists
β βββ Series (all seasons/episodes) β
βββ Content
βββ Episodes (metadata) β
βββ Movies β³
APIs Used:
- GraphQL API (
api.joyn.de/graphql) - 17 persisted queries - Algolia Search (
ffqrv35svv-dsn.algolia.net) - Anonymous Auth (
auth.joyn.de) - Image CDN (
img.joyn.de)
git clone https://github.com/grayjay-sources/grayjay-source-joyn
cd grayjay-source-joyn
npm install
npm run build- TypeScript source in
src/ - Rollup bundler
- Build output in
build/ - Type-safe with plugin.d.ts
npm run build # Build production version
npm run dev # Watch mode for development
npm run generate-icon # Regenerate icon from SVG
npm run prettier # Format code| Feature | Status | Notes |
|---|---|---|
| Home Feed | β 100% | Landing page with videos |
| Search | β 100% | Algolia integration |
| Live TV Channels | β 90% | Metadata complete, streams pending |
| Series Playlists | β 100% | Full playlist support |
| Episode Details | β 70% | Metadata only, no playback |
| Movie Details | β³ 20% | Stub only |
| Brand Channels | β³ 20% | Stub only |
| Overall | ~70% | Core features work |
See IMPLEMENTATION_STATUS.md for detailed status.
- No Video Playback - Stream URLs not yet extracted (DRM handling needed)
- No Live Streaming - Live channel metadata works, playback URLs pending
- Limited Content Types - Movies and brands are stubs
- No Subtitles - Not yet implemented
- No Quality Selection - Pending video source extraction
- TypeScript infrastructure
- GraphQL integration
- Search (Algolia)
- Channel listings
- Episode metadata
- Series playlists
- Video source extraction
- DRM/entitlement handling
- Live stream URLs
- Quality levels
- Subtitles
- Movie full implementation
- Brand channel content
- Episode listing in playlists
- Recommendations
- User authentication (optional)
- Comprehensive testing
- Error handling improvements
- Performance optimization
- Documentation
Contributions are welcome, especially for:
- π₯ Video source extraction (DRM knowledge helpful)
- π¬ Movie implementation
- π’ Brand channel support
- π§ͺ Testing and bug reports
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
IMPLEMENTATION_STATUS.md- Detailed implementation statusTODO.md- Task listDEPLOYMENT_GUIDE.md- Deployment instructionstypes/plugin.d.ts- GrayJay plugin API reference
- GitHub: https://github.com/grayjay-sources/grayjay-source-joyn
- Issues: https://github.com/grayjay-sources/grayjay-source-joyn/issues
- Joyn Platform: https://www.joyn.de
- GrayJay App: https://grayjay.app
MIT License - See LICENSE file
Maintained by: Bluscream, Cursor.AI
Last Updated: 2025-11-05