Пример #1
0
    def as_album(self):
        album_struct = self.__link_interface.as_album(self.__link_struct)

        if album_struct is not None:
            ai = _album.AlbumInterface()
            ai.add_ref(album_struct)
            return album.Album(album_struct)
def albums_add():
    """
    Функция добавления артиста в БД, принимает POST
    """
    #получаем все поля
    incoming = {
        'year': check_in(request.forms.get("year"), r'^\d{4}$'),
        'artist': check_in(request.forms.get("artist")),
        'genre': check_in(request.forms.get("genre"), r'^[a-zA-Zа-яА-Я]+$'),
        'album': check_in(request.forms.get("album"))
    }
    #проверяем входные данные на корректность, если None, то данные не корректны
    for k, v in incoming.items():
        if v == None:
            return HTTPError(400, 'Не верно введен параметр {}'.format(k))
    #смотрим, если в БД уже есть такой альбом данного артиста
    albums_list = album.find(incoming['artist'])
    if albums_list:
        if incoming['album'] in [album.album for album in albums_list]:
            return HTTPError(
                409,
                'Альбом {} уже есть в базе данных'.format(incoming['album']))
    #если все хорошо, значит добавляем в БД. Подсовываем все поля в класс и отправляем его в функцию добавления dump_album
    print('Добавление нового альбома')
    new_alb = album.Album(year=int(incoming['year']),
                          artist=incoming['artist'],
                          genre=incoming['genre'],
                          album=incoming['album'])
    return album.dump_album(new_alb)
Пример #3
0
def create_album():
    # создаем словарь для обработки POST запросов
    album_data = {
        "artist": request.forms.get("artist"),
        "genre": request.forms.get("genre"),
        "year": int(request.forms.get("year")),
        "album": request.forms.get("album"),
    }
    # валидатор запросов
    for item in album_data:
        if not album_data[item]:
            return f"Упс... Вы не ввели '{item}' "

    match = re.match(r"[1-2][0-9]{3}", str(album_data['year']))
    if not match:
        return f"Неверно указан год"

    # переводим словарь в экземпляр класса
    new_album = album.Album(**album_data)

    # записываем новый альбом
    if album.save(new_album):
        result = f"Альбом {album_data['album']} артиста {album_data['artist']} сохранен"
    else:
        message = f"Альбом {album_data['album']} в исполнении {album_data['artist']} уже есть в базе"
        result = HTTPError(409, message)
    return result
Пример #4
0
 def add_album(self, album_name, artist_name):
     if artist_name not in self.artists:
         raise InputError('Artist not found. Please add artist')
     artist = self.artists[artist_name]  # Find instance of artist
     new_album = album.Album(album_name)
     self.albums.append(new_album)
     new_album.artist = artist  # Album to artist connection
     artist.albums[album_name] = new_album  # Artist to album connection
     return new_album
Пример #5
0
    def load_all_albums(self):

        for maindir, subdir, file_name_list in os.walk(utils.config["media_path"]):
            # list all media
            for filename in file_name_list:
                # find cover
                if 'cover.jpg' == filename:
                    _album = album.Album(maindir)
                    _album.initialization()
                    self.albums[maindir] = _album
def request_artist():
    artist_data = album.Album(
        year = request.forms.get("year"),
        artist = request.forms.get("artist"),
        genre = request.forms.get("genre"),
        album = request.forms.get("album")
    )

    if artist_data.year < "1900" or artist_data.year > "2020":
        return HTTPError(404, "Ошибка. Неправильный формат года выпуска альбома.")
    else:
        return album.save(artist_data)
Пример #7
0
def add_data():
    new_album = album.Album(year=request.forms.get("year"),
                            artist=request.forms.get("artist"),
                            genre=request.forms.get("genre"),
                            album=request.forms.get("album"))

    if validate_input(new_album) == 1:
        return HTTPError(409, "Год должен быть числом")
    elif validate_input(new_album) == 2:
        return HTTPError(409, "Год должен быть в формате YYYY")
    elif validate_input(new_album) == 3:
        return HTTPError(409, "Должны быть указаны artist и album")

    if album.check_original(new_album):
        return HTTPError(409, "Такой альбом уже существует в базе")
    else:
        album.change_database(new_album)
        return "Данные успешно сохранены"
