forked from openlp/openlp
Allow searching past the first page of songs
Previously the first ten songs were just repeated
This commit is contained in:
parent
b71ccfd09e
commit
b455077ff8
@ -344,7 +344,9 @@ class SongSelectForm(QtWidgets.QDialog, Ui_SongSelectDialog, RegistryProperties)
|
||||
self.song_count += 1
|
||||
self.result_count_label.setText(translate('SongsPlugin.SongSelectForm',
|
||||
'Found {count:d} song(s)').format(count=self.song_count))
|
||||
item_title = song['title'] + ' (' + ', '.join(song['authors']) + ')'
|
||||
item_title = song['title']
|
||||
if song['authors']:
|
||||
item_title += ' (' + ', '.join(song['authors']) + ')'
|
||||
song_item = QtWidgets.QListWidgetItem(item_title, self.search_results_widget)
|
||||
song_item.setData(QtCore.Qt.UserRole, song)
|
||||
|
||||
|
@ -175,7 +175,7 @@ class SongSelectImport(object):
|
||||
songs = []
|
||||
while self.run_search:
|
||||
if current_page > 1:
|
||||
params['page'] = current_page
|
||||
params['CurrentPage'] = current_page
|
||||
try:
|
||||
results_page = BeautifulSoup(self.opener.open(SEARCH_URL + '?' + urlencode(params)).read(), 'lxml')
|
||||
search_results = results_page.find_all('div', 'song-result')
|
||||
@ -196,9 +196,14 @@ class SongSelectImport(object):
|
||||
songs.append(song)
|
||||
break
|
||||
for result in search_results:
|
||||
authors = result.find('p', 'song-result-subtitle').string
|
||||
if authors:
|
||||
authors = unescape(authors).strip().split(', ')
|
||||
else:
|
||||
authors = ""
|
||||
song = {
|
||||
'title': unescape(result.find('p', 'song-result-title').find('a').string).strip(),
|
||||
'authors': unescape(result.find('p', 'song-result-subtitle').string).strip().split(', '),
|
||||
'authors': authors,
|
||||
'link': BASE_URL + result.find('p', 'song-result-title').find('a')['href']
|
||||
}
|
||||
if callback:
|
||||
|
@ -246,15 +246,15 @@ class TestSongSelectImport(TestCase, TestMixin):
|
||||
# first search result
|
||||
mocked_result1 = MagicMock()
|
||||
mocked_result1.find.side_effect = [
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 1'))),
|
||||
MagicMock(string='James, John'),
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 1'))),
|
||||
MagicMock(find=MagicMock(return_value={'href': '/url1'}))
|
||||
]
|
||||
# second search result
|
||||
mocked_result2 = MagicMock()
|
||||
mocked_result2.find.side_effect = [
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 2'))),
|
||||
MagicMock(string='Philip'),
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 2'))),
|
||||
MagicMock(find=MagicMock(return_value={'href': '/url2'}))
|
||||
]
|
||||
# rest of the stuff
|
||||
@ -291,22 +291,22 @@ class TestSongSelectImport(TestCase, TestMixin):
|
||||
# first search result
|
||||
mocked_result1 = MagicMock()
|
||||
mocked_result1.find.side_effect = [
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 1'))),
|
||||
MagicMock(string='James, John'),
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 1'))),
|
||||
MagicMock(find=MagicMock(return_value={'href': '/url1'}))
|
||||
]
|
||||
# second search result
|
||||
mocked_result2 = MagicMock()
|
||||
mocked_result2.find.side_effect = [
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 2'))),
|
||||
MagicMock(string='Philip'),
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 2'))),
|
||||
MagicMock(find=MagicMock(return_value={'href': '/url2'}))
|
||||
]
|
||||
# third search result
|
||||
mocked_result3 = MagicMock()
|
||||
mocked_result3.find.side_effect = [
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 3'))),
|
||||
MagicMock(string='Luke, Matthew'),
|
||||
MagicMock(find=MagicMock(return_value=MagicMock(string='Title 3'))),
|
||||
MagicMock(find=MagicMock(return_value={'href': '/url3'}))
|
||||
]
|
||||
# rest of the stuff
|
||||
|
Loading…
Reference in New Issue
Block a user