-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Кэшировать иконки видео и плейлистов #148
Comments
Размер иконок:
|
Почищу немного код, оставлю здесь. Сейчас иконки роликов беру из API, но раньше в самом начале собирался брать их вручную. В VideoThumbManager остался неиспользуемый код. //private static final String THUMB_URL_TEMPLATE = "https://img.youtube.com/vi/%id%/sddefault.jpg";
private static final String THUMB_URL_TEMPLATE = "https://img.youtube.com/vi/%id%/default.jpg";
// http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
// http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
// http://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
// http://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
// http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
/**
* Load thumbnail for youtube video
* @param ytId youtube video id
* @return video thumbnail as bitmap
* @throws IOException
*/
public Bitmap loadVideoThumb(final String ytId) throws IOException {
// 1) YouTube data api (Android):
// https://github.com/youtube/api-samples/tree/master/java
// (похоже, хотят обращаться к ютюб-сервисам, установленным на телефоне;
// скорее всего выберем данунах, проще тягать иконки по шаблону URL и парсить страничку с поиском)
// https://developers.google.com/youtube/v3/quickstart/android
// build.gradle:
// compile('com.google.apis:google-api-services-youtube:v3-rev209-1.25.0') {
// exclude group: 'org.apache.httpcomponents'
// }
// AndroidManifest.xml
// <uses-permission android:name="android.permission.INTERNET" />
// <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
// 2) Вручную по шаблону
// https://www.thewebtaylor.com/articles/how-to-get-a-youtube-videos-thumbnail-image-in-high-quality
// http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
// https://img.youtube.com/vi/KguUtafZtN8/sddefault.jpg
return loadBitmap(THUMB_URL_TEMPLATE.replace("%id%", ytId));
} |
Одна иконка видео (при текущем качестве) попучается примерно 6КБ. Для канала 1000 роликов это будет примерно 6МБ, 10 тыс роликов - 60МБ, 100 тыс роликов - 600МБ. Это уже довольно большая база. 200 тыс роликов ~ 1Гб. |
Поймал эксепшен при попытке закэшировать иконку "Три толстяка"
Исправляю здесь, пока не зарелизил |
Полезная задача в принципе. Но особенно актуальная для релазиации режима оффлайн #142
Пусть сразу будет отдельным тикетом.
Еще одна история с иконками-превью роликов
-- показать размер
-- удалить весь кэш
-- удалить лишние файлы (из имени файла придется выуживать id видео/плейлиста и каждый в базе сверять)
-- удалить кэш для файлов, у которых нет потоков оффлайн
-- обновить кэш (для тех файлов, которые уже есть - тоже через запрос в базу по id)
-- выкачать иконки для всех файлов, у которых есть оффлайн-поток
Для плейлистов иконки нужно просто вообще для всех кэшировать.
И да, для режима плеера #134 нужно качать иконки видео размером побольше, т.к. их растягиваем вместо потока аудио на весь экран.
The text was updated successfully, but these errors were encountered: