Skip to content

muhammed9865/VidMe

Repository files navigation

VidMe

VidMe is a download-app that will help you save online videos or even Youtube playlists with variety of choices for the videos like saving it as Audio or Video and deciding the video quality.

Features

  • Fetch videos from Youtube/facebook/instagram and many more.
  • Fetch an entire Youtube playlist.
  • Download fetched videos either as Video or Audio, and choosing the quality either Best or Worst.
  • Download an entire Playlist as either Videos or Audios, and choosing the quality.
  • Syncing added Playlists with Youtube.
  • Deleting Playlist or single Video/Audio.

Tools

  • Youtube-dl for Android
  • Android Studio
  • Figma for UI Design

Architecture

MVVM with Repository, Single Activity principle.

Directory Structure

  • Data: Handles the implementation of dealing with Datasources.

    • Datasources in VidMe are the YoutubeDL and Room.
    • data/cache: Contains the implmenetation of Caching method (Room).
    • data/downloader: Interacts with YoutubeDL to process incoming Request and returns the extracted result using the Request extractor. Each request has it's unique extractor.
    • data/extractor: Serializes the output of the downloader to a specific Info type.
    • data/mapper: Data Transfer Object (DTO) that translates a model in Data layer to it's corresponding in Domain layer.
    • data/pojo: Data models that's used in Data layer scope only.
    • data/repository: Implementation of main repository of the application. Repository will be explained in-details in Domain layer.
    • data/request: Each request contains the information of what information is needed and the extractor who can extract that information.
  • DI: Provides most of the dependencies that the application uses during it's lifecycle, like Downloader and Repository.

  • Domain: The Business logic that's used in Presentation layer.

    • domain/pojo: Data models that's used in Domain layer scope and Presentaion layer.
    • domain/repository: Repository purpose is to combine the Data sources into one single source for Use cases.
      • Combines between Downloader and Cache, whatever output comes from downloader is cached and then cached output is returned.
    • domain/usecase: Use case specifiy an action that the system provides, like FetchYoutubePlaylistInfoUseCase, it will somehow get you the playlist info.
    • domain/util: Provides helper methods in dealing with Files API and Strings.

Libraries

  • Room for caching
  • Hilt for dependecy injection
  • ViewModel for managing activity/fragments lifecycle. MVVM Architecture
  • Glide for image loading.
  • Sdp/SSP for responsive dimensions
  • Coroutines for asynchronous work
  • Truth for Unit testing

Framework tools

  • Android Threads
  • Notifications
  • Foreground service
  • MediaPlayer
  • VideoView with MediaController
  • Files API
  • Permissions

Try it out

VidMe

Gallery

Video of VidMe

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages