【发布时间】:2021-07-03 18:40:19
【问题描述】:
【问题讨论】:
-
你已经尝试了什么?在提出问题之前,您是否尝试过自己寻找这个?
-
如果您有原始图像,您可以随时创建缩略图; YouTube 基本上通过它的 API 提供小缩略图,所以如果你使用他们的 API,你一定已经看到了。
标签: ios objective-c
【问题讨论】:
标签: ios objective-c
我会解析 html 内容并尝试找到指向 .png、jpg 等文件的链接。然后检查分辨率以排除非常小的图像或在 css 中指定为背景的图像。结果,用户将获得一个过滤图像列表,就像您附加的屏幕截图一样。
作为解析器,您可以使用https://github.com/nolanw/HTMLReader
【讨论】:
像 Facebook 这样的页面使用来自网页的 OpenGraph 信息来生成链接的缩略图。 OpenGraph 属性描述网页上呈现的对象。 OpenGraph 数据存储在元标记中,如 A.Krasniqi 的回答所示:
<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
<meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
这些元标记的前缀为 og。
基本的 OpenGraph 属性包括:
其他标签包括:
所有 OpenGraph 参数都记录在案 here
要解析这些,您可以使用NSXMLParser,但其他人已经实现了 OpenGraph 解析器。 (只需谷歌“iOS OpenGraph 解析器”)
【讨论】:
我终于用 MTDURLPreview on github 做到了
用法
#import "MTDURLPreview.h"
[MTDURLPreview loadPreviewWithURL:@"url here" completion:^(MTDURLPreview *preview, NSError *error) {
NSLog(@"Image URL : %d", [preview.imageURL isEqual:[NSNull null]]);
NSLog(@"Content : %@", preview.content);
NSLog(@"Title : %@", preview.title);
}];
希望您的问题得到解决。
【讨论】:
更新:对于新的 iOS 开发者,您可以使用: https://github.com/itsmeichigo/URLPreview
使用来自 facebook 的 opengraph,然后解析它
<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
<meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
【讨论】:
这是我使用的最佳解决方案,我得到了很好的结果。
源码:https://github.com/keshiim/WBGLinkPreview
Cocoapod 名称:pod "WBGLinkPreview"
我在课堂上使用了如下代码:
#import <WBGLinkPreview/WBGLinkPreview.h>
@interface ViewController ()
{
WBGLinkPreview *urlPreview;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
urlPreview = [[WBGLinkPreview alloc] init];
[urlPreview previewWithText:@"https://www.youtube.com/watch?v=HHq_ChsWtb0"
onSuccess:^(NSDictionary *result) {
NSLog(@"Final Output:: %@", result);
} onError:^(WBGPreviewError *error) {
NSLog(@"%@", error.description);
}];
}
【讨论】: