من رقم المشاركة إلى معرف المشاركة

مرحبًا بالجميع!
أتساءل عما إذا كان هناك طريقة عبر واجهة برمجة تطبيقات Discourse للحصول على معرف المنشور من رابط منشور قياسي مثل https://myweb.site/t/<topic_id>/<post_number>، حيث يمثل TN معرف/رقم الموضوع وPN رقم المنشور بالطبع.

لقد جربت عدة محاولات باستخدام بيانات تدفق المنشورات من https://myweb.site/t/<topic_id>.json، معتقدًا أن المنشور رقم N سيكون معرف المنشور N في بيانات post_stream->stream المسترجعة من الاستدعاء. لكن إذا تم حذف منشورات أو إجراء عمليات تقسيم في تدفق منشورات الموضوع، فإن رقم المنشور لا يتطابق مع الموضع N في stream.

هل فاتني شيء واضح؟

3 إعجابات

هل جربت /t/<topic_id>/posts.json؟ سيعيد هذا 20 منشورًا ويمكنك اختيار المنشور رقم post_number، والذي سيحتوي على معرف المنشور.

ولكن للحصول على أكثر من 20، ستحتاج إلى التصفح الصفحي، ولا أرى حاليًا كيفية القيام بذلك.

إعجابَين (2)

كنت في حاجة ماسة إلى نفس الميزة قبل عامين. وما زلت لم أكتشف كيفية القيام بذلك (بشكل) أفضل. هذا هو الحل المؤقت الخاص بي:

def get_topic_post(topic_id, post_num)
    topic = @api.topic(topic_id, {print: true})
    post_obj = topic['post_stream']['posts'].find { |p| p['post_number'] == post_num }
    if post_obj
        post_obj['id']
    else
        throw "Could not find post #{topic_id}/#{post_num}."
    end
end

يتجاوز هذا الحل المشاكل المذكورة: فـ {print: true} يعالج مشكلة التصفح الصفحي. أما find فهو ضروري لأن التعديل قد يسبب عدم تطابق بين مؤشرات المصفوفة وأرقام المنشورات.

يعمل هذا الحل مع المواضيع بالحجم الذي أعمل عليه. ومع ذلك، فإن وجود طريقة أكثر مباشرة عبر واجهة برمجة التطبيقات (API) سيكون أكثر إرضاءً.

إعجاب واحد (1)