Install ffmpeg
brew install ffmpeg
Download file through url, like this:
ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "http://url-file.domain.m3u8" -c copy video.mp4
Install ffmpeg
brew install ffmpeg
Download file through url, like this:
ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "http://url-file.domain.m3u8" -c copy video.mp4
| # The trick is to link the DeviceSupport folder from the beta to the stable version. | |
| # sudo needed if you run the Mac App Store version. Always download the dmg instead... you'll thank me later :) | |
| # Support iOS 15 devices (Xcode 13.0) with Xcode 12.5: | |
| sudo ln -s /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/15.0 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport | |
| # Then restart Xcode and reconnect your devices. You will need to do that for every beta of future iOS versions | |
| # (A similar approach works for older versions too, just change the version number after DeviceSupport) |
| extension Future { | |
| func then<U>(f: T -> Future<U>) -> Future<U> { | |
| let promise = Promise<U>() | |
| self.onFail { promise.fail() }.onSuccess { | |
| f($0).onFail { promise.fail() }.onSuccess { promise.resolve($0) } | |
| } | |
| return promise.future | |
| } | |
| } |
| import Foundation | |
| public struct Future<T> { | |
| public let onFail: (() -> ()) -> Future<T> | |
| public let onSuccess: (T -> ()) -> Future<T> | |
| } | |
| public class Promise<T> { | |
| private var onFails = [] as [() -> ()] | |
| private var onSuccesses = [] as [T -> ()] |
| //download.js v3.0, by dandavis; 2008-2014. [CCBY2] see http://danml.com/download.html for tests/usage | |
| // v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime | |
| // v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs | |
| // v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support | |
| // data can be a string, Blob, File, or dataURL | |
| //: [Previous](@previous) | |
| import Foundation | |
| // One per function | |
| final class Stub { | |
| let name: String | |
| let cmp: (AnyCall, AnyCall) -> Bool | |
| init(name: String, cmp: (AnyCall, AnyCall) -> Bool) { | |
| self.name = name |
| ; ModuleID = 'main.m' | |
| target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" | |
| target triple = "x86_64-apple-macosx10.11.0" | |
| %0 = type opaque | |
| %struct._class_t = type { %struct._class_t*, %struct._class_t*, %struct._objc_cache*, i8* (i8*, i8*)**, %struct._class_ro_t* } | |
| %struct._objc_cache = type opaque | |
| %struct._class_ro_t = type { i32, i32, i32, i8*, i8*, %struct.__method_list_t*, %struct._objc_protocol_list*, %struct._ivar_list_t*, i8*, %struct._prop_list_t* } | |
| %struct.__method_list_t = type { i32, i32, [0 x %struct._objc_method] } | |
| %struct._objc_method = type { i8*, i8*, i8* } |
| //: Playground - noun: a place where people can play | |
| import UIKit | |
| // Simple struct to be fullfilled from JSON | |
| struct User { | |
| let name: String | |
| let age: Int | |
| } |
| //: Playground - noun: a place where people can play | |
| import UIKit | |
| var str = "Hello, playground" | |
| class ServiceLocator { | |
| private var registry : [String: Any] = [:] | |
| func registerService<T>(service: T) { |
| class Regex { | |
| let pattern: String | |
| let options: NSRegularExpressionOptions! | |
| private var matcher: NSRegularExpression { | |
| return NSRegularExpression(pattern: self.pattern, options: nil, error: nil) | |
| } | |
| required init(pattern: String, options: NSRegularExpressionOptions = nil) { | |
| self.pattern = pattern |