لدي منصة Discourse حيث أنا مشرف (ليس لدي وصول إلى الواجهة الخلفية). قام شخص ما بنشر العديد من المواضيع حيث تم ربط الصور خارجيًا بمزود استضافة طرف ثالث (في هذه الحالة، مستندات Google). لقد غادر الشركة، وجميع روابط الصور هذه معطلة الآن.
يمكنني (وقد فعلت) المرور يدويًا عبر بعض منشوراتهم للعثور على الصور المعطلة وإصلاحها (بفضل أرشيف الإنترنت). لكن هذا شاق. أود الحصول على قائمة بكل موضوع يحتوي على عناوين URL للصور المعطلة هذه حتى نتمكن من إصلاحها بشكل جماعي، عن طريق إعادة تحميل الصور إلى الموقع.
يمكنني بالطبع استخدام البحث للعثور على with:images #tutorials، ولكن لا يمكنني البحث داخل عناوين URL للصور عن (على سبيل المثال) googleusercontent. هل هذا ممكن، بدون وصول إلى واجهة برمجة التطبيقات (API) أو الواجهة الخلفية rake؟
هل هذا يعني أنه لا يمكنك تثبيت مستكشف البيانات أيضًا؟ ستكون هذه هي الأداة المفضلة لذلك.
كيف يتم تنسيق الصور في المنشورات؟ هل تعرض فقط عنوان URL العادي، أم تستخدم [img]، <img>، …؟
فقط لتوضيح مشكلتك. يمكن أن يحتوي المنشور على عنوان URL لصورة معطلة، مثل https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg
إذا بحثت عن googleusercontent، فلن يتم إرجاع أي نتائج. ومع ذلك، يمكنني العثور على مشاركات تحتوي على صور، مشار إليها بعنوان URL يحتوي على النص googleusercontent. لا أعرف ما إذا كانت هذه مشكلة أو ميزة لا يبحث فيها discourse في عناوين URL لروابط الصور المنسقة بتنسيق markdown.
أعتقد أن البحث في Discourse يتم على المنشور المعالج، والذي يحتوي على HTML.
يتجاهل البحث علامات HTML، وعلامات IMG لا تحتوي على نص، ومن هنا استحالة إرجاع ما تبحث عنه.
لماذا لا يمكنك استخدام واجهة برمجة التطبيقات (API)؟
يمكنك إنشاء برنامج نصي محلي يقوم بتشغيل استعلام بحث لمنشورات المستخدم التي تحتوي على صور، والتكرار عبر النتائج (ببطء كافٍ لعدم الوصول إلى حدود المعدل، وأيضًا يمكنك الاستعلام عن المنشورات الخام إذا لزم الأمر) وإخراج المنشورات التي تحتوي على السلسلة الفرعية التي تبحث عنها.
ربما هناك حل أبسط، ولكن هذا ما سأفعله في حالة عدم وجود خيار آخر. بسيط جدًا للقيام به.
لم أطلب مفتاح API (بيروقراطية)، ولم أكن على علم بأنني سأحتاج إليه للقيام بما اعتبرته استعلام بحث “بسيط”. لم أكن أعرف أنه لا يلقي نظرة على علامات HTML في المحتوى. لذا تم تفسير ذلك، شكراً لك.
إنها ليست مشكلة أنشأها المسؤولون. إنها مجرد حالة لم يكن المسؤولون ومنشئو المحتوى على علم بها حتى غادر شخص ما الشركة، وتم إيقاف الوصول إلى مستندات Google لهذا الحساب، مما أدى إلى اختفاء/تعطل الصور.
أتفق على أنه يمكنني طلب مفتاح API، أو كتابة شيء محليًا لكشط الموقع والعثور على المشاركات المخالفة. سأفعل أحد هذه الأشياء.
لست متأكدًا من أن وجود مفتاح API يمكن أن يساعدك في حل مشكلتك بسهولة أكبر.
إليك مثال لبرنامج نصي بلغة Python يقوم بتكرار مشاركاتي (مشاركة واحدة كل 3 ثوانٍ) على meta ويعيد تلك التي تحتوي على السلسلة الفرعية upload:// في المحتوى الخام:
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()
لا تحتاج إلى مفتاح API لإجراء بحث بسيط، لكنني لا أرى فائدة من “استخدام API” لإجراء بحث بسيط.
ربما أسأت فهم المشكلة. بدا الأمر وكأنه مشكلة لم تكن لتحدث لو كان خيار “تنزيل الصور عن بعد إلى المحلية” قيد التشغيل، وهو قيد التشغيل افتراضيًا. ولكن من المحتمل أيضًا أنه تم إيقافه لسبب بيروقراطي قام به المسؤول. أعتقد أنه سيكون من الصعب جدًا حل مشكلتك بدون إضافة مستكشف البيانات أو الوصول إلى Rails.