graywolf's lair

Inhuman being's diary…

Anime NOW! (tracking new anime series)

Примітка: роботу над проектом тимчасово призупинено у зв’язку з безповоротною втратою вихідних кодів. Сподіваюсь, що накопичений досвід дозволить реінкарнувати його в набагато кращому вигляді.

Назва проекту – поки що просто робоча і як воно називатиметься в кінці-кінців я ще не знаю. Може так, а може інакше.

Ідея

Отож ідея наразі така: користувач заходить на сайт і одразу бачить список з 10 топових анімех з коротким описом та рейтингами, які наразі супроводжуються на ФТП. Навпроти кожної є посилання на відповідну RSS-стрічку. При бажанні він може подивитись весь список запропонованого поточного аніме, проголосувати за якісь речі та прокоментувати, а якщо не знайде того, що він шукає – запропонувати своє. На кожній зі сторінок має бути пошук по базі аніме. В детальній інформації по аніме видно скільки серій його вже вийшло, скільки і які є на ФТП (з посиланнями) та інформація про кожен реліз (фансаббер, кодек, бітрейт, тощо). Для зручності адміністрування можна буде, наприклад, зробити так, щоб можна було аніме зливати на купу в incoming, а на адміністративній веб-морді натиснути щось типу “Autosort” і воно розпарсить їх імена і ті аніме, які зараз в Топі автоматично розкладе по відповідним каталогам. Для цього в адміністративній консолі потрібно буде описати в спрощеному regexp’і (щось типу “[#FANSUB#]_#ANIMETITLE#_-#NUM#_[#CRC]“) правила розбору імен файлів.

На другу ітерацію запланована підтримка анонімних torrent-трекерів окрім FTP, щоб будь-який бажаючий міг додавати релізи. Таким чином підвищиться оперативність та буде охоплено значно більша кількість аніме, що виходить в поточний моент часу.

Детальніше про виникнення та розвиток цієї ідеї можна прочитати у відповідному блог-пості та коментарях до нього. Але наразі продовжити обговорення цієї теми пропонується тут.

Платформа

Проект реалізується за допомогою python web-фреймворку Django. Із залученням UDP- та WEB-API системи AniDB.

Дизайн

Шаблон поточної версії дизайну головної сторінки: http://graywolf.org.ua/wp-content/uploads/2008/04/anime-design-alpha2.jpg

План на перший реліз

Milestone 0.1: список аніме, які ведуться на ФТП (на основній сторінці), та повний (з підтримкою сторінок та можливістю сортування за рейтингом чи назвою) на окремій. Інформація оглядова: назва, опис, час випуску, чи випускається ще, кількість серій (загальна, випущена, на FTP). Перегляд більш детальної інформації по кожній з них (до оглядовою додадуться нові поля типу жанру, студії, тощо). Думаю доробити до середини, максимум – кінця наступного тижня.

Milestone 0.2: Реалізувати можливість додавання нового аніме. Нові речі додаватимуться виключно якщо вони йдкть зараз та якщо вони наявні на AniDB. Таким чином відкрубимо засмічення бази непотрібним матеріалом. Крім того потрібно реалізувати можливість редагування та видалення аніме. Редагувати серії користувач не може – інформація добувається качаєтсья виключно з AniDB.

Зроблено: додавання та видалення аніме, додавання/синхронізація серій з AniDB (поки що з багом в датах).
В розробці: редагування.

Хоч і не все дороблено, але будемо вважати цю частину закритою, бо реалізація деяких фіч потребуватиме великого рефакторингу, який заплановано на пізніші ітерації.

Milestone 0.3: Додати можливість коментувати. Прикрутити Akismet спам-фільтр до коментарів. Порізати та прикрутити дизайн.

Milestone 0.4: Створення інфраструктури для підтримки ведення серій та релізів. Прив’язка інфраструктури до реальних файлів. Можливо, сюди ж автосортування. Найбільш суттєвий шматок роботи…

Milestone 0.5: Прикрутка авторизації та градації рівнів доступу (до цього всі модифікації будуть доступні кожному). Наразі це буде лише можливість редагування/видалення аніме а також синхронізація бази з файлами на ФТП для адміністраторів.

Milestone 0.6: Підтримка RSS. По конкретному аніме-релізу та азагальна (як на tokyotosho).

Milestone 0.7: Підтримка i18n. Локалізація українською і, можливо, російською мовами. Англійська йде одразу.

Milestone 0.8: Обробка напилком всього попереднього, тотальний рефакторинг. Справа в тому, що вже попереднє буде прототипом, пробою пера… Понаступавши на граблі в процесі написання можна буде зробити вже нову, більш адекватну та гарну архітектуру.

Milestone 0.9: Реалізація API, розробка штатних готових віджетів.

Milestone 1.0: Альфа- та бета-тестування. Реліз.

33 Comments

  1. Зробив прототип алгоритму завантаження інформації про файли з AniDB AJAX API. Ніби працює 🙂 Постараюсь до півночі прикрутити до основного проекту.

    До речі, щодо рефакторингу… Там потрібно буде сильно перелопатити базу розділивши інформацію, яка редагується на цьому сайті та інфу з AniDB. В першій буде мінімум полей, а друга перетвориться на локальний кеш AniDB. Кожне аніме буде оновлюватись не більше разу в день. Це дещо підвищить операційні витрати на кожен запит, але з олного боку буде набагто гнучкіше з точки зору архітектури та дозволить порівняно просто реалізувати механізм опитування AniDB, що зменшить вірогідність забанення сайту.

    Але це все буде вже на кроці 0.8. Немає сенсу рефакторити зараз, оскільки краще зібрати максимум інформації про можливі граблі (а їх, впевнений, буде ще дофіга) до переписування коду.

  2. Проапдейтив поточний стан проекту. Вже додав коментарі.

    Чим більше пишу, тим більше глюків у першому варіанті архітектури знаходжу. Чую, що скоро без рефакторингу вже неможливо буде писати далі і його доведеться пересунути раніше, але поки тримаю там – до нього треба зібрати якомого більше грабель 🙂

  3. Прикрутив Акісмет до коментарів, хоча протестити на локальній машині досить проблематично… 🙁 Поки будемо вважати, що працюватиме.

    Порізав дизайн, але ще не прикрутив до самого сайту, бо оскільки все одно будуть переробки, то поки не хочетсья робити дурної роботи…

    Так що віху 0.3 можна вважати виконаною. Зараз працюю над частиною, що моінторитиме певний каталог на наявнясть відеофайлів та буде на основі їх розміру та контрольної суми ed2k отримувати дані з AniDB.

  4. Зробив перебір файлів на диску з підрахунком ed2k-хешу, отриманням даних по ньому з AniDB та записом в БД. Працює ніби непогано. Єдине – тепер виникла проблема з опитом AniDB з різних місць і куди включати сканування на предмет нових файлів… Можна все зробити всередині майбутньої адмінки: кнопка типу “пересканувати файли”, але скан займає декілька хвилин часу і чекати це на вебі буде не дуже зручно та і хотілось би мінімізувати втручання людини в цей процес. Зате по реалізації ніяких граблей. А можна зробити зовнішній скрипт (власне, так воно працює зараз), який все робитиме, але тоді з AniDB виникають накладки – при робочому одночасно сайті та скрипті звернення до сервісу буде з двох різних портів, причому несинхронізовано (що може призвести до бану). Єдиний вихід – виділити роботу з AniDB в окремий скрипт, що буде працювати постійно і обробляти запити як зі сторони сайту, так і зі сторони скрипта оновлення даних про файли. Поки схиляюся до другого варіанту. Ну а віху 0.4 тим часом, здаєтсья, успішно виконано… 🙂

  5. а по-моєму – ти занадто довго возюкаєшся з анідб… здається, ти ще не зрозумів, що “файловий” (ed2k-хеш) підхід анідб програшний, і ніхто ним не користуватиметься (тому що багато хто навіть і не качає аніме — дивиться по вебу). тому як на мене, ти неправильно перерозподілив свої сили і займаєшся абсолютно непотрібною річчю…

    краще, можливо, було взагалі організувати інтеграцію з анімелистом (їхній підхід до упорядкування аніме “по назві” (а не по хешу файла) значно більш живучий). це ж просто питання елементарного зовнішнього зв”язку – щоб можна було отримати готову інфу про аніме із якоїсь усталеної зовнішньої бд; не стоїть питання про якусь глибинну інтеграцію з цією бд… і не стоїть питання, щоб це була саме анідб – може бути все що завгодно (аби воно зайняло у тебе не більше 2-3 днів часу).

    та і загалом це навіть і не обов”язкова, другорядна річ…

  6. тобі відніше – бо я вже навіть не розумію, що саме ти робиш О__о (може там файли і дійсно потрібні…) але все рівно, якщо це займає так багато часу, то навряд чи воно так вже нагально потрібне… я думав, це буде просто місце з можливістю слідкувати за конкретними серіями на фтп і коментувати (а бажано не тільки на фтп, і щоб прямі лінки на нові серії (обраного тобою серіалу) самі до тебе приходили 😉 )

  7. В абсолютному вимірі воно займає вельми мало часу. Просто у мене вільного не так багато… 🙁

    Ну от на ФТП воно і моніторить. Але коли Фінве чи ще хто заливатиме файл, то йому взагалі не потрібно буде взагалі нічого адмініструвати – файл додасться автоматично в розділ до відповідного аніме 🙂 І лінки на них відповідно приходитимуть в РСС-потоці того аніме.

    Щодо проямих лінків… У мене була ідея прив’язатись якось до Тошьокану, але поки не знаю за що зачепитись, бо повністю автоматизувати процес як це можна зробити з ФТП не вийде. Але така ідея розглядається на наступну версію разом з підняттям анонімного трекеру, де кожен зможе додавати релізи. В принципі, можна просто зробити можливість як скористатись нашим майбутнім трекером, так і додавати лінки на торрент-файли і на зовнішніх.

    Коротше кажучи, я постараюсь до середини місяця зробити демонстраційну версію, яку запущу на своїй локальній машині і її можна буде помацати вже.

  8. Справа в зручності. Коли ти завантажуєш файл – тобі не потрібно дивитись з якого він аніме, яка це серія, хто фансабери – програма заповнить всю інформацію автоматично. Анімелист гарна річ для отримання інформації про аніме, але ніщо, коли треба по готовому файлу визначити його належність. Все що я роблю – перекладаю більше відповідальності на машину.

    На другий виток розвитку, коли прикрутимо трекер, то цей підхід вже не буде діяти, бо у торрент-файлів розподілений хеш по блокам і користувачу все одно доведеться додавати інформацію про файл та фансабера вручну. Тут ще треба буде подумати як краще все організувати, бо хочеться мінімізувати кількість даних, що може надвати користувач (досвід torrents.net.ua підказує, що вона ну дуже часто невірна), враховуючи, що реєстрація для ціього буде необов'язкова.

    Якщо не робити прив'язку до без, то ми загнемося на премодерації. А так можна автоматично відсіювати коли хтось писатиме відверту фігню.

  9. “…файл додасться автоматично в розділ до відповідного аніме І лінки на них відповідно приходитимуть в РСС-потоці того аніме…”

    – ну от і добре; не розумію, до чого тут анідб, однак… (нові файли взагалі на анідб можуть ще не проходити)

    “У мене була ідея прив’язатись якось до Тошьокану, але поки не знаю за що зачепитися…”

    – просто подумати, що робить на тошьокані пересічна людина, і повторити ці кроки програмно… вводити в пошук назву аніме, серію, групу, і парсити рез-т. як тільки він з”являється – повідомляти по рсс. (?)

  10. – ну от і добре; не розумію, до чого тут анідб, однак… (нові файли взагалі на анідб можуть ще не проходити)

    Можуть, але для популярних релізів це малоймовірно. А з Анідб підтягується інформація про фансаберів, властивості файлу (роздільна здатність, контейнери, тощо), звуковий та аудіопотоки. Зрештою суто по реалізації використовувати чиїсь налагоджені зв’язки легше ніж писати свої і точно займе менше часу.

  11. Віхи 0.5, 0.6 та 0.7 успішно пройдено. Причому RSS та I18N я вже вирішив прикручувати одразу, тому вже більш-менш підготував шкіру та скелет сайту – дизайн, шаблони сторінок “About” та “FAQ”, реєстрацію користувачів, login/logout, зміну пароля, новини сайту (додавання/редагування/видалення) з підтримкою трьох мов, коментарями та RSS.

    Тож з наступного тижня вже берусь за м’ясо, тобто власне за аніме – те, що я робив до віхи 0.4 включно, але тепер це все має бути гарно оформлено архітектурно. Так що схоже, що до кінця місяця вже можна буде проводити такий собі “private beta test” ^_^

  12. три мови це погано… підтримуєш шизофренію в країні…

  13. Там фактично необмежена кількість мов 🙂 Сам казав, що не варто замикатись на одну країну, от я і зробив систему гнучкою, щоб можна було вільно додавати і видаляти мови в майбутньому ^_^

  14. просто не всі мови однакові, в тому справа… англійська/українська – нормальна пара, співіснують. а от напр. російська/українська – не працює, російська українську знищує одразу, оком не зморгнеш 😉 (в тому-то і прикол, це ж не суха математика (“необмежена кількість мов”), а реальний стан речей…)

  15. Ну то як, є ще дух в оболонці цього проекту? 🙂

  16. Є 😉 Просто зараз я вже роблю чистову версію і на неї треба дуже багато часу, а займатись цим я можу лише у вихідні, тому все просувається дуже повільно 🙁

  17. Нарешті поставив після перевстановлення вінди пітон та необхідні бібліотеки. Заодно оновив django до останньої версії. Вихід стабільної версії 1.0 я свого часу свідомо проігнорував, про що сьогодні пожалкував, адже змін було багато і із-за цього повідвалювалися деякі модулі… Декілька годин витратив на те, щоб все запрацювало майже як раніше. Правда, досі не зміг повернути назад Акісмет-фільтр, але це не критично зараз. Плюс в anidb udp api були деякі невеличкі зміни, але адаптація зайняла всього лише один рядок коду 🙂 Коротше кажучи, після майже двохмісячної перерви повертаюся до роботи ^_^

    Yoshi!

  18. я думав, ти вже цю справу закинув…

  19. Закинув, бо роботи багато було, а тут зіткнувся з певними труднощами, для того щоб обійти які треба було багато матеріалів перечитати, на що в мене не було часу. Зараз вільного часу стало трішки більше, тому я збираюсь потроху рухати проект далі.

  20. А які це зміни були в УДП протоколі? Я (тобто Перегляд-А) нічого не помітив, все працює, ще жодної зміни в мережевій підсистемі з дня випуску не робив.
    Доречі, вони там на анідб нарешті зробили той файл з назвами „офіційним“, отже я вирішив приладнати його в наступному випуску, щоб відображати назви на номери. Коротше, тоді дійсно буде можливо шукати за назвою без зайвих турбот про статус цього файлу.
    Чи ти може мав на увазі адресу того файлу, яка нещодавно змінилася?

  21. Ну, по-перше змінився формат видачі поля “year”: раніше це був просто рік (було “2004”), а зараз – діапазон (стало “2004-2004”). По-друге, додалася команда за допомогою якої можна нарешті отримувати англомовний опис. По-третє, поточний формат виклику команди ANIME вже застарілий (deprecated) і у них на Вікі є опис нового. Щоправда, поки старий працює я не поспішаю переходити на новий, бо це теж трохи часу займе.

  22. На жаль, на вихідних вдома робота не пішла і я займався лише оптимізацією коду та багфіксінгом (після оптимізації дещо повідвалювалось 😀 ). Показовий реліз трохи відкладеться.

  23. Але порадую пару скрінів (там ще багато багів видно – не все відображається так як треба, плюс окрім меню зверху в українській локалізації нічого не перекладено). Але основні ідеї, думаю, зрозумілі.

  24. мені інтерфейс не подобається… 🙁 зелений колір в написах – це огидно

    та головне, щоб функціональність працювала…

  25. (до речі, в коментах клікаєш “Page 2” – викидає на page 1…)

  26. Ну, з кольором лінків можна погратися. Хоча я пробував їх робити теж синіми і виходить, ІМХО, ще гірше.

    Щодо сторінок коментарів я вчора теж помітив цей глюк. Він з’явився після переходу на новий Вордпресс. Сьогодні ввечері з дому подивлюсь що з ними.

  27. Доробив та відтестував синхронізацію файлів наявних на FTP та з бахою та автоматичне оновлення даних щодо них. Працює кльово 🙂

    Тепер в планах зробити деякі правки дизайну і потім вилизати вже кожну сторінку одна за одною до 100% відповідності до графічних та функціональних вимог. На багатьох з них залишались деякі дрібниці на які не хотілось витрачати час, а тепер цих дрібниць накопилося досить багато.

    По функціоналу користувацької частини залишились тепер лише: коментарі до аніме (має бути нескладно), гарні RSS (зараз є лише експериментальні) та придумати та власне лінки на скачування на сторінці перегляду аніме (хочу зробити все зручно і через ajax). По адмінскьій частині треба зробити редагувати локалізованих опис та назви аніме. Та й усе, здається… Реєстрації користувачів (не адмінів) поки не буде, бо в тому наразі немає сенсу. Плюс треба буде відтестити гарно на некоректних даних, тощо… Щоб ніде нічого не відвалювалося. Мммм… Також думаю за тиждень-два поставити на віртуалку FreeBSD і відтестити розгортку anime-now в умовах наближених до бойових 🙂 Аби лише часу та натхнення на все вистачало.

    З мінсуів – робота зрідка гальмувалась із-за різних дрібних багів, а також дуже часто впиралась в моє незнання django та javascript, бо це я все-таки вперше пишу щось з їх використанням. Є пара непофікшених багів: не працює пошук по анідб в кирилиці та по кані 🙁 Геть не поки знаю що з тим робити. Є незрозумілий глюк з підрахунком доступних на FTP серій до деяких аніме на основній сторінці, але його, думаю, я виправлю згодом поставивши спеціалізований django-дебагер (заодно і профілювання та оптимізацію з його допомогою потім можна зробити).

    Поки все на сьогодні.

  28. Дивно, що не працює пошук кирилицею. Звучить, як проблема перетворення кодувань. Пітон (принаймні до 3.0) має з цим проблемки. Тобто треба руцями перевіряти, як (з яким кодуванням) Пітон інтерпретує стрічки. А може це джанґо десь всередині чубаситься, я ж не знаю, як там у тебе все до купи зліплено. 🙂

  29. Там відправляється в UTF-8, я на консоль же постійно виводжу дебажну інфу для перевірки.

  30. Повністю перемалював сторінку з виводом списку аніме. Тепер там фільтрація/сортування через закладки: і красивіше, і зручніше. Залишилось лише пара штрихів і сторінка зі списком буде відшліфована (як буде готово – викладу скріншот).

    Потім перейду до переробки сторінки з пошуком.

    Також я вирішив стартову сторінку зробити не просто списком аніме, а по аналогії з сучасними сервісами – своєрідною агрегованою дошкою, куди буде виводитись багато різної інформації (це займе теж деякий час, але зате має бути дійсно прикольно).

  31. А яка сама інформація? Це ж досить спеціалізована система, хіба там може бути багато різної інформації? Прогноз погоди, чи що? 😀

  32. Ну, ти що я збираюсь зробити поки що:
    – топ-5 аніме з тих що зараз виходить
    – останні надходження до ФТП (3-5 найменувань)
    – новини сайту (1-2)
    – останні коментарі

    В принципі, це основне, що має бути.

    Якщо вийде зробити без перевантаження основної сторінки зайвою інформацією, то можливо ще зробити якіусь мовно-залежну стрічку аніме-новин (через RSS-синдикацію з інших сайтів).

Залишити відповідь

Required fields are marked *.