{"id":24096388,"url":"https://github.com/t-osawa-009/assetdownloadwrapper","last_synced_at":"2025-10-06T16:59:54.642Z","repository":{"id":56902424,"uuid":"257847561","full_name":"t-osawa-009/AssetDownloadWrapper","owner":"t-osawa-009","description":"iOS AVAssetDownloadURLSession Wrapper","archived":false,"fork":false,"pushed_at":"2020-08-02T07:04:51.000Z","size":81,"stargazers_count":11,"open_issues_count":1,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-06T16:59:54.426Z","etag":null,"topics":["avasset","avassetdownloadurlsession","cache","ios","movie","swift"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/t-osawa-009.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-22T09:02:02.000Z","updated_at":"2025-02-21T21:40:43.000Z","dependencies_parsed_at":"2022-08-21T01:50:43.494Z","dependency_job_id":null,"html_url":"https://github.com/t-osawa-009/AssetDownloadWrapper","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/t-osawa-009/AssetDownloadWrapper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t-osawa-009%2FAssetDownloadWrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t-osawa-009%2FAssetDownloadWrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t-osawa-009%2FAssetDownloadWrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t-osawa-009%2FAssetDownloadWrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/t-osawa-009","download_url":"https://codeload.github.com/t-osawa-009/AssetDownloadWrapper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t-osawa-009%2FAssetDownloadWrapper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278646773,"owners_count":26021511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avasset","avassetdownloadurlsession","cache","ios","movie","swift"],"created_at":"2025-01-10T12:31:50.332Z","updated_at":"2025-10-06T16:59:54.612Z","avatar_url":"https://github.com/t-osawa-009.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AssetDownloadWrapper\nA wrapper to download videos using AVAssetDownloadURLSession.\n\n## About\nThis is the library that wraps the function of AVAssetDownloadURLSession.\nDownload the video and cache it to local storage.\n## How to implement\n\n- Download the video\n```swift\n    let url = URL(string: \"https://mnmedias.api.telequebec.tv/m3u8/29880.m3u8\")!\n    let urlAsset = AVURLAsset(url: url)\n    let asset = AssetWrapper(urlAsset: urlAsset, assetTitle: \"hoge\")\n    AssetDownloadManager.shared.downloadStream(for: asset) { (result) in\n      switch result {\n        case .success(let response):\n        print(response)\n        case .failure(let error):\n        print(error)\n      }\n    }\n```\n\n- Load local cache\n```swift\n    guard let arg = AssetDownloadManager.shared.retrieveLocalAsset(with: \"hoge\") else {\n         return\n     }\n     let vc = AVPlayerViewController()\n     let item = AVPlayerItem(asset: arg.0.urlAsset)\n     player.replaceCurrentItem(with: item)\n     vc.player = player\n     present(vc, animated: true, completion: nil)\n```\n\n## Requirements\n- Xcode 11.4\n- Swift 5.1\n\n## Installation\n### [CocoaPods](https://guides.cocoapods.org/using/using-cocoapods.html)\nAdd the pod AssetDownloadWrapper\n```ruby\n# Podfile\nuse_frameworks!\ntarget 'YOUR_TARGET_NAME' do\n    pod 'AssetDownloadWrapper'\nend\n```\n\n```sh\n$ pod install\n```\n\n### [Carthage](https://github.com/Carthage/Carthage)\nAdd this to Cartfile\n```\ngit \"git@github.com:t-osawa-009/AssetDownloadWrapper.git\"\n```\n\n```sh\n$ carthage update\n```\n\n## Reference Resources\n- https://blog.foresta.me/posts/swift_hls_download_bug/\n- https://developer.apple.com/documentation/avfoundation/media_assets_playback_and_editing/using_avfoundation_to_play_and_persist_http_live_streams\n- https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/MediaPlaybackGuide/Contents/Resources/en.lproj/HTTPLiveStreaming/HTTPLiveStreaming.html#//apple_ref/doc/uid/TP40016757-CH11-SW1\n\n## CONTRIBUTING\nThere's still a lot of work to do here. We would love to see you involved. You can find all the details on how to get started in the [Contributing Guide](https://github.com/t-osawa-009/AssetDownloadWrapper/blob/master/CONTRIBUTING.md).\n\n## License\nAssetDownloadWrapper is released under the MIT license. See LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft-osawa-009%2Fassetdownloadwrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ft-osawa-009%2Fassetdownloadwrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft-osawa-009%2Fassetdownloadwrapper/lists"}