| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import sites
- from command import last
- from helper import console
- from main import selected_site
- from helper.sites import itemsort
- from .last import last
- def search(cache=None):
- if cache is None:
- keywords = console.ask_input('Search for')
- _sites = []
- if isinstance(sites.available[selected_site], sites.DefaultSite):
- _sites = sites.available[1:]
- else:
- _sites = [sites.available[selected_site]]
- items = []
- for site in _sites:
- console.output('Searching: {0}'.format(site.url))
- _items = site.perform_search(keywords)
- console.output('\tFound {0} results'.format(len(_items)))
- items.extend(_items)
- if len(items) == 0:
- console.output('No results found')
- return True
- items = itemsort.smart(items, keywords)
- last(items)
- else:
- items = cache
- while True:
- picked_item = console.option_picker('Pick a song to download',
- items,
- quit=True,
- objects=[
- '__id__',
- 'x.score',
- 'x.duration',
- 'x.size',
- 'x.artist',
- 'x.title'
- ],
- table=[
- ('ID', 2),
- ('Score', 5),
- ('Time', 5),
- ('Size', 4),
- ('Artist', 50),
- ('Title', 100)
- ])
- if picked_item is None:
- break
- else:
- item = items[picked_item]
- console.output('Downloading {0}'.format(item.title))
- item.site.download(item)
- break
- return True
|