iOS music player app that downloads music from the internet, even YouTube

Overview

License Language

About

YouTag is an iOS music player app that downloads music from the internet, even YouTube, and manages it in a local library. Music videos can also be downloaded and the app will automatically extract the audio only. Special playlists can be curated based on user's choice of filters. Filters can be on tags, artist, album, release year or duration.

Features

  • Supports mp4, mp3 and wav file types
  • Downloads from any direct link of the supported file types
  • Downloads from YouTube
  • Extracts the audio from videos
  • Edit song information like title, artist, album, etc
  • Auto extraction of song metadata information for mp3 and wav
  • Customize playlist based on filters
  • Plays music in the background
  • Change song playback rate to x0.75 or x1.25

Requirements

  • Tested on Xcode 11.0 and later
  • Tested on iOS 13.0 and later

Installation

  1. Clone/Download the repo.
  2. Open YouTag.xcodeproj in Xcode.
  3. Configure code signing.
  4. Build & run!

If you are still having trouble, consider this reference

Classes Architecture

  • PlaylistManager
    • NowPlayingView
    • PlaylistLibraryView (inherits LibraryTableView)
      • LibraryCell
    • PlaylistFilters
  • YYTAudioPlayer
  • YYTRangeSlider
    • YYTRangeSliderTrackLayer
  • YYTTagView / YYTFilterTagView
    • YYTTagCell
  • LocalFileManager

Contribution

  • If you have a feature request, open an issue
  • If you found a bug, open an issue
  • If you want to contribute, submit a pull request

Attribution

Libraries

Resources

Graphics

License

YouTag is available under the MIT license and provide its entire source code for free. You can use any part of my code in your app, if you choose. However, attribution is greatly appreciated!

See the LICENSE file for more information.

