如何使用Git API或任何逻辑获取我的Github Repo的社交预览图像链接?

时间:2019-06-20 17:35:02

标签: github github-api

我拥有许多github存储库,通常每周都会添加项目。我正在使用github页面创建自己的网站,因为我只能在Github Pages上托管静态网站,因此我将使用Github API来自动更新我网站上的新项目。但我也想在其中添加预览/示例图像。

我知道有一个名为“社交预览”的选项,可以在其中添加要在社交媒体上显示的存储库图像。

尽管我可以从api.github.com获取我的所有回购信息,但是我却无法获得我的社交媒体预览图像网址。

3 个答案:

答案 0 :(得分:3)

GitHub GraphQL API v4具有用于查询OpenGraph图像URL的字段。它使用回购设置中设置的社交图像,并回退到用户个人资料图像。

Link to docs并搜索“ openGraphImageUrl”。

您可以使用GitHub的GraphQL API explorer(需要登录)进行测试并查询:

public class User{
  private String firstName;
  private String lastName;
}

import javax.persistence.criteria.Predicate;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User,Long>{

  public Page<AppUser> findAll(Specification<AppUser> user,Pageable page);

  public default Page<AppUser> findAll(User user,Pageable page){
    return findAll(search(user),page);
  }

  static Specification<User> search(User entity) {
    return (root, cq, cb) -> {
      //To ensure we start with a predicate
      Predicate predicate = cb.isTrue(cb.literal(true));
      if(entity.getFirstName() != null && !entity.getFirstName().isBlank()) {
        Predicate _predicate = cb.like(cb.lower(root.get("firstName")), "%"+entity.getFirstName().toLowerCase()+"%");
        predicate = cb.and(predicate,_predicate);
      }
      if(entity.getLastName() != null && !entity.getLastName().isBlank()) {
        Predicate _predicate = cb.like(cb.lower(root.get("lastName")), "%"+entity.getLastName().toLowerCase()+"%");
        predicate = cb.and(predicate,_predicate);
      }
      return predicate;
    }
  }
}

答案 1 :(得分:0)

我认为GitHub API无法实现,但是您可以尝试解析存储库页面HTML中的<meta property="og:image" content="[IMAGE-URL]"/>标签。

答案 2 :(得分:0)

我也遇到了同样的问题,但我想采用存储库链接并在其后附加/settings/og-template字符串。 这将返回与您在社交预览中添加的图像相同的图像。因此,遍历存储库的每个链接,添加添加该字符串应返回相应的 Social Preview 试试吧!