Files
Michael Simard 872354b834 Initial commit: SimVision tvOS streaming app
Features:
- VOD library with movie grouping and version detection
- TV show library with season/episode organization
- TMDB integration for trending shows and recently aired episodes
- Recent releases section with TMDB release date sorting
- Watch history tracking with continue watching
- Playlist caching (12-hour TTL) for offline support
- M3U playlist parsing with XStream API support
- Authentication with credential storage

Technical:
- SwiftUI for tvOS
- Actor-based services for thread safety
- Persistent caching for playlists, TMDB data, and watch history
- KSPlayer integration for video playback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 22:12:08 -06:00

38 lines
2.7 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="22222" systemVersion="23A344" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
<entity name="M3UModel" representedClassName="M3UModel" syncable="YES" codeGenerationType="class">
<attribute name="count" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="m3uURL" optional="YES" attributeType="URI"/>
<attribute name="name" attributeType="String" defaultValueString=""/>
</entity>
<entity name="MovieModel" representedClassName="MovieModel" syncable="YES" codeGenerationType="category">
<attribute name="country" optional="YES" attributeType="String"/>
<attribute name="group" optional="YES" attributeType="String"/>
<attribute name="httpReferer" optional="YES" attributeType="String"/>
<attribute name="httpUserAgent" optional="YES" attributeType="String"/>
<attribute name="language" optional="YES" attributeType="String"/>
<attribute name="logo" optional="YES" attributeType="URI"/>
<attribute name="m3uURL" optional="YES" attributeType="URI"/>
<attribute name="name" attributeType="String" defaultValueString=""/>
<attribute name="tvgID" optional="YES" attributeType="String"/>
<attribute name="url" optional="YES" attributeType="URI"/>
<relationship name="playmodel" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="PlayModel" inverseName="url" inverseEntity="PlayModel"/>
</entity>
<entity name="PlayModel" representedClassName="PlayModel" syncable="YES" codeGenerationType="class">
<attribute name="current" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="duration" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="isFavorite" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="playTime" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<relationship name="url" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="MovieModel" inverseName="playmodel" inverseEntity="MovieModel"/>
</entity>
<configuration name="local">
<memberEntity name="MovieModel"/>
</configuration>
<configuration name="private" usedWithCloudKit="YES">
<memberEntity name="MovieModel"/>
<memberEntity name="PlayModel"/>
</configuration>
<configuration name="public" usedWithCloudKit="YES">
<memberEntity name="M3UModel"/>
</configuration>
</model>