Comments
  • Downloading from YouTube fails with The operation couldn’t be completed. (domain error 0.)

    Downloading from YouTube fails with The operation couldn’t be completed. (domain error 0.)

    Starting the required downloads for song 2020-07-30 08:52:04.233058-0700 YouTag[29737:2491621] [ProcessSuspension] 0x10aee1f20 - ProcessAssertion::processAssertionWasInvalidated() Downloaded successfully to /var/mobile/Containers/Data/Application/F71219F3-7C6E-40A3-8F20-CE87B717028E/Documents/yt_88sARuFu-tcCIHDCDECBGJFB.jpg Downloaded successfully to /var/mobile/Containers/Data/Application/F71219F3-7C6E-40A3-8F20-CE87B717028E/Documents/yt_88sARuFu-tcCIHDCDECBGJFB.mp4 Extracting audio from video The operation couldn’t be completed. (domain error 0.) Removed file: /var/mobile/Containers/Data/Application/F71219F3-7C6E-40A3-8F20-CE87B717028E/Documents/yt_88sARuFu-tcCIHDCDECBGJFB.mp4 2020-07-30 08:52:29.674086-0700 YouTag[29737:2491621] Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service 2020-07-30 08:52:29.682110-0700 YouTag[29737:2491621] Could not signal service com.apple.WebKit.Networking: 113: Could not find specified service

    bug 
    opened by crazyguyonabike 4
  • "Video Unavailable" error when downloading

    When I tried downloading any video from YouTube, I got a popup saying "Video Unavailable." Upon further digging, it seems like XCDYouTubeKit received an update to resolve this. I fixed it by updating all Swift dependencies by File -> Swift Packages -> Update to Latest Package Versions. Is this something a Pull Request should be submitted for?

    bug dependency update 
    opened by Chitpixel 1
  • Song in the background issues

    Song in the background issues

    I have noticed 3 issues so far with playing songs in the background:

    1. sometimes when switching between songs and stopping and playing the song from the control center, the song progress bar would be in the wrong position but the in-app progress bar still shows the correct song time.
    2. I noticed that when a song that is playing in the background finishes playing, it just stuck there without going to the next song.
    3. I found that in couple of times the song is playing normally in the app but when exiting the app, even though the song resume playing but the song does not appear in the control center.
    bug 
    opened by youstanzr 1
  • Beta new features + Updating dependencies

    Beta new features + Updating dependencies

    In this version, new features were introduced which some are still in the beta phase.This version has also general enhancement on the app. changes are summarized below:

    • Updated dependencies
    • Added setting view controller
    • Previous button songs starts over the song ~ closes #73
    • Changed the tag filter logic from AND to OR when choosing multiple tags (Beta: needs to be an option in the setting to choose AND or OR when choosing multiple tags)
    • Added reordering for playlist songs with long press (Beta: Has issue when dragging a song to above or below the table view)
    • Added import/export backup string in the setting (Alpha phase: Not properly working for import and downloading and enriching with the backup string is not done)
    enhancement tidy dependency update 
    opened by youstanzr 0
  • Previous song button start over

    Previous song button start over

    The previous button for songs in the playlist should start over when clicked and song progress more than 10 seconds. Otherwise it should play the previous song in the playlist (playing previous song is already done, just starto over part has to be added).

    enhancement good first issue 
    opened by youstanzr 0
  • Added rearranging for playlist songs

    Added rearranging for playlist songs

    • Changed filter logic of tags to apply the tags filtration based on songs with tag A OR B instead of songs with tag A AND B- Closes #56
    • Updated Swift Packages
    enhancement 
    opened by youstanzr 0
  • Rearrange what's next songs

    Rearrange what's next songs

    The user should be able to reorder songs in playlist table view controller so he can manually decide what going to play next rather than shuffling and hoping that the song I want would randomly show next.

    enhancement good first issue 
    opened by youstanzr 0
  • Support direct link download + download progress

    Support direct link download + download progress

    • Downloads from direct links for mp3, wav, mp4 formats ~ closes #42
    • Show download progress when downloading ~ closes #9
    • Introduced error handling when error occurs in song download
    • Left aligned tag in YYTTagView
    • Extract ID3 tags for audio files to enrich song dict
    • Sort the tags before showing it
    • Refresh song progress labels when launching the app
    • Added song size label to show in song detail view controller
    • Added song extension and link in song dict
    • Allow app to request HTTP links since some websites redirect to nonsecure link for download
    • Web view searches google directly
    • Web view handles links with not starting with http
    • Show clear button for web view url field
    • Sync song progress bar with the actual progress in some cases
    • Fixed minimum equals to maximum value bug for YYTRangeSlider
    • Updated Readme file for about and features section
    • Updated screenshots
    • Updated the swift packages to latest versions
    • Some UI and UX improvements
    • Tidy up the code
    bug enhancement tidy 
    opened by youstanzr 0
  • Thumbnail from gallery + UI improvements

    Thumbnail from gallery + UI improvements

    • Song thumbnail can be selected from the user's gallery ~ closes #4
    • UI improvements (imageViews masking to bound + removed playlist library table view margins in the main view controller)
    enhancement 
    opened by youstanzr 0
  • Song progress sync + Animate lengthy labels

    Song progress sync + Animate lengthy labels

    • Title label and artist label are now animated when length in both nowPlayingView and LibraryCell ~ closes #40
    • Command center progress in sync even after in-app sliding the song progress slider ~ closes #43
    bug enhancement 
    opened by youstanzr 0
  • Download direct link songs

    Download direct link songs

    The app should be able to download songs from every link whether a video or audio as long it is a direct link If the downloaded file is a video then it would be converted to audio otherwise just saves it as a regular audio file. By this approach, some song properties would be missing, like the id and thumbnail. Therefore, the id would be the full link and the thumbnail would be some default placeholder image.

    enhancement 
    opened by youstanzr 0
  • Testflight

    Testflight

    Hi, first of all, great project, I appreciate you doing all this work and open sourcing it. I wonder if you or anyone has deployed it to Test Flight stage. I know that it wouldn't be allowed on store as a full fledged app, but having to manually install it on every device (at every update) is kinda tiresome.

    I have released some apps and I know that after the first check Apple doesn't really care much and allows you to push updates freely (still talking only about testflight).

    opened by JakubOrsula 0
  • Improve and fix reordering playlist

    Improve and fix reordering playlist

    The drag and drop to reorder of the playlist songs seems to have two bugs which are:

    • Unexpected quick relayout when dragging a cell to top of playlist library view frame when there is a content offset
    • Autoscroll does not work (partial code available and commented)
    bug enhancement good first issue 
    opened by youstanzr 0
  • Cancel downloading a song

    Cancel downloading a song

    There should be a button to cancel the download if the user changes his mind in the middle of the download. This cancel should handle the partially downloaded file and cleans it properly.

    enhancement good first issue 
    opened by youstanzr 0
  • Merge download and done button in Download VC

    Merge download and done button in Download VC

    There is no reason to have separate bar buttons in Download VC for download and done. We can make those as one button and it would be download when the the content type is downloadable and its would be done when it's not downloadable.

    enhancement good first issue 
    opened by youstanzr 0
