Funtime.net
Completed
Aug 2022 - Nov 2022 (4 months)
Funtime.net is an early-stage cross-platform streaming initiative that combined Kotlin Multiplatform experimentation with an Android TV delivery track.
The project moved from platform bootstrapping and shared networking into playback reliability, scraper-backed metadata enrichment, and offline catalog quality improvements.
Built with: Kotlin Multiplatform Mobile, Kotlin, Android TV, ExoPlayer, Ktor, Kotlinx Serialization, Skrape{it}, Python (Jupyter notebooks), JSON asset pipelines, and Gradle.
Links
Project Activity
Recent updates for Funtime.net. Completed
November 2022
-
Fixed Android TV offline-browser card UX by updating selected-state color treatment and allowing multi-line titles so longer movie/video names remain readable in card presenters.
October 2022
-
Finalized the series dataset by publishing `funtime_new_videos_final.json` with tv_id plus download URL and season/episode keys for stable in-app lookup.
-
Added an intermediate video metadata export (`funtime_new_videos.json`) containing download links and season/episode indexing to validate the scraper output pipeline.
-
Generated and committed an enriched movies dataset (`funtime_new_movies.json`) that includes IMDb identifiers and direct download URLs for offline catalog usage.
-
Implemented the movie-download extraction notebook workflow and refreshed the movies JSON output so scraping logic and complete data stayed versioned together.
September 2022
-
Extended repository scraping logic to extract video download URLs, derive season naming, and expose season-detail API paths used by TV-series navigation flows.
-
Patched player behavior to prevent idle-state transitions during active movie playback, reducing interrupted streaming sessions.
-
Added baseline movie/video JSON files and notebook artifacts in `GetFuntimeDataPython` to establish a reproducible offline metadata generation workflow.
-
Integrated ExoPlayer into the Android TV app, wiring playback activity/layout/resources to enable in-app video streaming.
-
Added repository-level ignore rules to keep generated/build-local files out of version control while the Android TV and data pipelines evolved.
August 2022
-
Integrated the Skrape{it} HTML parsing library and connected it to platform code paths to support structured scraping of source media pages.
-
Initialized the `Funtime.net` repository with core project metadata and licensing to establish the baseline for subsequent KMM and Android TV development.
-
Bootstrapped the Kotlin Multiplatform Mobile hello-world project structure in `Code/`, including Android and iOS app shells plus shared module wiring.
-
Expanded shared-module setup by adding multiplatform dependencies and updating common code to support cross-platform feature growth.
-
Integrated Ktor into the KMM stack for shared networking, with Android app and shared module updates that enabled reusable HTTP client flows.
-
Hardened Ktor networking by configuring platform-specific HTTP clients plus multiplatform logging and JSON serialization in shared code.
Objective Link to heading
- Build and evolve a Kotlin Multiplatform media-streaming foundation that spans Android TV and iOS scaffolding while adding real playback, network scraping, and offline content metadata pipelines.
- Improve browsing/playback usability and progressively enrich movie/series datasets with downloadable links and season-aware metadata.
Delivery focus Link to heading
- Bootstrapped a KMM baseline (
Code/) for shared networking/domain code and platform-specific app shells. - Integrated Ktor and Skrape{it} to support cross-platform HTTP access and HTML parsing for source data extraction.
- Built Android TV playback flows in
FunTimeTVwith ExoPlayer and playback-state fixes. - Added and iterated JSON datasets plus Python notebook pipelines in
GetFuntimeDataPythonfor movies/videos download catalogs. - Polished offline browsing card UI for clearer title rendering and stronger selected-state visual feedback.
Architecture decisions Link to heading
- Kept early KMM experimentation (
Code/) alongside the Android TV app stream (FunTimeTV) to separate shared-layer exploration from product-facing playback UI. - Used file-backed JSON assets and generated JSON outputs as the offline data contract for app browsing.
- Concentrated web scraping/data-enrichment logic into repository + notebook workflows rather than embedding all extraction logic in UI layers.