トピック内の画像URLを検索

効果的なコンテンツの検索を検索して読みましたが、答えが見つかりませんでした。

私はモデレーター(バックエンドへのアクセス権なし)を務めるDiscourseを持っています。誰かが、サードパーティのホスティングプロバイダー(この場合はGoogleドキュメント)に画像をホットリンクした多数のトピックを投稿しました。彼らは会社を去り、それらの画像リンクはすべて壊れてしまいました。

壊れた画像を見つけて修正するために(インターネットアーカイブのおかげで)、一部の投稿を手動で確認することはできます(そして実際にそうしました)。しかし、それは骨の折れる作業です。これらの壊れた画像URLを含むすべてのトピックのリストを取得したいと考えています。これにより、画像をサイトに再アップロードすることで、それらを共同で修正できます。

もちろん、with:images #tutorials を検索するために検索を使用できますが、画像URL内で(たとえば)googleusercontent を検索することはできません。APIまたはバックエンドの rake アクセスなしで可能ですか?

「いいね!」 2

管理者は、それらの投稿を見つけるデータエクスプローラークエリを作成できます。

しかし、管理者がこれを望まない場合、ローカルへの画像のダウンロードをオンにする必要があります。これは彼らが作り出した問題であり、モデレーターがそれを修正する仕事ではありません。

「いいね!」 3

データエクスプローラーもインストールできないということですか?それがこのための選択ツールになるでしょう。

投稿内の画像はどのようにフォーマットされていますか?プレーンなURLのみ、[img]<img>![](url)…を使用しますか?

問題点を説明するために。投稿には壊れた画像URLが含まれている可能性があります。例えば https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg

投稿にはURLが含まれています。

しかし、次のようなものが返されます。

<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>

検索可能な文字列が含まれていません。

それが起こることですか?

「いいね!」 3

はい、プラグインをインストールできません。

これらは標準のMarkdown ![](url) を使用してフォーマットされており、googleusercontent がURLの一部となっています。例:

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

googleusercontent で検索しても、結果は0件です。しかし、googleusercontent というテキストを含むURLで参照されている画像を含む投稿は見つかります。これがバグなのか、それともDiscourseがMarkdown形式の画像リンクのURLを検索しない機能なのかはわかりません。

「いいね!」 1

Discourseの検索は、HTMLを含む処理済みの投稿に対して実行されると私は考えています。
検索はHTMLタグを無視し、IMGタグにはテキストが含まれていないため、探しているものを返すことは不可能です。

APIを使用できないのはなぜですか?

ローカルスクリプトを作成して、画像を含むユーザーの投稿を検索クエリでトリガーし、結果を反復処理(レート制限に達しないように十分に遅く、必要であれば生の投稿をクエリすることもできます)して、探しているサブ文字列を含む投稿を出力することができます。

もっと簡単な解決策があるかもしれませんが、他に選択肢がない場合は私が取るアプローチです。かなり簡単に実行できます。

管理者がAPIキーをくれないから?

プログラマーではないから?

管理者が作り出し、解決する気のない問題のように思えます。

「いいね!」 1

はい、API検索と投稿のエンドポイントにはAPIキーは必要ありません。私の提案に必要なもので、私が間違っていなければそうだと思います。

そして確かに、AIが優れた基本スクリプトを出力できるとしても、基本的なプログラミング知識が必要になるでしょう。

言及された問題は、管理者アクセスなしでは解決するのが理想的ではないことは確かです。

「いいね!」 2

APIキーをリクエストしていません(官僚主義)、そして「簡単な」検索クエリだと思っていたことを行うためにAPIキーが必要だとは知りませんでした。コンテンツのHTMLタグを調べないことも知りませんでした。これで説明がつきました、ありがとうございます。

これは管理者が作成した問題ではありません。誰かが会社を辞め、そのアカウントへのGoogleドキュメントへのアクセスが遮断され、画像が消えたり壊れたりするまで、管理者やコンテンツ作成者が気づいていなかった状況です。

APIキーをリクエストするか、サイトをスクレイピングして問題のある投稿を見つける何かをローカルで書くことができることに同意します。どちらかを行います。

ご回答ありがとうございました。:pray:

「いいね!」 2

検索にAPIキーは必要ありません。

APIキーがあっても、問題をより簡単に解決できるとは思いません。

以下は、メタで私の投稿(3秒に1回投稿)をループし、生のコンテンツに upload:// の部分文字列が含まれる投稿を返す、Pythonスクリプトの:robot:例です。

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()
出力
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.
「いいね!」 2

素晴らしい、@Canapin さん、ありがとうございます!
Python が大好きです :pray:
おかげさまで、壊れた画像のスレッドをすべて特定できました。
大変感謝しています。

「いいね!」 3

単純な検索を行うのにAPIキーは必要ありませんが、「APIを使用する」ことのポイントがわかりません。

私の誤解だったかもしれません。download remote images to local がオンであれば発生しなかった問題のように聞こえましたが、それはデフォルトでオンになっています。しかし、管理者がそれをオフにした何らかの官僚的な理由があった可能性も高いです。データエクスプローラープラグインやRailsへのアクセスなしでは、あなたの問題を解決するのは不必要に難しいと思います。

すごい!最高です!

「いいね!」 3

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