在电报即时视图中将属性"data-original"替换为 src



我需要使用电报模板代码将"data original"属性替换为"src"。

我正在运行一个电报即时视图模板错误。

Image source not found: src attribute expected in <img data-plugin-lazyload="" data-plugin-options="{'effect' : 'fadeIn'}" data-original="https://site.com.br/thumbs/chamadas/xbox.jpg" alt="PS5 e Xbox Series X podem atrasar por causa do Coronavírus, estima analista" title="PS5 e Xbox Series X podem atrasar por causa do Coronavírus, estima analista"/>

原始站点在所有图像中使用一个属性"dataoriginal"来代替"src"属性,因为懒惰加载脚本。我试图从标记中提取原始数据,并用原始数据值替换为src属性。

我想我可以使用获得img节点

//section[has-class("section")]//img

如果我使用,我可以获得数据原始节点

//section[has-class("section")]//img/@data-original

调试结果:

-------
Debug 6 nodes:
[0]:  data-original="https://site.com.br/thumbs/chamadas/xbox.jpg"
[1]:  data-original="https://site.com.br/uploads/2020/03/15/63185/consoles-next-gen-aberta.jpg"
[2]:  data-original="https://site.com.br/thumbs/chamadas/B550chamada.jpg"
[3]:  data-original="https://site.com.br/thumbs/chamadas/nvidia-rtx-ampere-chamada.jpg"
[4]:  data-original="https://site.com.br/thumbs/chamadas/amd-zen-3-zen-4-roadmap-0.jpg"
[5]:  data-original="https://site.com.br/thumbs/chamadas/xbox-srs-x-chamada1.jpg"

我尝试了很多组合都没有成功,比如:

@replace("data-original", "src"): $body//img/@data-original

最接近的尝试是:

@replace("data-original", "src"): //section[has-class("section")][.//img]

但在最后一段代码中,它删除了所有img标记,所有文本都放在一行<p>中,因此所有文章只有一个段落行,包含所有内容,没有图像。

理论上"简单"(不简单(将"dataoriginal"属性替换为"src"将完成模板工作。

参考资料可能会有所帮助:

#1即时视图参考

#2即时视图参考

#3即时查看文档

#4介质即时视图模板

考虑使用以下代码来解决问题:

@set_attr(src, @data-original): //div[has-class("section")]//img

如果你的img中有srcset属性,你也可以使用下面的代码,电报将自动使用高分辨率图像:

# Use Instant View version 2.1
~version: "2.1"
# Disable Lazyload
@set_attrs(src, @data-original, srcset, @data-srcset): //div[has-class("entry-content")]//img

我使用了以下snnipet:

# first of all, site use an attribute object to renderize lazy loaded images. Let convert them to img src attrbute so we cna ride of src not set error
<abc>: //div[has-class("news__text")]//img # Find all images in content div class and convert it to <abc>
@set_attr(src, ./@data-original) # Set src attribute from data-original
$imagetag # var to current <abc>
<img>: //div[has-class("news__text")]//abc # Find abc and convert it to <img> again with seted src

全部基于@haacki47的回复:https://stackoverflow.com/questions/54786100/extract-create-and-append-using-xpath-and-telegram-instant-view

相关内容

最新更新