Owner
EEng, CpEng and Developer 👨🏻‍💻
null
Music Player for iOS which looks & feels like classic player

Prodigal Music Player APP looks and feels like a classic device. Bring back the good old player to life. Screenshots Home Page Album Gallery Home Page

bob.sun 40 Nov 11, 2022
Swift-music - swift-music is a swift package that provides an easy-to-use API for music related developments.

?? swift-music Introduction swift-music is a swift package that provides an easy-to-use API for music related developments. Currently available module

Jin Zhang 4 Feb 8, 2022
:musical_note: A Mac app wrapper for music.youtube.com

A simple Mac app wrapper using WKWebView for YouTube Music that allows YouTube Music to run as a standalone process. Features Media Keys Keyboard shor

Stephen Radford 2.6k Jan 8, 2023
Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture.

Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern ?? and MVVM architecture ?? . Made with love ❤️ by Sameer Nawaz

Sameer Nawaz 120 Jan 4, 2023
MusicPlayer - Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture

Skailer ?? Beautiful Music Player app built using SwiftUI to demonstrate Neumorp

null 23 Dec 10, 2022
Custom iOS music player view

InteractivePlayerView Custom iOS music player view Screen About InteractivePlayerView is an IBDesignableView (Custom View) which has its own progress,

AhmetKeskin 273 Nov 11, 2022
🅿️ PandoraPlayer is a lightweight music player for iOS, based on AudioKit and completely written in Swift.

Made by Applikey Solutions Find this project on Dribbble Table of Contents Purpose Features Supported OS & SDK Versions Installation Usage Demo Releas

Applikey Solutions 1.1k Dec 26, 2022
Music Player NBC With Swift

MusicPlayer Xcode command + shift + Y -> Debug 창 띄우기 command + R -> App 실행 command + . -> App 중지 ctrl + option + commadn + return(enter) -> Assistant

davidyoon891122 0 Nov 27, 2021
Fully functional music player which is written in swift programming language

Music Player Source Code Fully functional Music Player Application Source code that is written in Swift 4.1, Xcode 9.3 Introduction Music Player for i

bpolat 243 Nov 9, 2022
Classical music front-end for Apple Music: iOS app

concertino_ios Concertino is a classical music front-end for Apple Music. It's splitted in several projects. This one provides only the iOS app. (Ther

Open Opus 107 Dec 22, 2022
A pure Swift Spotify Music App in Apple Music style

HBMusic A pure Swift Spotify Music App in Apple Music style. How to run pod inst

haoboxuxu 6 Dec 29, 2021
A small app which fetches and renders jokes from The Internet Chuck Norris Database

This small iOS app fetches and renders jokes from the Chuck Norris Internet Database API.

Chris Williamson 0 Jun 6, 2022
Stem Player - An iOS app that can manipulate song stems.

Stem Player is an iOS app that can manipulate song stems

Thatcher Clough 9 Dec 1, 2022
Stem Player is an iOS app that can manipulate song stems

Stem Player Stem Player is an iOS app that can manipulate song stems. Demo Start Screen Add Song Stem Player How it works Stem Player is an iOS app th

Thatcher Clough 9 Dec 1, 2022
SwiftAudioPlayer - Swift-based audio player with AVAudioEngine as its base

SwiftAudioPlayer Swift-based audio player with AVAudioEngine as its base. Allows for: streaming online audio, playing local file, changing audio speed

null 417 Jan 7, 2023
Player for your DRM-free audiobooks

Please visit our Wiki for our FAQ and guides on how to add new themes and icons to the app. Features Import Using AirDrop from your Mac or iOS device

Tortuga Power 950 Dec 31, 2022
An advanced media player library, simple and reliable

About The SRG Media Player library provides a simple way to add universal audio / video playback support to any application. It provides: A controller

SRG SSR 145 Aug 23, 2022
Multiple Audio Player With Swift

MultipleAudioPlayer I needed to play sequential audio files in a number of places so I made a package. Usage There are 2 inits, one takes filenames fr

chris cieslak 1 Apr 14, 2022
MuVis is a macOS, iOS, iPadOS app for real-time music visualization.

MuVis MuVis is an open-source multiplatform app (using SwiftUI, Swift, and Xcode) for music visualization. It renders informative (and musically usefu

Keith Bromley 7 Oct 10, 2022