def __organize_file(self, f, method, target_folder=None):
        created_folders= set()
        if not target_folder:
            target_folder = os.path.dirname(f)

        frmt = f.split('.')[-1]
        if frmt not in self.__supported_formats:
            self.__errors.append(f)
            created_folders.update([self.__handle_errors(method, target_folder)])
            return created_folders

        if frmt == 'mp3':
            f_attr = id3(f)
        elif frmt == 'flac':
            f_attr = flac(f)
        elif frmt == 'ogg':
            f_attr = ogg(f)
        self.songs += 1
        artist = f_attr['artist'][0].replace('/', '-')
        album = f_attr['album'][0].replace('/', '-')
        title = f_attr['title'][0].replace('/', '-')
        try:
            os.makedirs(os.path.join(self.archive, artist, album))
        except OSError:
            pass
        self.__cmethod(f, '%s.%s' % (
            os.path.join(self.archive, artist, album, title), frmt), method)
        created_folders.update([os.path.join(self.archive, artist)])
        clean(self.archive)
        return created_folders
    def __organize_folder(self, folder, method, target_folder=None):
        created_folders = set()
        if not target_folder:
            target_folder = folder

        for root, folders, files in os.walk(folder):
            if target_folder in root and target_folder != folder:
                # this folder is already organized
                continue

            for f in files:
                frmt = f.split('.')[-1]
                f = os.path.join(root, f)
                if not frmt in self.__supported_formats:
                    self.__errors.append(f)
                    continue
                self.ui.printg(f)
                # try ?
                if frmt == 'mp3':
                    f_attr = id3(f)
                elif frmt == 'flac':
                    f_attr = flac(f)
                elif frmt == 'ogg':
                    f_attr = ogg(f)
                self.songs += 1
                artist = f_attr['artist'][0].replace('/', '-')
                album = f_attr['album'][0].replace('/', '-')
                title = f_attr['title'][0].replace('/', '-')
                try:
                    os.makedirs(os.path.join(self.archive, artist, album))
                except OSError:  # there is already a folder
                    pass
                self.__cmethod(f, '%s.%s' % (
                    os.path.join(self.archive, artist, album, title), frmt), method)
                created_folders.update([os.path.join(self.archive, artist)])

        # buraya dikkat
        created_folders.update([self.__handle_errors(method, self.archive)])
        if self.cover:
            self.__download_albumcover(created_folders)
        clean(self.archive)
        return created_folders
Example #3
0
    def main(self):
        for ana_dizin, dizinler, dosyalar in os.walk(self.yer):
            for dosya in dosyalar:
                Format = dosya.split(".")[-1]
                if Format in self.supported_formats:
                    _dosya = os.path.join(ana_dizin, dosya)
                    if self.hedef in ana_dizin and self.hedef != self.yer:
                        continue
                    printg("%s " % _dosya)
                    try:
                        if Format == "mp3":
                            dosya = id3(_dosya)
                        elif Format == "flac":
                            dosya = flac(_dosya)
                        elif Format == "ogg":
                            dosya = ogg(_dosya)
                        self.songs += 1
                        artist = dosya["artist"][0].replace("/", "-")
                        album = dosya["album"][0].replace("/", "-")
                        title = dosya["title"][0].replace("/", "-")
                        try:
                            os.makedirs(os.path.join(self.hedef, artist, album))
                        except OSError:
                            pass
                        self.method(_dosya, "%s.%s" %
                                (os.path.join(self.hedef, artist, album, title),
                                    Format))
                        printg("ok..\n")
                    except:
                        self.errors.append(_dosya)
                        printg("error..\n")
                else:
                    self.errors.append(os.path.join(ana_dizin, dosya))
                yield True

        self.download_albumcover()
        self.handle_errors()
        self.clean()
        yield False
Example #4
0
def duzenle(yer, hedef, yontem=cp):
    """
    Ana fonksiyon. Yer'deki tum dosyalari os.walk yardimi ile gezer.
    Formata uyan dosyalarin bilgilerini Mutagen yardimiyla okur.
    Gerekli klasorleri olusturur, belirtilen yonteme gore tasir veya kopyalar.
    """
    if not os.path.isdir(yer):
        print u"Arsiv konumu hatali."
        exit()
    if not os.path.isdir(hedef):
        os.mkdir(hedef)
        print u"Hedef klasor olusturuluyor.."
    errors = []
    songs = 0
    supported_formats = ["mp3", "flac", "ogg"]
    for ana_dizin, dizinler, dosyalar in os.walk(yer):
        for dosya in dosyalar:
            Format = dosya.split(".")[-1]
            if Format in supported_formats:
                _dosya = os.path.join(ana_dizin, dosya)
                print _dosya,
                try:
                    if Format == "mp3":
                        dosya = id3(_dosya)
                    elif Format == "flac":
                        dosya = flac(_dosya)
                    elif Format == "ogg":
                        dosya = ogg(_dosya)
                    songs += 1
                    artist = dosya["artist"][0].replace("/", "-")
                    album = dosya["album"][0].replace("/", "-")
                    title = dosya["title"][0].replace("/", "-")
                    try:
                        os.makedirs(os.path.join(hedef, artist, album))
                    except OSError:
                        pass
                    yontem(_dosya, "%s.%s" % (os.path.join(hedef, artist, album, title), Format))
                    print "tamam.."
                except:
                    errors.append(_dosya)
                    print "hata.."
            else:
                errors.append(os.path.join(ana_dizin, dosya))

    print "digerleri..",
    for dosya in errors:
        try:
            os.mkdir(os.path.join(hedef, "_DIGER"))
        except:
            pass
        _hedef = os.path.join(hedef, "_DIGER")
        yeni = dosya.split(os.path.sep)[-1]
        yontem(dosya, os.path.join(_hedef, yeni))
        songs += 1
    print "tamam.."

    print "log dosyasi..",
    log = open(os.path.join(hedef, "log.txt"), "w")
    log.write("%s kopyalandi.\n\n" % songs)
    error_count = 0
    for error in errors:
        error_count += 1
        log.write("%s\n" % error)
    log.write("\n\ttoplam: %s hata." % error_count)
    log.close()
    print "tamam.."