Лабораторна робота виконана Єрмоленком Денисом з КВ-73.
Варіант 5
"ПЗ для створення плейлистів. Реалізувати проходження по сторінкам з набору url, які задані у вхідному xml-файлі, а також по сторінкам, на які є посилання з цих сторінок з заданою глибиною вкладеності. На всіх цих сторінках знайти всі посилання на mp3-файли, знайдені файли відфільтрувати за заданим жанром, який зберігається у ID3-запису, та результат зберігти у файл в форматі xml.
"
для запуску ПЗ треба використовувати scrape_mp3_from_sites з site_parser/site_parser.py
Приклад виклику ПЗ:
from site_parser import site_parser
site_parser.scrape_mp3_from_sites("data.xml",1)
де "data.xml" - вхідний файл з сайтами для сканування
а 1 - рівень заглиблення (не рекомендується більше 2)
Приклад вхідного xml файлу
<?xml version="1.0"?>
<data>
<site>https://mp3-music.club/hity-2017/</site>
<site>https://drivemusic.me/pop_music/35672-a-ha-lifelines.html</site>
</data>
Приклад вихідного xml файлу
<?xml version="1.0" ?>
<Playlist>
<Genre name="genre1">
<music>
<filename>music1.mp3</filename>
<title>Music titel</title>
<link>https://www.somesite.com/mp3/music1.mp3</link>
</music>
<music>
<filename>music2.mp3</filename>
<title>Music title2</title>
<link>https://www.somesite.com/mp3/music2.mp3</link>
</music>
</Genre>
</Playlist>
Використання gevent налаштовується в setting.cfg
Результати тестувань швидкості роботи (отриманні через timeit.timeit)
- Без gevent 440 сек
- З gevent 230 сек
Хоча ці дані не дуже точні, бо є вплив роботи Інтернету та операційної системи на результати, але все рівно видно, що з gevent є пришвидшення роботи, яке досягається при завантаженні парарельно багатьох mp3 файлів