A library to receive metadata and Open Graph information from URLs.
Hi, we're Awkward. We were looking for a way to visualize information behind links to present these in our iOS reddit client called Beam. We initially used a server to receive metadata, but the server became quite crowded with calls. We built Ocarina as a solution to that problem. Fallbacks for basic HTML tags and Twitter card information make this metadata fetcher unique. We welcome you to use Ocarina for your own projects.
- Fetching of basic metadata for individual links using the OGP protocol or basic HTML tags (twitter card information also available)
- Memory cache of metadata for each link
- Prefetching a set of links to make views more responsive
- Link information can include: type, title, description, image, image size, favicon, and Apple touch icon
- Drag Ocarina.xcodeproj into your project
- Go to your project
- Select General
- Under "Frameworks, Libraries, and Embedded Content" press + and select Ocarina.framework
- Select Build Settings
- Search for
Other Linker Flags
and add-lxml2
(Make sure you click "All" at the top instead of "Basic" to seeOther Linker Flags
)
let url = URL(string: "https://awkward.co")!
url.oca.fetchInformation(completionHandler: { (information, error) in
if let information = information {
print(String(describing: information.title))
} else if let error = error {
print(String(describing: error))
}
})
OcarinaPrefetcher allows prefetching links into the cache, this allows for the UI to look more responsive.
let urls = [
URL(string: "https://awkward.co")!,
URL(string: "https://facebook.com")!,
URL(string: "https://nytimes.com")!,
URL(string: "https://latimes.com")!
]
let prefetcher = OcarinaPrefetcher(urls: urls, completionHandler: { (errors) in§
print("Done pre-fetching links")
})
For other uses, see the example project
Contributing is easy. If you want to report an error of any kind, please create an issue. If you want to propose a change, a pull request is the right way to go.
Ocarina is available under the MIT license. See the LICENSE file for more info.