Skip to content

Commit 0b3b19c

Browse files
committed
Фильтр по недавно игравшим трекам
1 parent 9836439 commit 0b3b19c

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "__MSG_ext_name__",
33
"short_name": "__MSG_ext_short_name__",
44
"description": "__MSG_ext_description__",
5-
"version": "0.7.1",
5+
"version": "0.7.2",
66
"manifest_version": 2,
77
"author": "Chimildic",
88
"default_locale": "ru",

page/changelog.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ <h2>Список изменений YaMuTools</h2>
2323
<a class="button" target="_blank" href="/page/feedback.html">Обратная связь</a>
2424
<p id="author">Chimildic, 2021</p>
2525
</footer>
26+
<section class="bubble">
27+
<h3>Версия 0.7.2</h3>
28+
<hr />
29+
<ul>
30+
<li>В фильтре треков плейлиста появилась возможность удалить недавно игравшие треки (из истории прослушиваний)</li>
31+
</ul>
32+
</section>
2633
<section class="bubble">
2734
<h3>Версия 0.7.1</h3>
2835
<hr />

script/tool/playlist/filter.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ const FILTER_CONTEXT_MENU = {
1515
title: 'Управление ремиксами',
1616
handler: () => onClickFilterTool(onClickControlMixTracks),
1717
},
18+
{
19+
title: 'Удалить недавно игравшие',
20+
handler: () => onClickFilterTool(onClickRemoveHistoryTracks),
21+
},
1822
{
1923
title: 'Удалить с пометкой "Е"',
2024
handler: () => onClickFilterTool(onClickRemoveExplicitTracks),
@@ -113,6 +117,42 @@ function onClickRemoveRuTracks(playlist) {
113117
updateTracksWithFilter(playlist);
114118
}
115119

120+
async function onClickRemoveHistoryTracks(playlist) {
121+
Swal.fire({
122+
title: 'История прослушиваний',
123+
input: 'text',
124+
text: 'Сколько недавних треков из истории учитывать?',
125+
inputValue: 500,
126+
showCancelButton: true,
127+
cancelButtonText: 'Отмена',
128+
inputValidator: (value) => {
129+
if (!/^[1-9]\d*$/.test(value)) {
130+
return 'Некорректное число';
131+
}
132+
}
133+
}).then(result => {
134+
if (!result.isConfirmed) {
135+
return;
136+
}
137+
138+
receiveHistory((response) => {
139+
if (!response.hasTracks) {
140+
fireInfoSwal('В истории прослушиваний нет треков.');
141+
return;
142+
}
143+
144+
response.trackIds.length = parseInt(result.value);
145+
playlist.tracks = playlist.tracks.filter((track) => {
146+
if (!track.id || !track.albums || track.albums.length == 0) {
147+
return false;
148+
}
149+
return !response.trackIds.includes(`${track.id}:${track.albums[0].id}`);
150+
});
151+
updateTracksWithFilter(playlist);
152+
});
153+
});
154+
}
155+
116156
function updateTracksWithFilter(playlist, ids) {
117157
let trackIds = ids || getTrackIds(playlist.tracks);
118158
if (playlist.trackCount == trackIds.length) {

0 commit comments

Comments
 (0)