דפים

Thursday, July 7, 2011

מוזיקה וסטטיסטיקה

כפי שכבר השתמע מפוסטים קודמים, אני שומע מוזיקה כל זמן שאני לא ישן. ברכבת בדרך לעבודה, בזמן העבודה (כל עוד אין ישיבות), בבית, באוטו ואפילו בזמן כתיבת שורות אלה מתנגן פה שיר ישן של פינק פלויד ברקע. דבר נוסף שאפשר לומר שהוא "הקטע שלי" זה לתעד את המוזיקה שאני שומע בעזרת אתר מצויין הנקרא last.fm. זהו אתר שהוא משהו בין רשת חברתית לרדיו אינטרנטי, אשר בין השאר מאפשר להתקין תוכנה קטנה על המחשב, אשר מתחברת לנגן המוזיקה ושולחת לשרתי האתר את פרטי השיר המושמע בנגן. האתר צובר סטיסטיקה ויודע לעשות איתה כמה דברים:

1. בעזרת אלגוריתמים חברתיים חכמים להתאים לך את המוזיקה שאתה אוהב לשמוע במידה ובחרת להקשיב (ושילמת) למוזיקה דרך שירות הרדיו של האתר.
2. מציג נתונים וטבלאות סטטיסטיות בנוגע להשמעות של אמנים, אלבומים ושירים לפי חתכים של זמן. דווקא באופציה הזאת אני מוצא המון עניין. מעניין אותי לדעת איזו להקה שמעתי הכי הרבה בשנה האחרונה, משהו השיר ששמעתי הכי הרבה פעמים מאז ומעולם ועוד עובדות חסרות משמעות ומעניינות כאחד.

יש רק בעייה אחת. last.fm חסום אצלנו במשרדים משיקולי רוחב פס ולכן אי אפשר לא להתקין את התוכנה ובטח שלא להתחבר לשרתי last.fm על מנת לדווח על השירים המושמעים. וכך, החלק הכי משמעותי של רשימת ההשמעה שלי במהלך היום לא נכנס לסטטיסטיקה. דרמטי ככל שזה נשמע :).

לא ויתרתי ומצאתי פתרון!

נגן המוזיקה שאני הכי אוהב הוא Mediamonkey, הלא הוא קוף המדיה. בפעם אחרת אולי אספר למה אני מוצא את התוכנה הזאת כמוצלחת ביותר לצורך ניהול ספריית המוזיקה על המחשב, אבל לא לשם כך נתכנסנו כאן היום. קוף-המדיה מאפשר להתקין עליו פלאגין המאפשר לשלוח את הדיווח על המוזיקה לשרתי last.fm ללא צורך בהתקנת התוכנה של last.fm על המחשב. זה עדיין לא עוזר לנו, היות ואי אפשר להתחבר לשרתי last.fm ממחשבי המשרד. אך פלאגין זה מאפשר גם אופציה של לשמור cache של השירים שהושמעו בקובץ לוג.

כעת, כל מה שנותר לעשות הוא לשלוח את קובץ הלוג במייל, נאמר פעם בשבוע, ומהמחשב הביתי לשלוח את הרשימה ל last.fm. נשמע די פשוט, לא?

מצאתי תוכנת קוד פתוח שיודעת לעשות את הפעולה הזאת על קבצי דטה בייס של אייפוד, כדי לא לכתוב את הכל מאפס. כתבתי פרסר (parser) פשוט לקובץ הלוג שמוציא הפלאגין בעבודה וכל השאר היסטוריה כמו שאומרים. כעת שום שיר לא חומק ממלתעות הסטטיסטיקה ומתועד היטב בבסיסי הנתונים של last.fm! ניצחון!

מספר בעיות עלו בזמן העבודה על הפרוייקט הקטע הזה. למשל, ה QTScrobbler, אותה תוכנת קוד פתוח אותה התאמתי לצרכיי, משתמשת בספריית libcurl בעזרתה היא מבצעת את עבודת ה HTTP ברשת. מפתחי התוכנה לא ראו לנכון לצרף את ה dllים וה libים של libcurl איתם הם מקמפלים את הפרוייקט, מה שהצריך לחפש ברשת את הספריות המתאימות. האתר של curl מאפשר אמנם להורים dllים מקומפלים, אבל כאשר מורידים אותם ומנסים להשתמש, מגלים בעיות רבות כמו תלויות במודולים אחרים (sasl ואחרים) אשר גם אותם צריך לאתר ברשת. אחרי ששרפתי כמה שעות בחיפושים, נתקלתי בהמלצות בפורומים מקצועיים ובמיילינג ליסטס להוריד את הסורסים של libcurl ולקמפל אותו לבד. כך עשיתי ו libcurl נכנס כספרייה סטטית לתוך הפרוייקט.

בסוף השבוע אני אנקה קצת את הקוד, אקמפל גירסת release ואעלה אותה לפה, במידה ומישהו יתקל אי פעם בבעיות הקשות שתיארתי פה :)

גם את הסורסים שלי, אשמח לשתף במידה ויהיה ביקוש.

לא נדלג גם הפעם על שיר סיום. הפעם, מחווה לקוף-המדיה. זה שיר שחיבבתי מהרגע ששמעתי אותו לראשונה. שיתוף פעולה בין אוזי אוסבורן ללהקת Coal Chamber.


No comments:

Post a Comment