Skip to content

Preserve your favorite podcast episodes forever. iOS app made with Swift, SwiftUI and Combine.

License

Notifications You must be signed in to change notification settings

rafaelclaycon/TheLibraryIsOpen

Repository files navigation

The Library Is Open! 💃🏼

A GIF of RuPaul Charles saying: Because reading is what? Fundamental!

Did you ever listen to a show and loved it so much that you wished you could keep it forever?

Podcasts started as an open directory of shows and TLIO is meant as a celebration of that. Download all episodes of your favorite podcasts before their public feed is taken private or stops working.

🌟 Star this repo! ↗️

Wanna try my Alpha out? Just follow this link on your iPhone or iPad (TestFlight app from Apple required).

For up-to-date news, follow me on social media: Twitter / Mastodon

A GIF showing the main app flow, from the user choosing to add a new show to the podcast episodes being downloaded and exported.

Features

Main features (MVP)

  • Get podcast feed URL from an Apple Podcasts link
  • Get episode list
  • Download episodes
  • Store downloaded episodes in a ZIP file
  • Upload the zipped file to iCloud Drive (other cloud providers - e. g., Google Drive - supported through their Share Sheet extension)

The extra mile

  • Get podcast feed URL from third-party players' share link (Castro, Overcast and Pocket Casts supported)
  • Give specific Get Link instructions based on the podcast player the archiver uses
  • Show download progress for each episode
  • Upload the zipped file to Google Drive
  • Deleting podcasts from the archive
  • Let the user cancel the whole download with a single click
  • Persist the archive between runs nicely
  • Show user full history of exports and downloads
  • Keep a big download going in the background
  • Let the user check for new episodes after adding a podcast to the archive

Backlog

Here's this project's backlog: https://trello.com/b/RvZ82ZLx

Supported languages

  • 🇺🇸 English
  • 🇧🇷 Brazilian Portuguese (native)
  • 🇨🇦 Canadian French (not perfect, open to contributions :)
  • 🇲🇽 Spanish (very basic at the moment)

To use a different language, either:

  1. Change the simulator language in Settings or;
  2. In Xcode, go to TheLibraryIsOpen (target name at the top) > Edit Scheme... > Run (sidebar) > Options > App Language.

How to run

Prerequisites

  • iOS 15.0+
  • Xcode 13+

Project

  1. Clone the repo and open TheLibraryIsOpen.xcodeproj on Xcode.
  2. Wait for Xcode to download all dependencies (Swift packages).
  3. Use ⌘ + B to build and ⌘ + R to run the app on the Simulator.

Unit tests

  1. Use any of Xcode's iOS simulators.
  2. In Settings, go to General > Language & Region and set iPhone Language to English and Region to United States.
  3. Delete the app from the sim to delete any data that might have been left behind from a previous run.
  4. In Xcode, press ⌘ + U to run all tests (or ^ + ⌥ + ⌘ + U to run just the test where the text cursor is).

Known issues

  1. The current main flow (from tapping Add Podcast to viewing the podcast episodes) has a visual bug in the Get Episodes and Podcast Preview screens. To fix it, go to Settings and turn the Skip Link Tutorial option on.
  2. Unit tests test_getEpisodes_whenDoesNotHaveLocalCache_shouldReturnCorrectEpisodeCount and test_getEpisodes_whenHasLocalCache_shouldReturnCorrectEpisodeCount are known to be broken and will be fixed in a later date.

About this repo

Rafael C. Schmitt – @mitt_rafael@toot.wales

Distributed under the MIT license. See LICENSE for more information.

About

Preserve your favorite podcast episodes forever. iOS app made with Swift, SwiftUI and Combine.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages