OneLoveDTube IPFS uploader 0.8.3: Mobile optimizations, multi-resolution upload support, and more!

4개월 전


New features

UI optimizations for mobile devices

Screenshot 2019-01-17 at 8.38.39 PM.png


A much requested feature due to many of our users are uploading DTube videos from mobile devices (as well as for SEO optimization), I have made some modifications to the HTML/CSS code to ensure that the webpage is easy to read on mobile, as well as desktop. All it took was the line of code below, as well as some additional CSS code written specifically for mobile. For example resizing some text so that they're readable, and hiding the header text (but leaving the #onelovedtube logo visible) because there's no space for the text to be displayed correctly.

<meta name="viewport" content="width=device-width, initial-scale=1">

There are no server side code modifications in order to achieve this.

STEEM Article Body overwrite field!

Another feature that was missing, is here! Many DTubers would like to have some other content to be displayed on Steem frontends like Steemit and, that is different than the description section of the DTube video watch page. This will not be a required field, leaving this blank will set the contents of the video description to be content of the article body in the Steem post (underneath the thumbnail).

Image uploads for STEEM article body overwrite

Not in the official DTube uploader at all, it's possible to upload images (not video thumbnail) for the Steem article body if the user would like to overwrite it with other content. All it takes is to select an image (all image formats supported, hence the image/* wildcard here) after a button click, and it will upload the selected image to the server, and adds the file to IPFS. It then returns the link to the image (we're using gateway here) in a markdown style, and appends them to the end of the article body. It's up to the user to move it to the location where they want the image to be displayed.

More efficient uploads with async.js + js-ipfs-http-client

I have changed a huge amount of the backend code to improve the efficiency of how file uploads are processed. Now that I have successfully integrated the js-ipfs-http-client API (formerly known as js-ipfs-api) with trickledag add. It was due to incomplete docs that I couldn't figure this out so I used ShellJS when I first started developing DTube IPFS tools like this one, but now I figured out the right way (and the correct options args) to implement this API so we shall go with this.

One of the advantages of using this uploader instead of the official DTube uploader is that there are no IPFS/encoding queues, which means it's easier to scale with more users, therefore it will help DTube to achieve mass adoption as a mainstream video platform. In the previous versions, the IPFS operations and sprite generation were handled asynchronously only for code execution across multiple users at the same time. However, these individual operations were run in sequence, causing the callback hell that I recently found out.

Thanks to async.js, all IPFS add operations and sprite generation can be run at the same time, even though only one user is uploading at the time. This improves uploader efficiency, and allow scalability, should more code needs to be run to process uploads in future updates when more and more new features get introduced in this uploader, or DTube in general.

Optional video upload fields for lower res versions

Screenshot 2019-01-17 at 10.07.18 PM.png

Previously only source video files are supported, and the only video file that gets added to IPFS and have its hash submitted to the Steem blockchain. Now, users may encode source videos themselves into multiple lower res video files so that they can be uploaded separately in the advanced tab, in addition to the source video files itself. By doing so it will allow the video to play for users with poor internet connection smoothly, but at lower quality.

I recommend using handbrake encoding software to encode your videos. I have prepared config files that you may use for DTube videos, which you may find them here.

Updates with OneLoveIPFS service

I would like to take this opportunity to give you some updates with the hosting service offered by @onelovedtube.

Announcing IPFS gateway

This would be a high performance IPFS gateway that serves only pinned videos. In order to achieve this, a NodeJS HTTP reverse proxy is required to handle it, in addition to the NGINX server that handles domains and HTTPS encryption.

Usage example:

Requests of files that are non pinned will return a 404 error instantly.

The reverse proxy source code can be found here.

Announcing the @onelovedtube embed player

We have forked DTube's embed player to adapt our IPFS gateway (as described above), and we're using @anyx's full RPC node instead of Steemit Inc's node that DTube uses. The embed player may be accessible through The URL syntax is the same.

For example:!/mvd/st0typeu/true/true

(will hide logo on player and will autoplay)

The forked source code may be found here

Customer reviews

Over the past few months we have received some valuable feedback from our customers. They have made a DTube video about it and would like to link some of the good ones here, for those who are new to this and want to find out more.

  1. OneLoveDTube Uploader Test & Review -- W/Special Guest @Gray00 by @vladivostok
  2. Are Your Videos Getting Deleted On Dtube? Here Comes The Solution OneLoveIPFS | Step By Step Tutorial | MVD by @mvd

This one is from the founder of the community @d00k13 - check it out here
Here's another one in text format by @theycallmedan (only part of the article) - check it out here

All review videos mentioned above are uploaded through and are hosted on our servers.

Github account

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  trending

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.

Need help? Chat with us on Discord.



Snap file name is no longer used in Shell JS, I have moved all IPFS add commands to the official API. Only the source video filename that is used in ShellJS to run script to generate video sprite, that needs to be sanitized.

Oh, for the gateway - you need to specify the full link with the hash. See example above


Thank you for your review, @helo! Keep up the good work!

Nicely done @techcoderx!

Hells yea buddy! Loving how it’s all coming together one piece at a time!

I was stoked yesterday to have the opportunity while DTube was having issues to make a video example of how using our service eliminates the problem of non playability.

I think I might be doing videos like that more often, it was so quick!!! Usually I have to wait 20-30 mins on the whole upload process, with our uploader me writing the body of the post was the longest delay 😅

Great job, so proud and honoured to have you bringing this project forward!

Posted using Partiko iOS

Huge upgrade! Great work tech.

Good job @techcoderx
You're doing really good work man. We are going to do lots in the future. I know it!

Hi @techcoderx!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your post is eligible for our upvote, thanks to our collaboration with @utopian-io!
Feel free to join our @steem-ua Discord server

Hey, @techcoderx!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support!
Simply set as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

Want to chat? Join us on Discord

Vote for Utopian Witness!