Why do domestic YouTube analogues fail to measure up to it?

I will express my personal opinion on this matter. I am a cloud CMS developer, and after the “YouTube slowdown”, many users began to actively switch to domestic video hostings, and there was a need to integrate VK, RuTube, Ok.ru into our platform. And it would seem that everything should be as simple as possible, but it was not so…

For many, what is said below may seem like a weightless argument, and I partially agree with them. Someone will say that it is impossible to judge such complex projects based on just one case of obtaining thumbnails for a video, but I am convinced that it is almost always possible to interpolate something simple and understandable, for the entire depth of the project and draw a conclusion (even if superficial) about the level of execution of the project, especially since we as developers have something to compare with.

This is what the interface for adding videos looks like, added videos are displayed with .jpg/.png covers (not iframe)

This is what the interface for adding videos looks like, added videos are displayed with .jpg/.png covers (not iframe)

How to get cover from Youtube.

  • The link to the video looks like this: youtube.com/watch?v=${VIDEO_ID}

  • The link to the cover is i.ytimg.com/vi/${VIDEO_ID}/mqdefault.jpg

  • That is, knowing VIDEO_ID, we use the simplest logic to form a link to the cover image, everything is simple

How to get a cover from VK.video

  1. The link to the video looks like this: https://vk.ru/video_ext.php?oid=${OID}&id=${ID}

  2. The link to the cover is pulled through API (but there are difficulties with access keys, with their rapid expiration, long-lived application key it is impossible to receive any videos), or through parsing the embeded page (but the size of the cover will be uncontrollable), the link to the image also has an access token embedded, without it the picture will not load

  3. That is, a simple task is complicated, compared to YouTube

How to get cover from Rutube

  1. The link to the video looks like this: https://rutube.ru/video/${VIDEO_ID}

  2. The link to the cover is pulled through the public API https://rutube.ru/api/play/options/${VIDEO_ID}, from the response we take the cover and add the required size to it, example: ${thumbnail_url}?size=w306

  3. Compared to YouTube, the task is also complicated by an additional request to the API

OK.ru

Here it was possible to get the cover only through parsing the embedded page, everything is also more complicated compared to YouTube

Youtube

VK.Video

Rutube

OK.ru

Number of requests to get cover

0

1

1

1

Ways to get the cover

Substituting ID into standard URL

API / parsing embedded pages

API (undocumented) / parsing embedded pages

Parsing an embedded page

Are there access tokens in the cover link?

No

Yes

Yes

Yes

The probability that the cover will become inoperative

No

Theoretically yes, because the token embedded in the link to the image can “go bad”

Theoretically yes, because the token embedded in the link to the image can “go bad”

Theoretically yes, because the token embedded in the link to the image can “go bad”

Summary

We have successfully integrated all the listed video hostings into our CMS, but as they say, “there is a bad aftertaste”. I decided to share it with you, perhaps this experience will be useful to someone. And there is a glimmer of hope that this material will encourage video hosting developers to make life easier for their colleagues.

YouTube, with all its power, even in such a simple case as getting a cover from a video link, noticeably wins over VK, Rutube and Ok.ru, does not require any keys, crutches. Everything is simple: With YouTube, knowing the video ID, we also know the link to the cover.

I am sure that domestic platforms could take YouTube as a reference and make life easier for developers. In this and other cases.

I hope this article will lose its relevance someday, and the platforms will make an adequate upgrade.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *