我有一个gist原始版本的URL,但它并不总是更新。说我得到原始链接
https://gist.githubusercontent.com/username/27610b513177a762470ac95160c050fd/raw/f567a5ade06c9b8e7c101fe62fa3a4cac07e5bd7/test%2520gist
但是我改变了那个要点的内容,URL会改变,第一个链接WONT包含更改。
https://gist.githubusercontent.com/username/27610b513177a762470ac95160c050fd/raw/60e3b421faa7e4e9ea6cd27e4a6ffd4809d3d40e/test%2520gist
如何制作永久包含所有更改的1 PERMANENT链接,而不仅仅是该链接的修订?
我已尝试使用ID,只是id / raw,但ID甚至不像其他人所说的那样,它更像哈希,有人可以帮忙吗?
更新
我已经尝试了[建议的答案],但它仍然导致最后一次修订,它是否有延迟更新?
答案 0 :(得分:7)
ID甚至不像其他人所说的那样,它更像是一个哈希
想象一下,你想在某处托管一个json配置文件。您也不想自己托管,但更愿意依赖稳定的提供商。
您可以使用gist.github.com完成此项工作。
例如this gist。您可以看到有2个修订版。
如果单击raw,则会获得当前版本
- 版本1 https://gist.githubusercontent.com/mren/17da9837f691acd2e8ae/raw/9e26dfeeb6e641a33dae4961196235bdb965b21b/config.json
- 第2版https://gist.githubusercontent.com/mren/17da9837f691acd2e8ae/raw/afd0087d1b230bbc663ae4f4a1e9a1bc426d7eef/config.json
在每个版本中,您会看到两个哈希值。
- 两个哈希值中的一个哈希值相等。这是要点的哈希
- 另一个哈希是提交的哈希值。
如果删除最后一个,则原始文件始终指向最新版本
https://gist.githubusercontent.com/mren/17da9837f691acd2e8ae/raw/config.json
答案 1 :(得分:2)
重新启动此链接以澄清混淆。
是的,VonC的答案是对的,
如果删除最后一个,原始文件始终指向最新版本
和,
永久URL ...将始终“包含所有更改”
但是,它可能需要一段时间才能更新。
今天,我使用 bit.ly 来缩短我的永久网址,但找到它总是指向我设置短网址的最后/初始版本。所以我必须放弃并尝试不同的URL缩短服务。只有在尝试了两三个之后我才意识到问题不在于URL缩短服务端而是要点永久URL端 - 通过直接访问gist永久URL确认,并且 -
今天更新一段时间确实需要超过两三分钟,当我不断更改它以查看错误时。但它最终也会改为最新版本。通过重新访问我的bit.ly缩短的URL确认。
答案 2 :(得分:1)
对于那些可能需要程序化解决方案的人(例如在网页抓取期间动态编辑/更新要点)...
截至 2021 年 5 月,避免与上次提交的缓存相关的延迟的解决方法是使用与 UI 的“原始”按钮相关联的 URL,如下所示。
感兴趣的 URL 将采用以下格式:https://gist.github.com/{user}/{gist_hash}/raw/{commit_hash}/{filename}
如果您解析与此按钮关联的链接的 DOM,您可以绕过通常与使用以下格式的链接关联的 2-3 分钟延迟:https://gist.github.com/{user}/{gist_hash}/raw
在 Python 中检索此链接的示例代码如下所示:
# Python 3.9.1
import requests
from bs4 import BeautifulSoup
repo_url = f'https://gist.githubusercontent.com/{user}/{gist_hash}'
html = requests.get(repo_url).text
soup = BeautifulSoup(html, 'html.parser')
button = soup.find_all('div', class_='file-actions flex-order-2 pt-0') # Finds "Raw" button
raw_url = f"https://gist.github.com/{button[0].contents[1].attrs['href'][1:]}"
> print(raw_url)
'https://gist.githubusercontent.com/{user}/{gist_hash}/raw/{commit_hash}/{filename}'