GithubHelp home page GithubHelp logo

jman012 / wasserflug-tvos Goto Github PK

View Code? Open in Web Editor NEW
30.0 2.0 4.0 2.99 MB

An unofficial Floatplane client for Apple TV/tvOS

License: MIT License

Swift 99.94% Shell 0.06%
floatplane linustechtips ltt tvos wasserflug appletv swiftui

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  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

wasserflug-tvos's Issues

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))

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)

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

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.

Watch History Page

on the floatplane website / android app there is a "watch history" page, wondering if we can get this added in.

I ran into an issue where I got a notification for a video, but it's not showing up in the main grid but because i "watched" part of it from the notification it does show up in my watch history.

thanks for all the work on this!

Playback speed

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

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.

Issue templates

On the Roku & AndroidTV projects, they're adopting issue templates to prompt the required information for debugging issues / implemented features to be gathered and also direct users to leave issues on the right GitHub project for the platform they're using.

Hydravion-AndroidTV's implementation of this can be found here

If you'd like to do the same for Wasserflug here's a start below:

.github/ISSUE_TEMPLATE/1-bug.yml

name: 🐛 Apple TV/tvOS (Wasserflug) bug report
description: Report a bug/issue affecting Apple TV/tvOS (Wasserflug)
labels: ["bug"]
body:
    - type: checkboxes
      attributes:
        label: Checklist before submitting a bug report
        options:
        - label: This bug/issue is affecting Apple TV/tvOS (Wasserflug)
          required: true
        - label: I've searched for existing [issues](https://github.com/Jman012/Wasserflug-tvOS/issues?q=is:issue) and found no duplicates
          required: true
        - label: I understand that this project is run by volunteer contributors therefore completion of this issue cannot be guaranteed
          required: true

    - type: input
      id: devicemodel
      attributes:
          label: Model
          description: REMOVE / UPDATE WITH INSTRUCTIONS
          placeholder: e.g. Apple TV 4K (2nd generation)
      validations:
          required: true

    - type: input
      id: osversion
      attributes:
          label: tvOS Version
          description: REMOVE / UPDATE WITH INSTRUCTIONS
          placeholder: e.g. tvOS 17.1
      validations:
          required: true

    - type: input
      id: version
      attributes:
          label: Wasserflug Version
          description: REMOVE / UPDATE WITH INSTRUCTIONS
          placeholder: e.g. 1.3.0
      validations:
          required: true

    - type: input
      id: subscriptions
      attributes:
          label: Whom you are subscribed to?
          description: Sometimes issues are subscription specific
          placeholder: e.g. LTT, Garbage Time, Bitwit, Lvl1
      validations:
          required: true

    - type: markdown
      attributes:
        value: Please detail one bug per GitHub issue

    - type: textarea
      id: details
      attributes:
        label: Error/Issue Details
        description: |
          What is the issue you're experiencing? How can we re-produce it?
          Please be as specific as possible
          - Is the error/issue occurring on a specific channel only?
          - Does it only affect specific videos?
          - Does the issue still occur when trying to play the video at a different resolution? (Access the options menu when looking at the video description, "Select Resolution")
          - Can you provide any screenshots?
        placeholder: Detailed explanation of the issue along with replication steps

.github/ISSUE_TEMPLATE/2-feature.yml

name: 🚀 Apple TV/tvOS (Wasserflug) feature request
description: Feature request for Apple TV/tvOS (Wasserflug)
labels: ["enhancement"]
body:
    - type: checkboxes
      attributes:
        label: Checklist before submitting a feature request
        options:
        - label: This feature request is for Apple TV/tvOS (Wasserflug)
          required: true
        - label: I've searched for existing [requests](https://github.com/Jman012/Wasserflug-tvOS/issues?q=is:issue) and found no duplicates
          required: true
        - label: I understand that this project is run by volunteer contributors therefore completion of this request cannot be guaranteed
          required: true

    - type: markdown
      attributes:
        value: Please detail one feature request per GitHub issue

    - type: textarea
      id: details
      attributes:
        label: New Feature Details
        description: |
          What would be the expected behavior of the new feature?
          Are there any links/screenshots that can be provided relating to this?
        placeholder: Detailed explanation of the new feature
      validations:
        required: true

.github/ISSUE_TEMPLATE/config.yml

blank_issues_enabled: true
contact_links:
  - name: AndroidTV issues, feedback & feature requests
    url: https://github.com/bmlzootown/Hydravion-AndroidTV/issues
    about: Please use the Hydravion-AndroidTV issues page

  - name: Roku issues, feedback & feature requests
    url: https://github.com/bmlzootown/Hydravion/issues
    about: Please use the Hydravion Roku issues page

  - name: Questions
    url: https://discord.gg/4xKDGz5M5B
    about: Join the Discord server for help with regular/general questions

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}

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.

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

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.

Manual Refresh Button

I've run into the issue where I get logged out (unbeknownst to me via the app, i assume session length something something) and when I go to watch something I get the dreaded red crossed circle saying I can't play anything. I have to go into multitasking on the appletv, close the app and reopen it so that I can get to the login screen. I'm not always certain it's the login so I'm wondering if we can have a manual "refresh" button (the one that appears in the "don't contact the floatplane support" message screen just placed in the "settings" page so I can manually do it without having to reload the whole app / accidentally log myself out.

thanks!

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.

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.

TestFlight has ended

The latest - and working - version has expired on TestFlight.

Will the AppStore version be updated or will there be a new version on TestFlight?

Cheers and great work!

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.