#!/usr/bin/env python # -*- coding: UTF-8 -*- from __future__ import unicode_literals # at top of module import re import json import requests import logging from bs4 import BeautifulSoup from . import baseFile log = logging.getLogger("extractors.zaycev.net") class interface(object): name = "zaycev.net" def __init__(self): self.results = [] self.needs_transcode = False log.debug("Started extraction service for zaycev.net") self.file_extension = "mp3" def search(self, text, page=1): if text == "" or text == None: raise ValueError("Text must be passed and should not be blank.") site = "http://zaycev.net/search.html?query_search=%s" % (text,) log.debug("Retrieving data from {0}...".format(site,)) r = requests.get(site) soup = BeautifulSoup(r.text, 'html.parser') search_results = soup.find_all("div", {"class": "musicset-track__title track-geo__title"}) self.results = [] for i in search_results: # The easiest method to get artist and song names is to fetch links. There are only two links per result here. data = i.find_all("a") # from here, data[0] contains artist info and data[1] contains info of the retrieved song. s = baseFile.song(self) s.title = data[1].text s.artist = data[0].text s.url = "http://zaycev.net%s" % (data[1].attrs["href"]) # s.duration = self.hd[i]["duration"] # s.size = self.hd[i]["size"] # s.bitrate = self.hd[i]["bitrate"] self.results.append(s) log.debug("{0} results found.".format(len(self.results))) def get_download_url(self, url): log.debug("Getting download URL for {0}".format(url,)) soups = BeautifulSoup(requests.get(url).text, 'html.parser') data = json.loads(requests.get('http://zaycev.net' + soups.find('div', {'class':"musicset-track"}).get('data-url')).text) log.debug("Download URL: {0}".format(data["url"])) return data["url"] def format_track(self, item): return "{0}. {1}. {2}".format(item.title, item.duration, item.size)