📦📦Video downloader for Android - Download videos from Youtube, Facebook, Twitter, Instagram, Dailymotion, Vimeo and more than 1000 other sites

Overview

youtube-dl-android

CircleCI Coverage Status

📦 An Android client for youtube-dl: https://github.com/rg3/youtube-dl

Major technologies

  • Language: Kotlin
  • Architecture: MVVM
  • Android architecture components: ViewModel, LiveData, Room
  • Dependency injection: Dagger2
  • Network: Retrofit, Okhttp
  • Testing: JUnit, Espresso, Mockito
  • Data layer with repository pattern and RxJava
  • Continuous integration with CircleCI
  • Test report and coverage with Coveralls
  • Run instrumented tests with Firebase Test Lab

Features

  • Download videos from Youtube, Facebook, Twitter, Instagram, Dailymotion, Vimeo and more than other 1000 sites
  • Browse videos with the built-in browser
  • Download videos with the built-in download manager
  • Play videos offline with the built-in player
  • Save your favorite videos online and watch them later without downloading them
  • Save bookmark and history as a real browser

Screenshots

License

This package is licensed under the MIT license. See LICENSE for details.

You might also like...
A simple, lightweight, non-bloated redis client for kotlin and other JVM languages

rekt is a lightweight, non-bloated redis client, primarily written for the kotlin programming language, while also supporting other JVM-based languages, such as Java, Scala, and obviously way more.

Climby is designed to put climbers in contact with each other
Climby is designed to put climbers in contact with each other

Climby Con el nuevo 'BOOM' de la escalada, se vio la necesidad de crear un app donde los usuarios puedan publicar o unirse a viajes, sin la necesidad

Reia is the Redis Pubsub client that Manase uses to communicate with other modules or nodes.
Reia is the Redis Pubsub client that Manase uses to communicate with other modules or nodes.

from Mana Reia is a simple wrapper around Lettuce to enable easy usage of its Redis Pubsub client. This library is only intended to be used for sendin

Android library to help enter, and more importantly, leave, android "Immersive Mode".

Immersive Lock Android has various ways to full screen an application including locking the screen to prevent accidentally leaving the app. This is pa

Ktor is an asynchronous framework for creating microservices, web applications and more.
Ktor is an asynchronous framework for creating microservices, web applications and more.

ktor-sample Ktor is an asynchronous framework for creating microservices, web applications and more. Written in Kotlin from the ground up. Application

One app for all women that covers everything from safety to health and more. 👩💪

sampoorna Sampoorna is a one-in-all solution concept revolving around the women who fight one on one with various problems. With it's features encapsu

Kadrekka is a library that aims to make Kotlin more accessible to the northern italian population

Kadrekka Kadrekka is a library that aims to make Kotlin more accessible to the northern italian population. It provides lots of utility functions to m

Helper functions for making Approvals-Java more Kotlin friendly

Approvals-Kt Helper functions for making Approvals-Java more Kotlin-friendly Usage Verify using Approvals-Kt import com.github.greghynds.approvals.Kot

From 8-10 October 2021 there was VTB MORE tech 3.0, where the DUCK team presented their solution.
From 8-10 October 2021 there was VTB MORE tech 3.0, where the DUCK team presented their solution.

InvestmentGuideVTB Ссылка на репозиторий с бэкендом приложения: https://github.com/disarrik/vtbBackend Процесс сегментация происходит в отдельном окне