Пример #8
0
    def load_yadofile(self, path):
        """ファイル("wch", "wcp", "wpl", "wpt", "wyd", "wrm")を読み込む。"""
        with cwfile.CWFile(path, "rb") as f:

            lpath = path.lower()
            if lpath.endswith(".wyd"):
                data = environment.Environment(None, f, True)
                data.skintype = self.skintype
                self.wyd = data
            elif lpath.endswith(".wch"):
                data = adventurer.AdventurerHeader(
                    None, f, True, dataversion=self.dataversion_int)
                self.wchs.append(data)
            elif lpath.endswith(".wcp"):
                data = adventurer.AdventurerCard(None, f, True)
                self.wcps.append(data)
            elif lpath.endswith(".wrm"):
                data = album.Album(None, f, True)
                self.wrms.append(data)
            elif lpath.endswith(".wpl"):
                data = party.Party(None,
                                   f,
                                   True,
                                   dataversion=self.dataversion_int)
                self.wpls.append(data)
            elif lpath.endswith(".wpt"):
                data = party.PartyMembers(None,
                                          f,
                                          True,
                                          dataversion=self.dataversion_int)
                self.wpts.append(data)
            elif lpath.endswith(".whs"):
                cards, albums = party.load_album120(None, f)
                for data in cards:
                    self.wcps.append(data)
                for albumdata in albums:
                    self.wrms.append(albumdata)
                data = None
            else:
                f.close()
                raise ValueError(path)
            f.close()

        return data
Пример #9
0
def save_user(user_data):
    alb = album.Album(
        artist=user_data["artist"],
        year=user_data["year"],
        genre=user_data["genre"],
        album=user_data["album"]
    )
    try:
        int(alb.year)
    except ValueError:
        return "Год введен некорректно!"
    album_list = album.find(alb.artist)
    album_name = [album.album for album in album_list]
    if alb.album in album_name:
        message = "Альбомов {} не найдено"
        result = HTTPError(409, message)
        print('Альбом {} уже есть в списке'.format(alb.album))
        return result
    album.main(alb)
Пример #10
0
def add_album():
    year = request.forms.get("year")

    try:
        year_validation.year_validation(
            year)  #проверяет валидность значения для года

    except Exception:
        return HTTPError(400, 'Некорректное значение для года!')

    else:
        new_album = album.Album(year=year,
                                artist=request.forms.get("artist"),
                                genre=request.forms.get("genre"),
                                album=request.forms.get("album"))

    if not (album.find_album(new_album)):
        album.save(new_album)
    else:
        raise HTTPError(409, f'Альбом {new_album.album} существует')
def create_new_artist():
    """ сохраняет в базу данных переданную пользователем информацию о новом альбоме """
    class MinError(Exception):
        """ вспомагательный пустой класс для обработки пользовательского исключения """
        pass

    # вспомагательная переменная (если в базе данных обнаружится существующая запись - изменим на True)
    exist = False

    try:
        # из переданных в веб-формате данных о новом альбоме формируем новую строку для записи в базу
        # создаем экземпляр класса Album() из модуля "album.py"
        artist_data = album.Album(year=int(request.forms.get("year")),
                                  artist=request.forms.get("artist"),
                                  genre=request.forms.get("genre"),
                                  album=request.forms.get("album"))
        # если указанный год альбома меньше 1860 года (т.е. когда была создана первая в мире аудиозапись),
        # возбуждаем соответствующее исключение
        if artist_data.year < 1860:
            raise MinError()

        # формируем список альбомов по запрошенному артисту
        albums_list = album.find(artist_data.artist)
        # сверяем данные нового альбома с существующими альбомами артиста
        for item in albums_list:
            if artist_data == item:
                return HTTPError(409, "Такая запись в базе данных уже есть!")
                exist = True
                break

        # если такого альбома нет - сохраняем в базу данных новый альбом
        if not exist:
            album.save(artist_data)
            return "Данные успешно сохранены!"

    # перехватываем ошибку, когда пользователь ввел не целое число в year
    except ValueError:
        return "Некорректно указан год!"
    # перехватываем, когда введен год, меньше 1860г
    except MinError:
        return "Указанный год меньше 1860г!(в этом году была осуществлена самая первая аудиозапись в мире!)"
Пример #12
0
 def __init__(self):
     self.album = album.Album()
     self.left = None
     self.right = None
def getAlbum(name):
	for x in allAlbums:
		if x.albumName == name:
			return x



if __name__ == "__main__":

	

	with open("listOfSongs.txt", "r") as listOfSongs:
		
		songObj = songClass.Song()
		artistObj = artistClass.Artist()
		albumObj = albumClass.Album()

		for record in listOfSongs:
			albumName, publishYr, artistName, songName, duration = tuple(record.strip("\n").split("\t"))
			
			#  Create / Retrieve Song
			if songObj.songName != songName:
				if not songName in allSongs:
					songObj = songClass.Song(songName, artistName, albumName)
					allSongs.append(songObj)
				else:
					songObj = getSong(songName)


			#  Create / Retrieve Artist
			if artistObj.artistName != artistName: