Giter VIP home page Giter VIP logo

wasserflug-tvos's Introduction

Wasserflug tvOS

An unofficial Floatplane client for Apple TV/tvOS. View it on the Apple TV App Store at https://apps.apple.com/us/app/wasserflug/id1611976921.

⚠️ Notice ⚠️: The App Store version is currently out-dated. Getting the Test Flight version is recommended. See below in "Beta Testing" for instructions.

Looking for Roku? https://github.com/bmlzootown/Hydravion

Looking for Android TV? https://github.com/bmlzootown/Hydravion-AndroidTV

Screenshots

See https://imgur.com/a/vXAcEJy for screenshots of Wasserflug.

Features

Implemented Floatplane Features

  • ✅ Floatplane Login (and with 2FA)
    • Login via LTT Forum/Discord: See FAQ
  • ✅ Aggregated home screen
  • ✅ Creator screens with proper branding (banner image, profile picture, "About" information)
    • ✅ Search a creator for videos
    • ✅ Creator Livestream
    • ✅ Channel support (branding, search, etc.)
  • ✅ Floatplane tags (view only)
  • ✅ Formatted post descriptions
  • ✅ 4K Support
  • ✅ Watch progress (syncs with Floatplane website)
  • ✅ Attachment views
    • ✅ Videos
    • ✅ Pictures
    • ❌ Audio
    • ❌ Gallery
  • ❌ Livestream chat
  • ❌ Notifications
  • ❌ Creator discovery
  • ❌ Search by tags
    • Note: You can currently manually search a tag by typing a # before the tag name in the creator's search screen, same as Floatplane.com.
    • This is more about clicking a tag button to search it automatically.
  • ❌ Picture-in-Picture

Frequently Asked Questions

  • Q: I have an grandfathered/OG account on LinusTechTips forums, and normally log in to Floatplane using this account. How do I log in on Wasserflug?
    • A: When you log in to Floatplane using a Discord or LTT Forum account, an account is made for you in Floatplane as well, with its own password and username (the username is usually copied from the other service). You were asked to create a Floatplane-specific password when you first logged in. This is the information you should use to log in to Wasserflug. If you have forgotten the Floatplane password for this account (because you normally use LTT Forum or Discord to log in), you can go onto the Floatplane website to change your password first.
  • Q: I'm getting an error when logging in, "Logging in was successful, but an error was encountered while loading your user profile."? What do I do?
    • A: This happens sometimes because of the differences between the LTT subscriptions and other content creators on Floatplane having slightly different data here and there. Let the app developer know over Discord or email and the issue can be sorted out quickly enough!

Technical

Beta Testing

If you would like to enter the beta testing via Test Flight for Wasserflug or to receive advanced updates, please use this Test Flist invite link: https://testflight.apple.com/join/aYwKPFNF.

Development

Cloning the git repository and opening/running it in Xcode, with some slight changes for provisioning/signing should be all that is needed at this time. There are some dependencies; please allow time for Xcode to automatically fetch those before/during initial compilation.

This uses an Xcode tvOS SwiftUI template, including a .xcodeproj file. Opening the .xcodeproj file is the main way of accessing this project. Wasserflug uses SwiftUI instead of UIKit, and targets tvOS 15.0.

For accessing the Floatplane API, this uses an accompanying project that maps out the API in the OpenAPI specification for automatic code and documentation generation. Check it out at https://jman012.github.io/FloatplaneAPIDocs/. The floatplane-openapi-specification-trimmed.json in this repository is copied over from that project, and the auto-generated code is generated using ``generate-floatplane-api-client.shand included in this repository in theFloatplaneAPIClient` folder.

Related

See bmlzootown's Hydravion projects and Discord server and more for other Floatplane-related software and discussion:

Legal

Application created by James Linnell.

Wasserflug logo copyright to Yaroslav Shkuro via Shutterstock.

wasserflug-tvos's People

Contributors

dahlgren avatar jman012 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

wasserflug-tvos's Issues

Switching quality doing nothing

I tried switching to 4K and don't know if it really is 4k, it didn't look like it. Switching also didn't change playback. AppleTV 4k 2021 latest non beta tvOS.
Latest App Store version of wasserflug

Edit: Version 1.0.6

Video playback refreshing every 30 seconds

When playing a video from a creator's tab (not the Home tab), the video will refresh every 30 seconds. It resumes from where it left off, but is met with a black screen and a loading indicator for half a second. This is not good for user experience of watching a long video where every 30 seconds it is interrupted.

This affects version 1.0.5.

Smaller thumbnails

