Page 1 of 2 12 LastLast
Results 1 to 20 of 22
Like Tree38Likes
  1.    #1  
    Excited to announce the General Availability of MeTube!

    Release History:
    - 1.0.0: General Availability, tested on Touchpad only
    - 1.0.1: Security overhaul, to keep the big G happy with me. Required update for 1.0.0 users.
    - 1.0.2: Basic support and testing done for webOS 2.x phones, improved search bar.
    - 1.0.3: Configurable preferences, including API keys, layout fixes for Pre3.
    - 1.0.4: Advanced features for self-hosters, Beta support for webOS 1.x, layout improvements for tiny screens
    - 1.1.0: Support for all webOS devices -- including Pre and Pixi Plus, bug-fixes for self-hosters, new playback strategy options.
    - 1.1.1: Support for the webOS "Just Type" search feature -- enable in Just Type settings
    - 1.2.0: Added Popular videos feature, dynamic submit button, layout tweaks on all devices, improved video player launch.
    - 1.2.1: Fix an issue where the spinner didn't show sometimes
    - 1.3.0: Add video date, more layout improvements
    - 1.4.0: Get more video details on tap, strip emojis from video titles
    - 1.5.0: Now supports Reddit videos (as long as they're hosted by Reddit -- imgur and other hosts aren't supported)
    - 1.5.1: Can now handle YouTube links system wide -- NOTE: this feature needs to be enabled with the separate URL Assist app
    - 1.5.2: Bug fixes for Target launch feature, adds an experimental Quality toggle to try to improve playback odds on phones.
    - 1.5.3: Enter key submits, theme improvements.
    - 1.6.0: Now supports server-side video conversion and target file.

    LuneTube has been dead for months now, the original dev hasn't had time to update the version of youtube-dl he built for webOS -- a situation that is unlikely to improve as the cat-and-mouse game between Google and youtube-dl continues. MeTube is not dependent on compiling modern code for an abandoned platform, instead it uses a web service that acts on behalf of webOS to fetch the YouTube videos you want to watch. That web service can use the latest youtube-dl without compilation issues. The web service is heavily derived from work by Alex Shnitman (alexta69 on Github) with some supporting Apache2/PHP functions I whipped up (eventually I hope to migrate these into my MeTube fork.)

    The mental model for MeTube is a little different than you might be used to. The thing to keep in mind is that you're never directly interacting with YouTube from your device -- you are submitting requests to the MeTube web service to interact with YouTube for you. That verb "submit" is the driving force of the UI:
    • You can submit a "search" request, by entering any search word or phrase that doesn't contain "" and the server will search on your behalf.
    • You can submit a "fetch" request, by entering a YouTube video link (a fully formed one that contains "" -- not a shortened URL).
    • Once done, the app will submit a "list" request, to see if your video is ready on the server repeatedly (until a timeout)
    • Finally the app will submit a service request to the built-in webOS video player, asking it to open the URL to the fetched video on the server

    All this happens pretty smoothly in most cases. You'll note the transition from "search" to "fetch" involves you selecting a search result from a list, which updates the search box with the URL, so you can then submit again.

    There are a bunch of caveats to be aware of -- some of which I can improve on the server side, as I have time, but some will likely always exist, because of the server-side model:
    • Long videos just aren't going to work: the server is racing to fetch and convert the video for you before the time-out. If it can't get it done in time, the whole request is just abandoned. Practically, this means the maximum supported video length is usually under 30 minutes -- give-or-take.
    • You might think "why not just increase the time out?" Well, there's another race interaction that exists, where files have to be "new" to be discovered by the client. That means the server has to be pretty judicious about cleaning up after itself. If the [clean-up interval] overlaps with the [client time-out + time it takes to stream the video], then the video will get nuked before you're done watching it.

    I think I've found the right combination of timings for a pretty reasonable experience, but may continue to tweak over time. Fortunately, my new Updater Service is built-in, so if there's an update to the app, you'll know about it as soon as it gets published to the Museum!

    MeTube does not require a proxy (although it is compatible with them), and is a tiny install on your device. All code is open source, and available on GitHub. I've done all the development on the Touchpad, but I will go back and tune it for phones shortly -- it works on a Veer, so should work on a Pre2 and up, but the screen layout needs to be optimized for tinier screens.


    MeTube is available in App Museum II now, or by direct download from the online Museum catalog!
    Last edited by jonwise80; 04/14/2021 at 09:17 AM.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
  2.    #2  
    MeTube 1.0.2 with basic support for webOS 2.x phones is out. This version also improves the search bar -- both visually and functionally. Short YouTube links are supported (eg: and an issue with certain special characters work now, but there remains a known issue with any YouTube video that has an emoji in the title -- both webOS and the server garble them, rendering the video unplayable.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    gazaud likes this.
  3. #3  
    Good job! Thanks a lot for keeping maintain the flame.
    jonwise80 likes this.
  4.    #4  
    MeTube 1.0.3 is out now!
    This is a significant feature and bug fix update that, barring any issues, finishes off everything I hoped to do on the client side:

    • Encoding of special characters is now supported across the board. While webOS still can't render emoji's, their presence in a YouTube title will no longer prevent playback.
    • All SDK 2222 and up devices are now "first class" citizens: Pre2, Veer, Pre3 and TouchPad all "just work." Some weird gymnastics had to be done to handle long strings in a list -- its not perfect, but it works.
    • Added support for inputting your own Google API key. Yesterday I used up my search quota doing testing -- to avoid having this happen to you, just visit Google's developer console and create your own key!
    • Also added the concept of MeTube client key, which may some day unlock additional server-side features.
    • Added a few other configurable preferences for controlling the search and video prep experience -- which, you can tweak depending on how patient you are.

    I don't have all the devices to test with, so I had to use the emulator. I'd appreciate feedback -- especially on the Pre3. If you find a video that doesn't play, please send it to me. Similarly, screenshots of layout issues help the most.

    Grab this update from App Museum II!
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    gazaud and dmlis like this.
  5. #5  
    Encoding fails with the new 1.0.3 version on TP and Pre 3. Timeout on all videos (short videos) wether convert time preferences are set on 30 seconds or 3 minutes. Thanks.
    Attached Images Attached Images
    jonwise80 likes this.
  6.    #6  
    Thanks for testing! I see the problem, but don't know how to prevent it from happening again.
    Someone tried watching a 24/7 Live stream (they must be a QA tester at heart, because I didn't even think to try that!) which resulted in the server continuously encoding the video -- blocking all subsequent video requests.

    At search time, Google only gives back minimal metadata about each video. The fact that a video is live doesn't seem to be in there -- they don't even include the length of the video. They basically give the title, the ID to form a video link, and some poster frame URIs. To get the rest of the information would require a follow-up request on each video in the result set (a common problem with REST that GraphQL seeks to deal with.)

    I have cleared the Live stream from the server's work queue, and the remaining 10 items in the queue processed quickly. The app should be working again. I'll think about how to mitigate this scenario, but in the meantime, help out your fellow webOS users and don't try to watch Live streams

    Update: OK, I found it -- you can't request an exclusion of Live videos from the search results, but you can remove them from the search results based on the response member liveBroadcastContent. I just need to decide if this is a server-side filter (gnarlier code), or a client-side change (requires an app update)...
    Last edited by jonwise80; 12/31/2020 at 09:40 AM.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
  7.    #7  
    MeTube 1.0.4 - Massive Update

    In the process of pushing version 1.0.4 to the App Museum. This version has a slew of changes -- some of which are in Beta: I'm looking for testers.

    First up, this release allows you to configure the service URL base. This enables you to host the MeTube service yourself -- so you don't have to share my little server's bandwidth and processing time with other users. If you value performance and privacy you might consider this option -- service improvements and docs coming soon.

    Second, this version includes a new playback strategy that supports webOS 1.x devices. I tested it with an original Pre, and it works! It takes longer to prepare the video on the device, but its a reasonable trade off. Beta users can try this feature with a special client key -- PM me if you want to try it. You can also try this playback strategy on other devices with the beta key as well. I'm interested to see if this approach is less "crashy" on the Touchpad (which seems to do a forced Luna start when the built-in video player feels stressed or neglected.)

    Finally, I made some minor improvements to the UI that should reduce some race conditions and many (not all) random Mojo text-wrapping behavior.

    If the beta period goes well, we'll have a YouTube solution for the entire legacy webOS line up, that can last as long as there is someone out there able to host the service (runs fine on a Raspberry Pi 3b+)
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    gazaud, MudShark22 and dmlis like this.
  8.    #8  
    MeTube is ready for Self-Hosting!

    Everything you ever wanted to know about running your own MeTube service is here:

    A little more background:

    The MeTube app is mostly a client for a PHP service wrapper I wrote that, in turn, uses an open source project called MeTube, which is a web UI for youtube-dl. Is that confusing enough for ya?
    Originally, the Open Source project didn't include a quality setting that would work for webOS, so I forked it and hacked one in.
    It also didn't include a way to get access to the resulting converted file -- it is literally just a GUI so you didn't have to use the youtube-dl command line. That's where the service wrapper comes in. It wraps all the functions of MeTube with alternate end-points, on which I could add some obfuscation (to try to keep the Big G happy), and additional functionality -- like actually listing and playing the files.

    All of this is remarkably thin, and 100% up-to-date. The service wrapper used a recent version of MeTube, which is actively maintained, and uses the latest version of youtube-dl, all of which runs on any modern Linux, etc... Its the perfect stack to "help out" our little webOS clients.

    There are a couple weak links in long-term sustainability for webOS, though:
    - As long as I can afford to host the service in Azure, it can be available to everyone -- that's what the app is counting on right now. If I go broke, or have to move, etc... the service goes away.
    - As long as I could maintain a fork of MeTube, the service could continue to use the latest youtube-dl, and stay ahead of constant efforts to shut that down. If I stop being able to keep up with any of the downstream projects, it dies. (this is the cat-and-mouse game that killed LuneTube)

    With a self-hosted version, and recent changes to the app, both problems are solved:
    - I worked with the MeTube developer on a pull request to get "custom" quality settings into the Main code -- I no longer need to maintain a fork, we're all just using his latest.
    - With the lightweight service wrapper, and something as small as a NUC, you can run the service on your own box. Just update the Preferences in the app to point to your server and configuration, instead of mine.

    All the details of how to do this are here:

    Nomad84 and I chatted for a bit on the webOS IRC and he's going to try it out, and we can improve the docs as we go.

    This pattern works for devices as old as the original Pre because they perform the function of a Proxy -- without needing an actual Proxy (which webOS 1.x doesn't support) and can be use to restore functionality to virtually any web service. Of note, my skills are going to limit me to web services that don't require authentication... I can't wrap my head around how I'd do OAuth2 on webOS, so that does limit the universe somewhat!... but that's just my limitation -- go hit GitHub and find an open source project for whatever you've been dying to get onto your Touchpad or Pre. If you've been thinking of trying your hand at webOS development, there's never been a better time!

    I have a few more tweaks coming to the client app, based on feedback from mrhall17, and then I'm wrapping this one up. My long delayed fitness app (and fitness in general) are next...
    Last edited by jonwise80; 01/13/2021 at 09:16 AM.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
  9.    #9  
    MeTube 1.1.0 - Feature Complete

    With thanks to my two beta testers (who now make an appearance in the About dialog!), version 1.1.0 has been pushed to App Museum II.

    This version addresses multiple issues found during testing of self-hosting scenarios, finalizes support for webOS 1.x, including the original Pre and Pixi Plus, and introduces a new playback strategy for webOS 2+ users. You can toggle the strategy in Preferences, and if you use the download first approach, I came up with a way to show progress, so it doesn't feel like your device is hanging.

    Service-level filters have been added to remove "Live" video streams, which aren't compatible with the service, and also to set the Safe Search level to "moderate" -- if you want explicit content, there's probably better ways to find that, but feel free to self-host and modify to your whims. Nomad84 is working on some docs for dockerizing the service wrapper, if that's your preferred deployment approach.

    This completes all the features I'd hoped to deliver in this app -- it works on pretty much everything reasonably possible, and I've successfully watched videos up to an hour in length. The Touchpad video player crashes Luna afterward -- but there's nothing I can do about that. You will likely even experience crashes on short videos... unfortunately the bug is in HP's code, not mine. Try changing the playback strategy if it bothers you. This app will be maintained going forward, but no more major features are planned - and most maintenance will likely be on the server side, as youtube-dl or the MeTube container are revised. If you have ideas for the front end, please do pull the repo and start coding!
    Last edited by jonwise80; 01/14/2021 at 03:42 PM.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
  10.    #10  
    Just pushed version 1.1.1 to the Museum.
    This build is a minor update that allows MeTube to work with the "Just Type" search feature built-in to webOS. You have to activate it by choosing MeTube as a search app in the Just Type settings, but once done, you can search for YouTube videos from the launcher, just by typing and tapping. It'll take you straight to the search results within MeTube!
    Last edited by jonwise80; 01/27/2021 at 07:50 PM.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    gazaud and SaXxXaS like this.
  11. #11  
    Hello, great work!

    Metube uses the webos stock player to view youtube videos, and this is great because it greatly lightens video playback, and also eliminates annoying advertising. Two questions for you:
    1) What is the resolution of the videos with Metube?
    2)You think is it possible to use kalemsoft as the default media player in the future?

    thank You for all, have a great day!!
  12.    #12  
    MeTube 1.2.0 Released

    This version has some nice improvements I've been meaning to get around to. The layout is improved by using tables on all devices -- modern web developers would slap me, but it improves text wrapping on webOS. The Submit button is now dynamic, depending on what's in the text box, and supports a "Popular Videos" feature. Tapping a selected item a second time scrolls to the top of the screen (unless you tap the checkmark to unselect), and finally I changed how I launch the webOS video player, so I can send a video title. In initial testing, it seems to result in less crashes too.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
  13. #13  
    Tables are no sin to me, when it's the only easy way to do something. I prefer to work smarter, not harder! I'm not a hack that uses a table for everything, but for some things, it's just better.
    jonwise80 likes this.
  14.    #14  
    Quote Originally Posted by Grabber5.0 View Post
    I prefer to work smarter, not harder
    Ditto! And I tried *everything* to make the CSS work right on the original Pre -- including manually manipulating the strings in Javascript. Then I tried wrapping the content in a table, and it just worked...

    Quote Originally Posted by SaXxXaS View Post
    1) What is the resolution of the videos with Metube?
    Unfortunately, its a little bit indeterminate. If you look at line 38 of the service-wrapper code, you'll see what I worked out with the MeTube creator, whose code passes the request along to youtube-dl:
    Basically what that says is: please give me the best quality MP4 video that YouTube will provide that also has the best quality AAC audio in it.

    Exactly what quality YouTube returns for that request determines what quality the webOS device ends up getting. The webOS video player only supports that specific combination of formats, so we can't ask for anything more... Or I guess, technically, we could ask for higher then do an on-the-fly conversion, but the webOS client would be hanging forever waiting for the result. I try to pass through what YouTube gives me as fast as I can, to keep the on-device experience reasonable.

    Quote Originally Posted by SaXxXaS View Post
    2)You think is it possible to use kalemsoft as the default media player in the future?
    Maybe. The KalemSoft player is great, but its a PDK app, so i can't "de-compile" it to see what service calls it supports. We could try playing around with webOS style "open" and "launch" calls to see if it responds, but that'd be a bit of shooting in the dark. However, there IS a way to use KalemSoft indirectly, if you end up with a video that doesn't play -- if you change the MeTube playback strategy to "Download First" (in Preferences) there'll be a secret file created that KalemSoft can open. You'll probably want to rename it first, because the file is replaced with every video you request. I won't post the secret here, because I'm genuinely trying to adhere to the terms-of-service, but if you poke around the code or the file system, you can figure it out!
    Last edited by jonwise80; 02/16/2021 at 04:39 PM.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
  15.    #15  
    MeTube 1.4.0 Released! (oops missed 1.3.0 too!)
    The client has some nice improvements, and the service has had a slight bump too. I'm back to CSS layouts for the rows, because I finally got the z-index working for the checkmark. Everything wraps nicely on all devices, and I've got room for some extra information:

    - In 1.3 I added the video publication date to the video, using the original payload from YouTube.
    - In 1.4 I added a new service function, to get video details via a follow-up call to YouTube -- this requires an update to the service wrapper. To save on round trips, I don't load this extra data until you tap on a video in the list. Wait a second after tapping, and the video duration (Minutes:Seconds) and stored resolution (HD or SD) will be added to the detail line. I also run the video title through a function that tries to strip out emoji's -- which mangle the layout on webOS.

    If you're self-hosting, git pull to update your service. If you don't, you'll see a notification once per launch that your back-end is out-of-date, but nothing bad will happen -- everything else still works perfectly.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    gazaud likes this.
  16. #16  
    Been using this the past few days on my TP and it's working great!
    jonwise80 likes this.
  17.    #17  
    MeTube 1.5.0 Released!

    MeTube now supports Reddit Videos (as in, those actually hosted by Reddit -- external links, such as imgur are not supported)
    Just paste in a Reddit thread URL and it will extract and play the video for you!

    If you're self-hosting, you'll need to update, and you'll need to install ffmpeg on your web server. This should do the trick for most:
    sudo apt install ffmpeg
    Note that unlike the YouTube downloads, which are pulled as a user, FFMPEG generates its vidoes as the www-data (or webserver) user, so you might have to change permissions on your downloads directory.

    Quote Originally Posted by NuclearKev View Post
    Been using this the past few days on my TP and it's working great!
    Thanks, I hope you can use the update!
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    mrhall17 and gazaud like this.
  18.    #18  
    MeTube 1.5.1 and 1.5.2

    As of 1.5.1, MeTube can now handle YouTube links and Reddit links system-wide. If you see a tappable URL, tapping it can launch MeTube. But note, you have to turn this feature on with a separate "privileged" app called URL Assist -- available in the App Museum.

    1.5.2 includes some bugs fixes for that feature, and an experimental Quality preference, that I'm hoping will increase the odds of playback on phones.

    There's also a back-end update that crudely solves the race condition with long Reddit videos. If you're self-hosting, and care about Reddit videos, do a git pull.
    Last edited by jonwise80; 03/15/2021 at 05:31 PM.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    gazaud likes this.
  19.    #19  
    MeTube 1.5.3

    Got some good pointers from exploring the Movie DB code. Pressing "Enter" on the keyboard finally submits, and the theme got spruced up a little.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    mrhall17 and cbosdell like this.
  20.    #20  
    MeTube 1.6.0

    This is a pretty big update to the solution that backs out the dependency on the MeTube webservice. Everything is done either in the wrapper, or directly with youtube-dl and/or ffmpeg on the server. This has some big implications:

    - Since I'm in control of file creation now, I can set the target filename -- before it was indeterminate because the MeTube web service just gave back whatever YouTube gave it. Having a target filename eliminates client-side race conditions that could occur if multiple requests came in around the same time. Previously each client would just grab the first new file that appears after their request -- now the client can watch specifically for their file. This also means two people can watch the same file within the clean-up window!

    - Since I'm interacting with youtube-dl directly, I can also "pipe" (Ok, not quite pipe) the output through ffmpeg. There's no way to know in advance if the file returned by YouTube will actually play on a given device -- older phones in particular are picky. And conversion is obviously CPU-intense. Since this is a shared server, the client has to explicitly request conversion. Meaning, if you try a video and it doesn't work, turn on conversion from the menu, and try again. When you quit the app, this setting will be turned back off. Conversion adds additional time to get a video for the app, so the timeout is extended -- but depending on the file size and complexity, you may still run into timeouts. You can adjust this value in Preferences.

    This approach can be used to prep almost any video on the web for a webOS device -- not just YouTube or Reddit -- so we could extend this to other video sources, if you know of any big ones we should be after.

    App update is in the museum. Self Hosters should also git pull the latest -- although the client remains backward compatible, if you're happy with what you have.
    Check out my webOS archival and development projects: | Like my apps? Why not buy me a coffee?
    MudShark22 likes this.
Page 1 of 2 12 LastLast

Similar Threads

  1. One Night Stand - A Hue Controlling Clock for your Night Table
    By jonwise80 in forum webOS Apps & Games
    Replies: 23
    Last Post: 04/17/2021, 06:40 PM
  2. Replies: 7
    Last Post: 02/20/2021, 08:49 AM
  3. Replies: 9
    Last Post: 12/24/2020, 05:37 PM
  4. Sneak Peak -- New App for webOS
    By jonwise80 in forum webOS Apps & Games
    Replies: 4
    Last Post: 11/28/2020, 01:11 PM
  5. Finding params for com.webos.service.applicationmanager/launch?
    By Eugenio Mendoza in forum LG webOS TV
    Replies: 2
    Last Post: 08/15/2020, 05:28 AM

Posting Permissions