我如何告诉 Reddit 忽略我的缩略图徽标?

Posted

技术标签:

【中文标题】我如何告诉 Reddit 忽略我的缩略图徽标?【英文标题】:How can I tell Reddit to ignore my Logo for the Thumbnail? 【发布时间】:2017-10-24 14:18:24 【问题描述】:

当用户分享我网站上的内容时,缩略图中出现的图像通常是网站的徽标,而不是图像本身。

如何让 reddit 忽略该徽标?

我搜索了很多并找到了有关如何指定 reddit 应使用 og image 元标记的图像的答案,但我不能这样做,因为我的网站是 UGC 的一部分,这意味着我不知道什么是每张图片的绝对网址。

例如:reddit not pulling scraping image on link post

编辑:

这似乎对我不起作用。对你有用吗?

<script>
function img_find() 
    var imgs = document.getElementsByTagName("img");
    var imgSrcs = [];

    for (var i = 0; i < imgs.length; i++) 
        imgSrcs.push(imgs[i].src);
    

    return imgSrcs;
var result = img_find();
$("meta[property='og:image']").attr("content", result[1]);
</script>

【问题讨论】:

我不完全理解你的问题。如果您不知道您的图片网址/要为 reddit 指定什么图片,reddit 怎么知道? @kn 我同意我可能不清楚。当用户将图像上传到我的网站时,它的名称会随机生成一长串字母数字。所以绝对网址类似于:website.com/page/fhj2kdshf4aje3dshfla8sdhfsjdfhj2kdshf4aje3dshfla8sdhfsjd 是图像。我的问题是我不知道如何指定 meta 标签 og:image 使其指向当前图像的绝对 url :/ window.href 给我 website.com/page/ ,但我如何获取图像名字? @kn 这就是为什么我想知道是否没有办法简单地告诉刮板忽略徽标,因为上传的图像是网站上唯一的其他图像。 @MrSanchez 更新了这个想法的问题。我不确定它是否有效。但是,除非您有可行的解决方案,否则取消删除您的问题不会有用 XD 这确实可行,干得好^-^ 【参考方案1】:

你的代码

$("meta[property='og:image']").attr("content", result[1]);

几乎是解决方案。让我们做最后一步:

$("meta[property='og:image']")
    .attr("content", $('css_selector_of_the_img')[0].src);

那么css_selector_of_the_img 是什么?由于您有网站徽标,我假设您的图像周围有一些 html。可能图像具有类名或放置在容器中,例如css_selector_of_the_img 可以是 div.content imgimg.uploaded 等等。并扔掉你的 img_find 函数 J。

【讨论】:

【参考方案2】:

我找到了解决方案。

property="og:image" 添加到我希望选中的&lt;img&gt; 中。

【讨论】:

根据我对 reddit 系统工作方式的理解,这不应该是正确的。我将根据我的发现检查并发布关于为什么它有效或为什么不应该使用它的附加答案。 @Pokechu22 太棒了!让我们看看你发现了什么! 好的,我看了一下,我看不出为什么这行得通。 The scraping code 仅在 &lt;meta&gt; 标签上查找 og:image(事实上,据我所知,根据 OGP 文档,这是唯一有效的地方)。所以这个不应该是有效的,而且它工作的事实很奇怪。需要注意的一件事:它可能会退回到“未指定图像”代码,在这种情况下,reddit 会猜测图像(算法here)。 [继续] [继续] 这可能是因为您现在很幸运能够选择您想要的图像。通过 javascript 设置图像是行不通的,因为抓取工具只提取 HTML;之后它不会评估 javascript(您必须设置图像服务器端)。如果您想反对选择您网站的徽标,您可以在徽标的文件名中输入“sprite”(这会导致 reddit 将其视为图像较小,因此更喜欢用户图像)。我不会推荐这个,但这是一个选择。 @Pokechu22 你能给我你关于“精灵”的参考吗?【参考方案3】:

@Kosh Very 回答的重点是使用 jQuery 为页面中的第一张图片设置og:image 标签,但这取决于 reddit 的爬虫能力,即爬虫是否可以运行 javascript。

另一种解决方案是使用正则表达式解析 UGC 中的图像,并将其用作页面生成器中的 og:image url。

希望有帮助。

【讨论】:

你知道我不知道该怎么做吗? :D 嗯,您是否建立了自己的网站?还是您使用了开源的?我假设你建立自己的:D 我自己构建了。 4000 行代码。但是“使用正则表达式解析 UGC 中的图像”对我来说毫无意义^^你能解释一下吗?我应该在哪里使用正则表达式? UGC 是指用户生成的内容,对吗?只是检查我们是否在谈论同一件事。如果是这样,那么您有 2 个选项,1 是当用户保存他们的内容时,或者 2,当您向公众展示他们的内容时。至于如何部分,这取决于您喜欢的编程语言,只需搜索您喜欢的语言即可。例如:find image url using regex for python

以上是关于我如何告诉 Reddit 忽略我的缩略图徽标?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的文件夹中获取缩略图?

带有简单缩略图的衬垫合身

在iphone中创建pdf缩略图

Python进阶:如何实现用 Python代码生成视频的缩略图

如何使用 opencv-python 创建缩略图?

LinkedIn 分享文章缩略图