TLDR : wg-gesucht.de'de yayınlanan her yeni ilana otomatik olarak kişiselleştirilmiş, bağlama duyarlı mesajlar gönderen bir bot geliştirdim. Bot bana Berlin'de bir daire buldu!
Bu projenin teknik tarafıyla ilgileniyorsanız, bu makaleyi okurken kodu incelemekten çekinmeyin!
Technische Universität Berlin'deki değişim dönemim yaklaşırken yaşayacak yer aramaya başladım. Berlin'de mevcut bir ağ olmadığından, potansiyel daire paylaşımcılarıyla iletişim kurmak için wg-geuscht.de web sitesini kullandım. Bu çok tekrarlayan bir süreçti ve bunu otomatikleştirmeye karar verdim.
Fiyat aralığımdaki tüm yeni potansiyel daireler için wg-gesucht.de adresinde e-posta uyarıları ayarladım ve Gmail gelen kutuma gelen e-postaları izlemek için anlık abonelikle Google Clouds Pub/Sub hizmetini kullandım.
Yeni bir e-posta geldiğinde hizmet, sunucuma bir web kancası bildirimi gönderir.
Express ile JavaScript ile yazılan sunucuda, Gmail gelen kutumdaki en son e-postayı okudum ve e-postanın herhangi bir wg-geuscht listesine bağlantı içerip içermediğini görmek için Regex ile ayrıştırdım.
Her listeleme için uçtan uca bir test çerçevesi olan Playwright'ı kullanarak bir Chromium tarayıcısı oluşturdum. Bu, web sitesiyle etkileşimde bulunurken olduğu gibi gezinmemi sağladı. Hesabımda oturum açtım, ilan açıklamasını not ettim ve mesaj gönder tuşuna bastım.
Mesaj , GPT-3.5 Turbo kullanılarak aşağıdaki istemle oluşturulur:
const prompt = ` Can you spice up the following text: "${starterText}" The updated text should explain why I would fit in the flatshare with the following listing text: "${listingText}". Add some emojies as well. Mention that my semester is from September to March, so a stay for that perioud would be ideal (but Im always flexible)! And if the listing is written in German, the answer should be in German as well. And if the listing says I need to say a specific word, start the whole text with that word! `;
Oluşturulan mesaj, benim birkaç resmimin yanında gönderildi.
Canlı yayına giren bir listeden botuma yanıt göndermesi için geçen süre yaklaşık 10 saniyeydi, bu da bana ilk yanıt veren kişi olma konusunda güven verdi. Bana bir daire garantileyen yanıt şuydu:
Hallo zusammen! 🦄 Das scheint ja eine richtig coole WG zu sein, in die ich perfekt reinpassen würde! 😄 Ich bin Isak und ich glaube, dass ich perfekt in dein WG-Zimmer passen würde! Mein Semester in Berlin geht von September bis März, also wäre ein Aufenthalt für diesen Zeitraum ideal (aber ich bin auch immer flexibel!). Die Lage der Wohnung klingt super, besonders die Nähe zum RAW-Gelände und zum Boxhagener Platz. Und hey, eine Tram-Station direkt vor der Tür ist auch genial! 🚋 Die Wohnung hört sich toll an, mit Balkon, Badewanne und Waschmaschine. Da fühlt man sich doch gleich wie zuhause! Wenn du Interesse hast, würde ich mich freuen, von dir zu hören. 📞 Liebe Grüße und hoffentlich bis bald! Isak PS Wenn die Anzeige auf Deutsch ist, dann antworte ich auch gerne auf Deutsch. Aber sei gewarnt, mein Deutsch ist manchmal etwas holprig. Ich verstehe nur Bahnhof! 😄
Geriye dönüp baktığımda, e-posta bildirimlerine manuel olarak yanıt vermekten daha fazla zamanı botla uğraşarak harcadım. Ancak bununla birlikte, bu projenin ortaya çıkışından memnunum. Botun göndereceği aptalca yanıtlardan çok güldüm ve insanların bana geri dönme sıklığı gözle görülür şekilde arttı (büyük olasılıkla onlara ilk müdahale eden ben olduğum için).
Yakın zamanda botu yeniden çalıştırmayı denedim, ancak haziran ayındaki aramamdan bu yana sitelerinde captcha doğrulaması uygulandı. Bu daha iyi olabilir. Bildiğim kadarıyla listelemelerin çoğu ChatGPT kullanılarak oluşturuldu.