Comments
  • Cannot access database on the main thread since it lock the UI

    Cannot access database on the main thread since it lock the UI

    Crash occurs when floating download button is clicked

    E/AndroidRuntime: FATAL EXCEPTION: main Process: com.youtubedl, PID: 21758 java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time. at android.arch.persistence.room.RoomDatabase.assertNotMainThread(RoomDatabase.java:204) at android.arch.persistence.room.RoomDatabase.beginTransaction(RoomDatabase.java:251) at com.youtubedl.data.local.room.dao.ProgressDao_Impl.insertProgressInfo(ProgressDao_Impl.java:84) at com.youtubedl.data.local.ProgressLocalDataSource.saveProgressInfo(ProgressLocalDataSource.kt:24) at com.youtubedl.data.repository.ProgressRepositoryImpl.saveProgressInfo(ProgressRepository.kt:32) at com.youtubedl.ui.main.progress.ProgressViewModel.downloadVideo(ProgressViewModel.kt:74) at com.youtubedl.ui.main.progress.ProgressFragment$handleDownloadVideoEvent$1.onChanged(ProgressFragment.kt:71) at com.youtubedl.ui.main.progress.ProgressFragment$handleDownloadVideoEvent$1.onChanged(ProgressFragment.kt:24) at com.youtubedl.util.SingleLiveEvent$observe$1.onChanged(SingleLiveEvent.kt:28) at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109) at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126) at android.arch.lifecycle.LiveData.setValue(LiveData.java:282) at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33) at com.youtubedl.util.SingleLiveEvent.setValue(SingleLiveEvent.kt:36) at com.youtubedl.ui.main.home.BrowserFragment$handleDownloadVideoEvent$1$1$1.onDownloadVideo(BrowserFragment.kt:138) at com.youtubedl.databinding.DialogDownloadVideoBindingImpl._internalCallbackOnClick(DialogDownloadVideoBindingImpl.java:151) at com.youtubedl.generated.callback.OnClickListener.onClick(OnClickListener.java:11) at android.view.View.performClick(View.java:5246) at android.widget.TextView.performClick(TextView.java:10618) at android.view.View$PerformClick.run(View.java:21256) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:7007) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

    opened by Aym9n 3
  • downloading issue

    downloading issue

    video does'nt download

    "you don't have any file explorer app installed in your device"

    error shows up on clicking video folder in settings nav

    opened by FareesHussain 0
  • Can't set download folder

    Can't set download folder

    I can't download anything. Maybe is because I can't set the download folder under settings, it tells me I do not have any file manager app, altho I have "Samsung's My Files" AND Root Explorer.

    opened by nodefive 0
Owner
Cuong Pham
Mobile Engineer (Android | Flutter)
Cuong Pham
Share MPS code snippets. More than just screenshots.

skadi gist Share MPS code snippets. More than just screenshots. Repository Content ide-plugin: MPS Plugin that creates a gist from the IDE written in

Skadi 6 Jan 8, 2023
Binding your extras more easier, more simpler for your Android project

Ktan Ktan make your intent / arguments more easier and readable. And most important, will help you bind all extras for your activity / fragment. And a

Ade Fruandta 3 Jan 7, 2023
Examples of Getting Started vídeos

Getting Started Kotlin Learn the basics of getting started with kotlin --->>> Repo: Kotlin Koans <<<--- --->>> Repo: Problems Kotlin <<<--- --->>> Rep

Victor Bolinches 41 Dec 4, 2022
A simple android Twitter client written in Kotlin

Blum Blum is an unofficial, simple, fast Twitter client written in Kotlin. This project is a complete rewrite of the Java version. Screenshot Build To

Andrea Pivetta 77 Nov 29, 2022
An open-source Android app for locating your group's people privately using Facebook Login, Google Maps API and Firebase

An open-source Android app for locating your group's people privately using Facebook Login, Google Maps API and Firebase

Duong Tran Thanh 2 Feb 27, 2022
A basic Kotlin implementation of Facebook's memcache lease functionality.

Liftgate Lease A basic Kotlin implementation of Facebook's memcache lease functionality. How it works If the cache key is empty or has been invalidate

null 6 Nov 10, 2022
InstaKiller - InstaKiller is a CLI client for Instagram

InstaKiller InstaKiller is a CLI wrapper around instagram4j library. Icon Item ?

null 10 Apr 5, 2022
Quick photo and video camera with a flash, customizable resolution and no ads.

Simple Camera A camera with flash, zoom and no ads. The camera is usable for both photo taking and video recording. You can switch between front and r

Simple Mobile Tools 644 Dec 26, 2022
An Android application for browsing video games and checking the latest gaming news from around the world.

Gamedge An Android application for browsing video games and checking the latest gaming news from around the world. Built entirely using the Jetpack Co

Paul Rybitskyi 602 Dec 25, 2022
Browse your memories without any interruptions with this photo and video gallery

Simple Gallery Simple Gallery Pro is a highly customizable lightweight gallery loved by millions of people for its great user experience. Organize and

Simple Mobile Tools 2.8k Jan 8, 2023