When loading thumbnails for videos in a feed, use the smaller sized thumbnails in the childImages property of the thumbnail object. This will speed up loading times of the thumbnails (which are currently loading 1080p images) and ease app memory usage.

Videos no longer working

CDN API endpoint changes.

Simulator Screen Shot - Apple TV 4K (2nd generation) - 2022-09-29 at 15 27 58

Summary of changes:

  • the qualityLevels object has new properties: mimeType, codecs
  • the name of the quality levels have changed from "360" to "360-avc1", for example
  • the qualityLevelParams object has changed properties. it's no longer an {"token": "..."}. it's now a {2: "...", 4: "..."} with a corresponding change to the uri property.
    e.g. /Videos/rV9hLpfIOo/{qualityLevelParams.2}/chunk.m3u8?token={qualityLevelParams.4}

Login was successful but an error was encountered

The app is telling that my login was successful but got the following Application Error

Logging in was successful, but an error was encountered while loading you user profile.
The data couldn't be read because it isn't in the correct format.

dataCorrupted(Swift.DecodingError.Context(codingPath: [_JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "startDate",intValue: nil)], debugDescription: "Date string does not mach format expected by formatter.". underlyingError: nil))

Unable to select 4K

Hi.

The 4K option does not exist in my list of available resolutions.

I'm on an Apple TV a1842, I have a valid LTT Supporter Plus sub, I can stream in 4K from the official mobile app. I can also stream 4k from any other app on my Apple TV.

Check for Livestream

When opening the app, when the stream is live, the button won't light up and be clickable until restarting my device. not sure if i'm impatient or what, but if it can check each time the app is opened regardless of cache or something, that would be ideal.

thanks for the app ❤️

"The data could not be read because it's missing" Error on Home and Level1Tech Pages

Hello, these errors occurred to me:

keyNotFound (CodingKeys(stringValue: "card", intValue: nil), Swift.DecodingError.Context (coding Path:
LJSONKey(stringValue: "Index O", intValue: 0), CodingKeys(stringValue: "creator", int Value: nil)],
debugDescription: "No value associated with key CodingKeys(stringValue: I"card]", intValue: nil)
('"card)"').", underlyingError: nil))
keyNotFound (CodingKeys(string Value: "card", intValue: nil), Swift.DecodingError.Context (coding Path:
[CodingKeys(stringValue: "blogPosts", intValue: nil), _JSONKey(stringValue: "Index 3", int Value: 3),
CodingKeys(stringValue: "creator", int Value: nil)], debugDescription: "No value associated with key
CodingKeys(string Value: ("card\", intValue: nil) (I"card] ").", underlying Error: nil))

Also adding photos if OCR wasn't great:
https://imgur.com/a/hTXtmPY

Allow Player timeline scrubbing

On long videos (like WAN) it’s a relatively slow process to fastforward significantly into a video. I believe this is a feature native to the TVos playback controls you seem to be using already.

Video Duration for Multi-Video Posts

LTT has started uploading FP exclusives with two videos: captioned / uncaptioned. When on the grid view, it seems to add all the lengths up so if the video is 30 mins, with 2 versions, it will count it as 1 hour. You can see this with the latest "meet the team".

I think the solution here (from a UI perspective) would be to change the type underneath the thumbnail from "Video" to "Multimedia" or "Videos". Then just not show a duration, then have individual durations under each video once you've clicked in.

Playback speed

Allow for variable playback speed on videos, much like the web player.

issues with using search

any time i try to search for a video i get a error like this.
just with a different Error id
ErrorModel(id: "vzam-v9nj-n56h", errors: [FloatplaneAPIClient. ErrorModelErrorsInner (id: "vzam-v9nj-n56h", name: "paramValidationError", message: Optional (""ids" must contain at least 1 items"), data:

Optional ("rule": AnyCodable("array.min")I))1, message: Optional (""ids|" must contain at least 1 items"))

when you put more than a couple of letters in the search trying to find a video
4k apple tv
16.3.2 (20K672)

2FA Sign in stopped working

So I was logged out yesterday of the app and haven’t been able to log back in.

Getting 2FA error.
image

PS: I’m in beta tvOS version, not sure if that affects it.

Failed to fetch data while accessing a non-LTT channel

Hello,

I just enrolled on test flight. The App's really clean, I like it

I have two subscriptions on floatplane, one is LTT, and one is Tyler McVicker (The Passionate Gamer). When clicking on the tab, this appears (with expended details)

image

I have no idea how I can help you debug this further, but the channel has post that do not have thumbnails it seems. It might be causing some API to respond with some JSON that do not have some key/values you are expecting ?

(see posts with no images below)
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.