원박스 이미지를 로컬에서 가져오기

안녕하세요,

저는 많은 포럼 사용자가 이용하는 웹사이트의 onebox 기능을 확장하는 플러그인을 만들었습니다.

이 onebox는 해당 웹사이트에서 가져온 이미지를 표시합니다. 원본 웹사이트에서 이미지가 변경될 때 onebox가 깨지지 않도록 이미지를 로컬에 저장할 수 있는 방법이 있을까요?

포럼에서는 이러한 기능이 제공되는 것을 확인했지만, 제가 만든 플러그인에서 해당 기능에 접근하는 방법을 찾지 못하고 있습니다.

미리 감사드립니다! :smiley:


PS: 여기에는 제가 만든 플러그인의 GitHub 저장소가 있습니다. 코드에 대한 피드백을 주시면 감사하겠습니다.

(NodeJS 백엔드 배경에서 Ruby로 코딩을 처음 해보는 것입니다).

Onebox와 Discourse는 추가 플러그인 없이 이 기능을 기본적으로 지원합니다.

대상 웹사이트가 적절한 og 메타 태그를 생성하도록 확인하는 것만 하면 됩니다. 이 기능이 작동하려면 Discourse가 아니라 대상 웹사이트를 수정해야 할 수 있습니다.

예:

BBC 웹사이트는 각 페이지에 대해 이러한 메타 태그를 생성합니다. Discourse와 Onebox는 site_name, image, description, title을 가져와서 원박스(Onebox)를 생성합니다.

대상 웹사이트가 해당 표준을 따르고 있는지 확인하기만 하면 다른 작업은 필요하지 않을 것입니다.

이렇게 하는 것이 합리적인 이유는, 이렇게 하면 Facebook과 같은 다른 플랫폼에서의 모든 미리보기에서도 웹사이트가 커버되므로 때문입니다.

물론 이 웹사이트에 대한 통제권이나 영향력을 가지고 있다고 가정하고 있지만, 이는 큰 가정이 될 수 있습니다!

이것이 불가능하다면, Onebox에서 해당 웹사이트의 고유성을 인식하고 적절한 메타데이터를 크롤링할 수 있는 맞춤형 엔진을 만들어야 합니다. 이 작업을 위한 적절한 도구는 Nokogiri 라이브러리입니다.

그렇지 않아요 :sweat_smile:

안타깝게도 그렇지 않습니다 :confused: 게다가, 저는 원박스(onebox) 뷰를 약간 커스터마이징하고 싶습니다. 기본 엔진을 사용한다면 불가능할 텐데요.

하지만…
저는 이미 원박스 확장을 개발했습니다. 모든 가져오기(fetching) 작업을 수행하며 잘 작동합니다!

질문은 이렇습니다: 가져온 이미지가 로컬에 저장되도록 어떻게 확신할 수 있을까요? 플러그인에 추가 코드를 작성해야 한다고 생각합니다.

다음과 같은 방향을 검토해 볼 수 있습니다:

Cooked Post Processor가 이를 수행하기 위해 작업을 큐에 추가합니다. 관련 코드는 다음을 참조하세요:

작업(jobs) 코드는 여기에 있습니다: discourse/app/jobs/regular/pull_hotlinked_images.rb at e98c7b15d6ce864f1b5e83b6881700eaa808bdd1 · discourse/discourse · GitHub

핫링크된 이미지를 게시글로 성공적으로 반환했다면, 해당 이미지가 기준을 충족하고 외부 이미지 업로드를 보장하는 설정이 되어 있다면 이 방법은 작동해야 합니다.

image

기준은 여기에 있습니다: discourse/lib/cooked_post_processor.rb at e98c7b15d6ce864f1b5e83b6881700eaa808bdd1 · discourse/discourse · GitHub

아직 작동하지 않지만 원박스(onebox)에서 외부 이미지를 성공적으로 표시하고 있다면, 제 추측으로는 해당 이미지가 업로드 기준을 충족하지 못하기 때문일 것입니다.