قائمة وثائق المطورين

رتّب المدن حسب الإشغال

مبتدئ

رتّب الوجهات المتتبَّعة حسب الإشغال والإيرادات، ثم افصل ليالي عطلة نهاية الأسبوع عن بقية الأيام.

الإعداد

يستخدم هذا الدرس الأداة المساعدة jokerprice.py من درس البدء السريع. احفظها بجوار نصك البرمجي واضبط JOKERPRICE_API_KEY.

رتّبها بطلب واحد

يحمل كل سوق في /api/v1/markets ملخص تتبّع لآخر 90 ليلة، لذا يكفي طلب واحد للترتيب.

Python
from jokerprice import api

markets = api("GET", "/api/v1/markets")["markets"]
tracked = [m for m in markets if m["tracker"] and m["tracker"]["maturity"] == "estimating"]
tracked.sort(key=lambda m: m["tracker"]["occupancy"], reverse=True)

print(f"{'market':<28}{'occupancy':>10}{'ADR':>8}{'rev/month':>11}{'tracked':>9}")
for m in tracked:
    t = m["tracker"]
    print(f"{m['name']:<28}{t['occupancy']:>10.0%}{t['adr'] or 0:>8.0f}{t['monthlyRevenuePerListing'] or 0:>11,.0f}{t['tracked']:>9}")
print(len(markets) - len(tracked), "markets are not tracked yet or still collecting")

افصل عطلة نهاية الأسبوع عن أيام الأسبوع

للمدن المتصدرة، اجلب المؤشرات وقارن ليالي نهاية الأسبوع في كل مدينة ببقية الأسبوع: الخميس والجمعة، أو الجمعة والسبت في الإمارات.

Python
# Weekend nights: Thursday and Friday, or Friday and Saturday in the UAE
UAE = {"dubai", "abu-dhabi", "sharjah", "ras-al-khaimah", "ajman", "fujairah", "al-ain"}
def weekend_nights(slug):
    return {5, 6} if slug in UAE else {4, 5}

def split(rows, weekend):
    def occ(days):
        booked = sum(r["bookedNights"] for r in days)
        nights = sum(r["nights"] for r in days)
        return booked / nights if nights else None
    return occ([r for r in rows if r["weekday"] in weekend]), occ([r for r in rows if r["weekday"] not in weekend])

for m in tracked[:8]:
    metrics = api("GET", "/api/v1/metrics", params={"city": m["slug"], "past_days": 90})["metrics"]
    weekend, weekday = split(metrics["byWeekday"], weekend_nights(m["slug"]))
    if weekend is not None and weekday is not None:
        print(f"{m['name']:<28} weekend {weekend:.0%}  weekday {weekday:.0%}  lift {weekend - weekday:+.0%}")

جمع الليالي المحجوزة والمرصودة قبل القسمة يمنح كل يوم وزنًا بحسب عدد لياليه المرصودة، وهو أدق من حساب متوسط النسب اليومية.

انتبه لحجم العيّنة

يمثل tracker.tracked عدد العقارات التي يستند إليها الرقم. فالمدينة التي تضم 40 عقارًا متتبَّعًا قد يتغير رقمها عدة نقاط من أسبوع لآخر، بخلاف مدينة تضم 800 عقار.