# 토픽에서 이미지 URL 검색

**URL:** https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912
**Category:** Support
**Created:** [1월 13, 2025, 6:04오후 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912 "2025-01-13T18:04:22Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![popey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/popey/32/481041_2.png) [@popey](https://meta.discourse.org/u/popey)
#### Post date: [1월 13, 2025, 6:04오후 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/1 "2025-01-13T18:04:23Z")

</div>

나는 [효과적인 콘텐츠 검색 방법](https://meta.discourse.org/t/searching-for-content-effectively/273328)을 검색하고 읽었지만, 답변을 찾지 못했습니다.

저는 관리자 권한이 있는 디스코urs(backend에 접근 권한이 없음)가 있습니다. 누군가가 이미지가 3rd party 호스팅 제공업체(이 경우 Google Docs)에 hotlink된 수많은 주제를 게시했습니다. 그 사람은 회사를 퇴사했고, 이제 모든 해당 이미지 링크가 깨진 상태입니다.

저는 일부 게시물을 수동으로 확인하여 깨진 이미지를 찾아 수정했습니다(인터넷 아카이브에 감사드립니다). 하지만 이는 매우 번거로운 작업입니다. 이미지를 사이트에 다시 업로드하여 함께 수정할 수 있도록, 이러한 깨진 이미지 URL을 포함하는 모든 주제의 목록을 얻고 싶습니다.

**물론 `with:images #tutorials`와 같이 검색을 사용하여 찾을 수 있지만, 이미지 URL 내부에서(예를 들어) `googleusercontent`를 검색할 수는 없습니다. API나 backend `rake` 접근 없이 이것이 가능한가요?**

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [1월 13, 2025, 8:19오후 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/2 "2025-01-13T20:19:09Z")

</div>

관리자는 해당 게시물을 찾는 데이터 탐색기 쿼리를 생성할 수 있습니다.

~~하지만 관리자가 이런 일이 일어나지 않기를 원한다면 ‘이미지를 로컬로 다운로드’ 옵션을 켜 두어야 합니다. 이는 관리자가 스스로 만든 문제이며, 이를 수정하는 것은 실제로는 모더레이터의 역할이 아닙니다.~~

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [1월 13, 2025, 8:19오후 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/3 "2025-01-13T20:19:15Z")

</div>

> [@popey](#):
>
> API나 백엔드 `rake` 접근 없이?

그렇다면 [Data Explorer](https://meta.discourse.org/t/32566?silent=true)도 설치할 수 없다는 뜻인가요? 이 작업에는 [Data Explorer](https://meta.discourse.org/t/32566?silent=true)가 최적의 도구일 텐데 말입니다.

게시물에서 이미지는 어떤 형식으로 표시되나요? 단순히 URL만 표시되나요, 아니면 `[img]`, `<img>`, `![](url)` 등을 사용하나요…?

문제를 좀 더 잘 설명해 드리기 위해 예를 들겠습니다. 게시물이 깨진 이미지 URL을 포함하고 있을 수 있습니다. 예를 들어 `https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg` 같은 경우요.

게시물에는 URL이 포함되어 있습니다.

 ![blogger.googleusercontent.com의 파일로 가리키는 이미지 URL입니다. (AI가 생성한 캡션)](https://global.discourse-cdn.com/meta/original/4X/9/f/0/9f0e9d0b866ce8c1671419633879c8cbe9d4974a.png)

하지만 다음과 같은 내용이 반환됩니다.

```html
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg" target="_blank" rel="noopener" class="onebox">
    <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg" width="" height="" loading="lazy">
</a>

```

이 안에는 검색할 수 있는 문자열이 없습니다.

이런 일이 일어나는 건가요?

---

<div class="post-metadata">

### Author: ![popey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/popey/32/481041_2.png) [@popey](https://meta.discourse.org/u/popey)
#### Post date: [1월 13, 2025, 11:44오후 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/4 "2025-01-13T23:44:31Z")

</div>

맞습니다, 플러그인을 설치할 수 없습니다.

그들은 표준 마크다운 `![](url)` 형식으로 작성되며, URL의 일부로 `googleusercontent`가 포함되어 있습니다. 예를 들어:

```plaintext
![|312x416](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeWkc1cZH8jtNveMhet36oWsLDlUxA-2QadGepx8Uuw1naq6vx5JAd6oyQ2pSmLJkKN97ZnTlV2txMqdNb0QMDCqV0xu-0xOFzePw2hnrNPUNbHoHMWh60KJpP3QkLq2E3Gp0-cKrf3tSWjML8oIQ3I9JQ?key=7YTVKNzk_oQvl95Fd_BKLQ)

```

`googleusercontent`를 검색하면 결과가 0건으로 표시됩니다. 그러나 URL에 `googleusercontent`라는 텍스트가 포함된 이미지 링크가 포함된 게시글은 찾을 수 있습니다. 이것이 버그인지, 아니면 Discourse가 마크다운 형식의 이미지 링크 URL을 검색하지 않는 기능인지는 알 수 없습니다.

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [1월 14, 2025, 12:34오전 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/5 "2025-01-14T00:34:04Z")

</div>

> [@popey](#):
>
> 이것이 버그인지 기능인지는 모르겠지만, Discourse가 마크다운 형식의 이미지 링크 URL을 검색하지 않는 것 같습니다.

Discourse 검색은 HTML을 포함하는 처리된 게시물에 대해 수행된다고 생각합니다.  
검색은 HTML 태그를 무시하며, IMG 태그에는 텍스트가 없으므로 찾고 있는 결과를 반환할 수 없는 것입니다.

API를 사용할 수 없는 이유는 무엇일까요?

사용자의 게시물 중 이미지를 포함하는 항목에 대한 검색 쿼리를 트리거하는 로컬 스크립트를 작성할 수 있습니다. (속도 제한에 도달하지 않도록 충분히 느리게) 결과를 반복 처리하고, 필요하면 [원본 게시물](https://meta.discourse.org/t/how-to-place-a-txt-file-in-my-discourse-root-directory-for-wechat-mini-program-verification/345460/4?u=cocoquark) 콘텐츠를 쿼리하여, 찾고 있는 부분 문자열을 포함하는 게시물을 출력할 수 있습니다.

더 간단한 해결책이 있을 수도 있지만, 다른 선택지가 없다면 이 방법을 택하겠습니다. 구현하기가 꽤 간단합니다.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [1월 14, 2025, 1:10오전 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/6 "2025-01-14T01:10:45Z")

</div>

> [@Canapin](#):
>
> 왜 API를 사용할 수 없나요?

관리자가 그녀에게 API 키를 주지 않기 때문인가요?

그녀가 프로그래머가 아니기 때문인가요?

관리자가 만들어낸 문제인데, 해결할 의지가 없어 보이는 것 같습니다.

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [1월 14, 2025, 1:59오전 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/7 "2025-01-14T01:59:43Z")

</div>

> [@pfaffman](#):
>
> 관리자가 그녀에게 API 키를 주지 않기 때문인가요?

네, 제 제안에 필요한 API 검색 및 게시 엔드포인트에는 API 키가 필요하지 않지 않나요? 제가 착각하고 있는 게 아니라면요.

물론, AI가 좋은 기본 스크립트를 출력할 수 있더라도, 기본적으로는 프로그래밍 지식이 필요할 것입니다.

언급된 문제는 관리자 접근 권한 없이 해결하기에는 확실히 이상적이지 않을 것입니다.

---

<div class="post-metadata">

### Author: ![popey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/popey/32/481041_2.png) [@popey](https://meta.discourse.org/u/popey)
#### Post date: [1월 14, 2025, 7:37오전 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/8 "2025-01-14T07:37:43Z")

</div>

API 키를 요청한 적도 없고(관료주의 때문에), 내가 단순한 검색 쿼리로 인식했던 작업에 API 키가 필요하다는 사실도 몰랐습니다. 또한 이 기능이 콘텐츠의 HTML 태그를 확인하지 않는다는 것도 몰랐습니다. 그래서 이제 상황이 이해가 됩니다. 감사합니다.

이것은 관리자가 만든 문제가 아닙니다. 누군가가 회사를 떠나면서 해당 계정의 Google Docs 접근 권한이 차단되었고, 이로 인해 이미지가 사라지거나 깨진 상황이 관리자와 콘텐츠 작성자 모두에게 알려지지 않았을 뿐입니다.

API 키를 요청하거나, 해당 사이트를 스크래핑하여 문제 있는 게시물을 찾는 로컬 스크립트를 작성할 수 있다는 데 동의합니다. 두 가지 중 하나를 수행하겠습니다.

답변해 주셔서 감사합니다. :pray:

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [1월 14, 2025, 10:58오전 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/9 "2025-01-14T10:58:05Z")

</div>

> [@popey](#):
>
> 저는 API 키를 요청하지 않았습니다(관료주의 때문이죠). 또한 제가 단순한 검색 쿼리로 인식했던 작업을 수행하려면 API 키가 필요하다는 사실도 몰랐습니다.

검색을 수행하려면 API 키가 필요하지 않습니다.

API 키가 있는 것이 문제를 더 쉽게 해결하는 데 도움이 될 수 있을지 확신은 없습니다.

여기 제 게시글(3초에 1개씩)을 메타에서 순환하며 원본 콘텐츠에 `upload://` 부분 문자열이 있는 게시글을 반환하는 :robot: Python 스크립트 예시가 있습니다:

```py
import requests
import time

def fetch_posts(page):
    url = f"https://meta.discourse.org/search.json?q=%40cocoquark&page={page}"
    response = requests.get(url)
    return response.json()

def fetch_post_content(post_id):
    url = f"https://meta.discourse.org/posts/{post_id}/raw"
    response = requests.get(url)
    return response.text

def process_posts():
    page = 1
    while True:
        print(f"page {page}")
        data = fetch_posts(page)
        
        for post in data['posts']:
            content = fetch_post_content(post['id'])
            if "upload://" in content:
                print("https://meta.discourse.org/posts/" + str(post['id']))
            time.sleep(3)        
        
        if len(data['posts']) < 50:
            print("No more results.")
            break
        
        page += 1

if __name__ == " __main__":
    process_posts()

```

> **Output**
>
> ```plaintext
> page 1
> https://meta.discourse.org/posts/1682015
> https://meta.discourse.org/posts/1677389
> https://meta.discourse.org/posts/1679834
> https://meta.discourse.org/posts/1678673
> https://meta.discourse.org/posts/1679833
> https://meta.discourse.org/posts/1678629
> https://meta.discourse.org/posts/1678229
> https://meta.discourse.org/posts/1676531
> https://meta.discourse.org/posts/1674982
> https://meta.discourse.org/posts/1670250
> https://meta.discourse.org/posts/1674421
> https://meta.discourse.org/posts/1671959
> https://meta.discourse.org/posts/1674355
> https://meta.discourse.org/posts/1673357
> https://meta.discourse.org/posts/1669322
> https://meta.discourse.org/posts/1665519
> page 2
> https://meta.discourse.org/posts/1674153
> https://meta.discourse.org/posts/1670613
> https://meta.discourse.org/posts/1666606
> https://meta.discourse.org/posts/1674992
> https://meta.discourse.org/posts/1672811
> https://meta.discourse.org/posts/1672050
> https://meta.discourse.org/posts/1686260
> https://meta.discourse.org/posts/1684497
> https://meta.discourse.org/posts/1680692
> https://meta.discourse.org/posts/1675012
> page 3
> No more results.
> 
> ```

---

<div class="post-metadata">

### Author: ![popey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/popey/32/481041_2.png) [@popey](https://meta.discourse.org/u/popey)
#### Post date: [1월 14, 2025, 2:14오후 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/10 "2025-01-14T14:14:04Z")

</div>

정말 감사합니다, @Canapin!  
저는 파이썬을 정말 좋아합니다 :pray:  
당신의 도움 덕분에 깨진 이미지가 있는 모든 스레드를 이제 모두 파악했습니다.  
정말 감사합니다.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [1월 14, 2025, 2:50오후 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/11 "2025-01-14T14:50:13Z")

</div>

> [@popey](#):
>
> 제가 “단순한” 검색 쿼리라고 생각했던 작업을 위해 그것이 필요하다는 것을 몰랐습니다.

단순한 검색을 수행하는 데에는 API 키가 필요하지 않지만, 단순한 검색을 위해 “API를 사용하는” 것이 어떤 의미가 있는지 모르겠습니다.

> [@popey](#):
>
> 관리자가 만든 문제가 아닙니다.

아마도 제가 문제를 잘못 이해한 것 같습니다. `download remote images to local`(원격 이미지 로컬 다운로드) 옵션이 켜져 있었다면 발생하지 않았을 문제처럼 들렸고, 이 옵션은 기본적으로 켜져 있습니다. 하지만 관리자가 어떤 관료적인 이유로 이 옵션을 꺼두었을 가능성도 있습니다. 데이터 탐색기 플러그인이나 Rails에 대한 접근 권한이 없으면 문제를 해결하는 것이 불필요하게 어려울 것 같습니다.

> [@popey](#):
>
> 당신의 도움으로 이제 깨진 이미지가 있는 모든 스레드를 확인했습니다.

대박! 정말 대단하시네요!

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2월 13, 2025, 2:50오후 UTC](https://meta.discourse.org/t/searching-for-image-urls-in-topics/346912/12 "2025-02-13T14:50:42Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
