Reddit RSS Feed إرجاع العناصر الأقل عند الطلب من خلال HTTP؟

StackOverflow https://stackoverflow.com/questions/1898654

سؤال

أحاول قراءة البيانات من تغذية RSS التي لديها 25 مادة. عندما أطلب ملف RSS من خلال HTTP، تقول إن هناك 20 عنصر فقط.

function test($location)
{
    $doc = new DomDocument();
    $doc->load($location);
    $items = $doc->getElementsByTagName('item');
    return $items->length;
}

// Prints 20
echo test('http://www.reddit.com/r/programming/new/.rss?after=t3_');

// Prints 25
echo test('programming.xml');

لقد جربت موجز آر إس إس من subredits الأخرى أيضا مع نفس النتيجة.

هل كانت مفيدة؟

المحلول

أرى ما هي القضية الآن ... إذا قمت بزيارة Reddit الفرعية / ص / برمجة / والانتقال إلى علامة التبويب "جديدة" لرؤية الأحدث التقديمات، هناك نوعان من الفرز. الخيار الأول هو "ترتفع" الذي يظهر فقط الإدخالات الواحدة والقادمة، ترتيب الفرز البديل هو "جديد".

نظرا لأنني اخترت ترتيب الفرز "الجديد" في متصفحي، فقد أنقذ ملف تعريف ارتباط وتم استخدامه كترتيب فرز افتراضي بعد ذلك. ومع ذلك، فإن الوصول إلى الصفحة من خلال التعليمات البرمجية كان لا يزال يستخدم ترتيب الفرز الافتراضي، الذي عاد كمية متغيرة من النتائج.

لقد قررت المشكلة عن طريق إلحاق سلسلة استعلام الترتيب الفرز إلى عنوان URL للطلب: http://www.reddit.com/r/programming/new/.rss؟sort=new.

نصائح أخرى

إذا كانت هناك مشاكل في تحميل الخلاصة، فمن المحتمل أن تصدر تحذيرا من نوع ما.

في الوقت الحالي، يظهر نموذج التعليمات البرمجية الخاصة بك لتغذية Reddit أنه يحتوي على 14 عنصرا. عدد العناصر الموجودة في هذه الأعلاف ليست ثابتة. وبالتالي فإن المشكلة هي أن نسختك المحلية تختلف عن إعادة تحميلها من Reddit.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top