puddletag-1.0.2/ 0000755 0001750 0000144 00000000000 12236755734 013764 5 ustar keith users 0000000 0000000 puddletag-1.0.2/NEWS 0000655 0001750 0000144 00000061063 12236755654 014474 0 ustar keith users 0000000 0000000 7 November 2013 - 1.0.2
Fixed:
Escaped chars in functions weren't being escaped correctly. Check your functions if they make use of this odd behaviour.
Added:
Opus support.
Artwork windows list JPG + PNG's at the same time.
14 July 2013 - 1.0.2 RC1
Added:
Dropdown in Extended Tags that works like Tag Panel. Useful for editing multiple valued fields.
You can now submit your tags containing MusicBrainz IDs to AcoustID. I suggest you do this.
Russian and Czech translations. Compiled translations are also included in default install.
__total can be edited in Tag Panel and other places.
Fixed:
MP4 tagging not working at all. I cannot believe no one picked this up.
Discogs didn't return all album info.
31 August 2012
Fixes:
Issue 189.
puddletag.desktop file installation error with deb package.
Python2.6 incompatibility.
Changed:
AcoustID tag source is not loaded if fpcalc binary not found.
21 August 2012
Fixes:
Cutting tags wasn't working.
If multiple files were selected in file-view and edited.
When changing focus, the new cell would be opened and would remain
with the value as before after the change.
Changed:
Updated icon
Updated .desktop file as per issue 186.
Added:
Russian translation by Viktor Yu. Kovalskiy
German translation by Ralf Sarholz
9 June 2012
Fixes:
Loading a new directory would sometimes not unload previously loaded
directory.
Mp3tag tag source are more compatible.
AcoustID support without extra depencies except one.
Changes:
Filesystem panel will not update if hidden.
18 April 2012
Fixes:
Fixed issues with deb not un/installing.
Fixed issue with dropping album art on Artwork window. Invalid files would still affect the files that have been loaded.
Fixed error in parser where it wouldn't detect syntax errors correctly.
Changed:
Added translations to source tarball.
11 April 2012 - 1.0.0beta5
Fixes:
MusicBrainz works.
Discogs works better with regards to VA albums.
Amazon works again.
New Features
__md5_sig field for FLAC.
regex scripting function.
Dutch Translation by Fabian Bakkum.
Added AcoustID support, but not for general use yet due to the heavy dependency load. Do not try to make it work unless you're an 'advanced' user.
18 January 2012 - 1.0.0beta1
Masstagging improvements with regards to both matching (courtesy of beets)
and searching.
$ceiling, $eql, $floor, $round scripting functions.
Full support for Mp3tag tag sources.
Support for MusicBrainz and Discogs new APIs.
More than one file can be written to at a time in the file-view. Just
select more than one file, write to a field and Bob's your aunt.
6 June 2011 - 0.10.6
Fix for freezes if Update empty fields and 'Retrieve exact matches.' checked
in Tag Sources dialog.
4 June 2011 - 0.10.5
Fixed broken tag sources in release.
3 June 2011 - 0.10.4
News:
French translation contributed by Raphael Como.
Man page added.
New logo created.
Added data files to source tarball.
Added documentation to source tarball.
Added changelog.
New Features:
Much improved masstagging.
Save artwork to file Function.
Filter that behaves like Mp3tag's.
In Discogs tag source:
Added the ability to retrieve track artists
for Various Artist albums.
This required that the involvedpeople field be renamed
to involvedpeople_album as a list of involved people were
returned for each track too.
These people are added to the involvedpeople_track field.
Tag to filename and Tag->Dir functions handle patterns like
'../%artist%' and './%artist%/%album%' correctly.
Options for setting the pattern used in saving covers to file dialogs.
Fixes:
Multiple value handling for ID3v2.3
When editing actions, if a field not in the current list of fields was
used, then the list of saved fields would contain only that field.
Undoing renaming of dirs.
Patterns that use scripting functions like $validate(arg1,,arg3)
will work correctly in that the second argument will evaluate
to an empty string instead of being discarded.
Issue 132: Images weren't being added to list of fields to undo.
For Discogs Tag Source: Images were being retrieved even
if disabled when using textual searches.
Changing file in Extended Tags changes the selection in File-View,
thereby ensuring changes are written to the correct file.
Changes:
Unicode support for Replace with Regular Expression function.
peformersortorder has been renamed to performersortorder in ID3 tags.
Renaming dirs hooks into Tag->Dir function now.
The lyrics_us field is now unsyncedlyrics.
Functions dialog restores last used function upon first load.
A couple related to the QuodLibet library handling.
Proper error messages differentiating whether the error occurred
while writing to files or renaming dirs, files.
The semi-colon character(';') has been removed from the
list of invalid filename chars.
23 March 2011 - 0.10.3
Fixes:
Deleting tags containing mapped fields.
Functions operating on multiple values like Merge Field were broken.
peformersortorder is spelt correctly as performersortorder for ID3 tags.
Renaming directories when intermediate directories are to be created.
20 March 2011 - 0.10.2
Contains a fix for bug discovered in 0.10.1 where the default dir for saving artwork defaults to home directory.
20 March 2011 - 0.10.1
New Features:
Loading subfolders can be turned on/off using the Filesystem Window.
USLT Frame support for ID3.
A bunch of new fields.
Stored Tags window shows the values of all tags found in file.
Experimental ID3 support. Don't use unless you really need to.
Fixes:
Retrieving PUIDS using the MusicBrainz tag source.
Adding album art from Tag Source was defective.
The Tag Panel not updating with 'previewed' values.
Properties window not showing.
Changes:
Values in the Stored Tags window aren't emboldened anymore due to
performance reasons.
8 March 2011 - 0.10.0
puddletag is now licensed under the GPLv3
New Features:
Album art for all formats (except ASF)
Loading master releases in the Discogs.com tag source.
Changes:
For ID3 tags, UFID frames are now only loaded if the data can be decoded to UTF8.
MusicBrainz artist search retrieves 100 albums by default.
The initial reading of a directory can be canceled now.
Fixes:
Uncaught errors for Tag Sources shouldn't 'freeze' the Tag Sources window anymore.
Discogs artist/albums are parsed correctly instead of being mostly junk.
Amazon keyword search wasn't working at all.
Having periods in the Tag->Dir function were causing problems.
9 February 2011 - 0.9.12
puddletag is now fully translatable.
Changes:
Users stuck using python-musicbrainz2 < 0.7.0 shouldn't have problems with puddletag crashing on startup.
Nor is python-musicbrainz2 a hard dependency any more.
The default user agent now set to puddletag/0.9.12. New users will be able to use the Discogs Tag Source 'out of the box'.
Fixes include, but are not limited to:
Editing __dirname and __dirpath while using QuodLibet library is now possible + tons of Music Library related bugs.
Editing Actions sometimes didn't work.
The Load Artwork function didn't work as advertised.
%__total_files% and %__counter% not working when used within scripting functions.
The Artwork Window is floating by default. Fixes an issue whereby the puddletag window would be larger than the screen.
20 December 2010 - 0.9.11
Another bug where the Tag Sources dialog would freeze when retrieving albums is fixed.
18 December 2010 - 0.9.9
A bug was discovered in Discogs that'd make it fail on the vast majority of albums (just not the ones I tested with). This release is to fix that. But I've included the following to:
New Features:
Discogs uses the Discogs ID field (which you can define) if it's found in your files.
You can use your own Amazon and Discogs API keys.
__counter and __total_files which you can use in Functions and Actions.
Fixes:
Case Sensitivity for field names is handled better.
16 December 2010 - 0.9.8
New Features:
Translations
A new Function to correct incorrectly encoded files contributed by Stjujsckij Nickolaj.
MoveUp and MoveDown shortcuts that move the selected files Up/Down in file-view.
The folowing fields were added to the MusicBrainz tag source:
mbrainz_rating, label, country, isrcs, musicip_puid, asin, barcode
Select all in Dir has been removed. I've added two new menu items. Select Next in Dir and Select Previous Dir.
Support for GUI plugins.
A Discogs Tag Source that uses Discogs.com's XML service. I'm not sure how complete this tag source is since Discogs.com's documentation is woefully impcomplete. Set a user-agent in order to use it.
Tag->Dir
Using Default theme icons.
Changes:
The Replace with Regular Expression function now starts from $1 instead of $0. I had to do this in order for Mp3tag's Tag Sources to work. Please update your actions.
Previews in the Functions now show previews.
Action Shortcuts settings have been moved from Preferences to the Actions dialog.
Tools->Sort Selected is now Tools->Sort By. The last sort option is now saved inbetween sessions/loads.
Fixes:
MP4 mappings and handling of unicode fields in MP4 files.
ID3's rating didn't handle missing parameters well.
Crashes due to renaming many directories at once.
Undo errors while in Preview Mode.
Quick Actions weren't working at all.
Bug in Amazon Tag Source while retrieving small images.
Loading playlist's with any contained file's having commas.
Tag Panel not saving if genre isn't present.
30 October 2010 - 0.9.7
New Features:
The Autonumbering wizard is now a Function.
Fields are now case-insensitive. Which means that if a file contains a field named 'album', writing to 'ALBUM' will rename 'album' to 'ALBUM'.
You can add your actions as shortcuts to the Actions menu. See the tooltip for Create Shortcut in Actions dialog for details.
Bugs:
Just a couple were fixed, but nothing noteworthy.
Changes:
Filenames are now written using the filesystem's encoding instead of UTF-8 (though you should be using UTF-8 anyway ;).
A new logo cause the old one was getting a bit long in the tooth.
Functions now save their state.
13 October 2010 - 0.9.6
Major bug fixed where the fields weren't being shown in the Functions dialog.
9 October 2010 - 0.9.5
New Features:
Actions and Functions now operate and write multiple-valued fields.
A bunch of new Functions, see the [Functions](functions.html) page for a listing.
Two new scripting functions copied straight from Mp3tag, $meta_sep and $meta.
A new icon. This one designed by Yianni Pappas-Acreman.
A new Tag Tools menu, with which you can remove ID3 and APEv2 tags from files where they don't belong.
Configurable confirmations. Like when you want to Rename Directories, etc.
A __dirname field. Modify this field to rename the directory.
UFID frames for ID3v2 Tags.
Monkey's Audio File's are now supported.
The Actions and Functions dialogs can now be tool windows too (See Windows Menu).
All documentation has been updated.
Fixes:
If it was broken before, it probably works now.
The one major fix is that you can load files with messed up encodings now, instead of having puddletag choke on them.
Changes:
Files that have previews now have a green background while in Preview Mode (Configurable in Edit->Preferences).
The configuration for the MusicBrainz Tag Source has been removed. Instead I've opted to return MusicBrainz fields (Album ID, Artist ID, Track ID) by default in mbrainz_track_id, mbrainz_album_id and mbrainz_artist_id. I've also set up default mappings, so that these fields are written to the correct field for each format. Remove ~/.puddletag/mappings to get these.
25 August 2010 - 0.9.4
New Features:
Profiles were added to MassTagging, which means now you can do a configuration once and use that forever.
Renaming files is now possible within Preview Mode.
A new Function called 'Remove Fields' that does exactly that.
A new scripting function (contributed by Erik Reckase) that'll convert unicode strings to ASCII.
The plugin interface for tag sources is now public. See the docs [here](extending.html).
Right click on any directory. Click the refresh button to refresh it.
You can now change the shortcut for any menu item. Edit->Preferences->Shortcuts to configure.
Also, you can now sort selected tracks using predefined fields. Some defaults are in Tools->Sort Selected. Configure using the 'Edit sort options' button in Preferences.
I've finally added a RSS Feed to the website.
Bugs:
Some bugs related to Preview Mode not working correctly.
A bunch of others that aren't really worth mentioning.
Changes:
I've changed the way Tag Sources store their settings, so you'll need to reconfigure them.
11 August 2010 (0.9.3)
New Features:
WavPack, MusePack, and basic WMA support (only common fields, not including artwork are supported.)
Masstagging, which'll allow you to tag files from multiple tag sources automatically.
Preview Mode, wherein you can do all your editing and write to files only once.
A 'Load Artwork' Function with which you can load artwork from the file's directory.
The plugin interface is now public for functions. Tag sources will be available in the next release.
Converting filenames to tags can now take the directory name into account.
Bugs:
Some Tag Panel Bugs, including entries being replaced if an autocompletion was found of differing case. Genres always being Acapella and when adding entries like Blues\\Rock not being separated properly. And puddletag crashing on loading non-ASCII genres.
Copy/Paste not working correctly sometimes.
(Sorry that this one slipped by.) Saving artwork using Extended tags would clear the artwork instead if the cover differed between files.
Duplicate entries in comboboxes for the Functions dialog are now removed.
4 July 2010 (0.9.2)
New features:
FreeDB and Amazon tag sources were added.
And puddletag can now use the MusicBrainz ArtistID if it's in a file's tag instead of searching for one. Still need to enable it for releases.
Tag mappings for tag sources, see the tooltip in Preferences/Mappings for more info.
And the ability to load only files based on their extension (Preferences/Tags to configure.)
A new applicication icon created by Evan himself.
11 June 2010 (0.90)
puddletag now has only two known bugs (and many unknown). That is all. There's some UI changes some new features too for those interested.
11 May 2010 (0.8.8)
Fixed some regressions with writing artwork and allowed saving of pictures in jpeg too.
1 May 2010 (0.8.7)
New Features:
Amazon tag sources plus a bunch of small stuff.
Fixes:
Very many.
14 April 2010
New Features
Multiple tag sources support. Musicbrainz only for now, will add more over the coming week.
Tag mappings. Map a tag to whatever you want to.
Some tags were changed. See the puddletag.sourceforge.net/tags.html
More ID3 tags are supported.
Unicode in MP4 tags is supported.
Library code has been rewritten. Currently only QuodLibet is supported. Will add more week after next.
Some of the scripting functions with odd names (if_, not_, etc.) have been renamed to what they're supposed to be.
All icons not created by me are from the Oxygen icon set for KDE. As soon as I found out how to detect if GNOME is running, I'll add some Ubuntu icons.
Fixes:
Far too many to list.
5 November 2009
New Features:
The only new feature for this release is that the musicbrainz dialog now allows you to select individual tracks. I like it better now.
Fixes:
Some bugs with loading directories were fixed.
11 October 2009
New Features:
A Stored Tags dialog that shows the current tags of the selected file as stored on disk. Useful for when editing libraries and the tag differs from the tag on disk.
I added an option to allow retrieval of duplicates via a specific tag. This can speed things up for some searches.
And finally, a setup script.
Fixes:
There were a lot but the major ones are:
Duplicates can retrieve more than 300 at a time. (My fault for not checking.)
Musicbrainz now works for all cases (it gave an error when retrieving via 'album').
There ain't no more barfing of errors while editing text in the pattern combo.
Reloading works again (didn't even know it was broken).
Changes:
Instead of changing the background colour of a row, the Musicbrainz dialog now just bold the text that's to be written.
9 September 2009 (0.7.8)
New Features:
A duplicates finder, which is super useful. It's not as well tested as I'd like so I'll make that a priority for the next release.
Rudimentary file-editing support had been added to the filesystem view.
Bugs were fixed where needed (I seriously need to remember to log this stuff)
Note that I haven't added any progress bars for these features (due in a week) so just have patience when using them (and keep an eye on the command line for errors).
Changes:
I've changed the config system to use ConfigObj as PyQt4's too buggy and Python's built in library too sucky.
The website looks a lot better.
4 June 2009 (0.7.0)
New Features:
Loading times are improved by a couple of miliseconds.
Showing duplicates can now be slightly fuzzy by adding : in front of the tag that's to be used.
Added an :artist fuzzy compare listing to the libary view.
Fixes:
Sorting or doing anything else while some rows are higlighted is fixed.
Other little stuff that I can't remember.
Changes:
The user interface has been modified just a tad, to be me 'aligned.'
1 May 2009 (0.6.5)
New Features:
Cut, copy, paste.
All Functions now have a saved history.
The current selection is now preserved when sorting.
Saving and loading is a lot faster. On par with Mp3tag.
Changes:
Because, of the cut, copy, paste actions being added. All window menus, were move to a new Windows Menu.
A progress indicator is shown when loading a music library.
An error message is shown (on the console) if a file failed to load.
puddletag settings are now stored in ~/.puddletag
Fixes:
Saving or changing the image type now works in both the tag editor and Extended tags dialog.
Also, the image controls being enabled or disabled depending on the file now works properly.
Clicking Cancel while loading or saving works instantly.
11 April 2009 (0.6.0)
Bugs wrt to tagging were fixed, like:
Saving pictures on an mp3 file with the same description.
No more 'copy method' doesn't exist errors.
Flickering of the >> and << buttons belowe images were removed.
Buttons on the image editor are enabled or disabled depending on file.
10 April 2009 (0.5.9)
Mp4 support was added (Mutagen > 1.9 is needed and Mutagen <= 1.9 isn't supported anymore.)
Bugs wrt FLAC are sorted.
And a console version was added. At the moment it's pretty basic, but as time goes on, it'll become better.
23 March 2009 (0.5.4)
More bugfixes, especially related with the library treeview.
The In Library and Show Dupes action now change the colors of the rows that match instead of hiding those that don't.
The Rename Dir action now works with library files. Keep in mind though that it only works for files loaded in the file-view and any other files that happen to reside in the same directory will not be updated.
10 March 2009 (0.5.3)
A couple of bugfixes.
Actions sometimes behaved unexpectedly in that they didn't take the currently edited values into account.
The show dupes button now works.
A search was added button to the library window, so that slow searches(like prokyon) don't suck as much.
A bug where strings such as '%artist% - %title%.lower(%__ext%) didn't work as expected, because the last part wasn't matched properly.
8 March 2009
Nope, still don't got no console version(next release, definitely).
Anyway, some changes from the last release include:
The abilitiy to search the music libraries(Albeit slowly).
A totally revamped parsing system(though it'll look the same from the users point of view).
Like Mp3tag, Actions are now stored separately instead of in one big file.
Two extra toolbar buttons, "In library" and 'Show Dupes".
If a library is loaded then "In library?" hides all the files that are not in the library.
"Show Dupes" hides all the files in the file-view that doesn't have a duplicate(in the file-view).
For the next release I'll concentrate on supporting the rest of Mutagen's supported formats, fixing bugs and smoothing the user interface(progress when loading a library, faster search, etc.).
Expect some interim updates over the next couple of days and a complete release in about a month(1 April 2009).
5 February 2009
This is basically a bugfix release.
The were far too many to list here, but some of the major ones were unicode related like:
Unicode support in prokyon, amarok and rhythmbox libraries was fixed.
UTF-8 is used for everything.
puddletag's unicode issues were sorted(e.g. If the last folder you visited
contained non-ascii characters, puddletag would give you a big F-U.
Changing a picture using the extended tags dialog now works.
Some other interesting stuff include:
The user interface has changed. This includes the look of the icons have improved (they're still shitty, but still)
If you wanna, you can use the __image tag to show the currently selected file's cover in the Tag Editor (Go to Preferences -> Tag Editor to add it)
Hmmm, most of the other changes have to do with code quality and refactoring, which I doubt you'll wanna hear.
The only thing I have for the next release is more powerful scripting and (maybe not, but probably) a console version.
20 January 2009
Added Music library support for Amarok, Prokyon and Rhythmbox.
Currently, it's kinda sucky, but I'll spend some time on it and fix
it as best I can.
The extended tags dialog now support editing and saving images.
It also acts a bit more like Mp3tag's with options to move to the
next and previous file in the file-view.
The tag editor and filesystem editors have been converted to tool windows
to allow more interface customization.
Multiple tags are now available. I've followed Mp3tag's style of allowing
the user to create multiple tags by using '\\' in the tag editor and
removing multiple tags if the tag was edited in the file view.
Nasty bug that deleted any tags not recognized by puddletag was removed.
Any bugs to do with the extended tags dialog has been fixed(I hope)
I modified much of the loading and saving code to be independent of
PyQt so that users using PyQt 4.4.3 don't get those save and loading errors
anymore.
...Can't remember what else I did, cause I forgot to update the log.
3 December 2008
Interface stuff:
The musicbrainz dialog doesn't freeze anymore.
Added a splash screen for the long loading times at the beginning.
Genres are now available too
2 December 2008
Just two things
Added shortcuts -> Just press Ctrl+W to switch between the file-view, pattern combo and tag combos.
Fixed niggling things like some controls not having accelerators.
puddletag-1.0.2/puddletag 0000755 0001750 0000144 00000020523 12161432626 015652 0 ustar keith users 0000000 0000000 #!/usr/bin/env python
# -*- coding: utf-8 -*-
#import psyco
#psyco.full()
import sys, os
from optparse import OptionParser
def check_libs():
"""Check for required libs.
If some not found, show/print a message.
Exit if requirements aren't met."""
_libs = [('mutagen', '(usually python-mutagen or just mutagen)',
'http://code.google.com/p/mutagen/'),
('configobj', '(usually python-configobj)',
'http://code.google.com/p/configobj/'),
('pyparsing', '(python-pyparsing or python-parsing in most distros)',
'http://pyparsing.wikispaces.com/'),
('PyQt4', '(python-qt4 usually)',
'http://www.riverbankcomputing.co.uk/software/pyqt/intro')]
found = True
errors = []
msg = "Error: The %s module wasn't found. Please check that it's installed " \
"properly. Download it from your distro's repository" \
" %s or directly from %s \n"
for lib in _libs:
try:
__import__(lib[0])
except ImportError:
print msg % lib
errors.append(msg % lib)
found = False
msg = "Error: %s module wasn't found. %s. Please check that it's " \
"installed properly. You can download it from your distro's " \
"repository (%s), or download directly from %s.\n"
try:
if not found:
from PyQt4.QtGui import QApplication, QMessageBox
app = QApplication([])
QMessageBox.critical(None, 'puddletag', '\n'.join(errors))
except:
pass
if not found:
sys.exit(1)
def create_log():
"""Creates a log file. Redirects sys.stderr sys.stdout output to it."""
join = os.path.join
rename = os.rename
exists = os.path.exists
from puddlestuff.constants import SAVEDIR
if not os.path.exists(SAVEDIR):
os.mkdir(SAVEDIR)
for i in reversed(range(1, 5)):
filename = join(SAVEDIR, 'log%d.log' % i)
if exists(filename):
rename(filename, join(SAVEDIR, 'log%d.log' % (i + 1)))
log_file = join(SAVEDIR, 'log.log')
if exists(log_file):
rename(log_file, join(SAVEDIR, 'log1.log'))
f = open(log_file, 'w')
sys.stdout = StdOut(sys.stdout.write, f.write)
sys.stderr = StdOut(sys.stderr.write, f.write)
def init(options, qapp):
"""Initializes things that need to be initialized.
Parses command line options. Loads Translations. Sets fontsize."""
if options.version:
#It's already printed.
exit()
#create_log()
if options.debug:
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
load_language(qapp, options.langfile)
if options.fontsize:
try:
size = int(options.fontsize)
font = qapp.font()
font.setPointSize(size)
app.setFont(font)
except IndexError:
print 'No fontsize specified.'
except ValueError:
print 'Invalid fontsize specified.'
def load_language(qapp, langfile=None):
"""Loads the language file to be used by puddletag.
app => QApplication object.
langfile => If None, then the last option the user chose will be used.
Should be a path to a Qt translation file (.qm)."""
TRANSDIR = puddlestuff.constants.TRANSDIR
global translators #Needs to live throughout app.
translators = []
if langfile:
if not langfile.endswith('.qm'):
print translate('Defaults', 'Invalid translation file.')
langargs = None
else:
langargs = os.path.basename(langfile), os.path.dirname(langfile)
else:
langargs = None
if not langargs:
cparser = PuddleConfig()
lang = cparser.get('main', 'lang', u'auto')
langs = get_languages([TRANSDIR])
if lang != 'auto':
if lang in langs:
f = langs[lang]
langargs = os.path.basename(f), os.path.dirname(f)
if not langargs and lang != 'default':
locale = unicode(QLocale.system().name())
if locale in langs:
f = langs[locale]
langargs = os.path.basename(f), os.path.dirname(f)
if langargs and langargs != 'default':
translator = QTranslator()
translator.load("qt_" + QLocale.system().name(),
QLibraryInfo.location(QLibraryInfo.TranslationsPath))
translators.append(translator)
if 'puddletag_' in langargs[0]:
translator = QTranslator()
locale = langargs[0][len('puddletag_'):-len('.qm')]
translator.load("qt_" + locale,
QLibraryInfo.location(QLibraryInfo.TranslationsPath))
print "Locale: " + locale
translators.append(translator)
translator = QTranslator()
if translator.load(*langargs):
translators.append(translator)
elif langargs != 'default':
translator = QTranslator()
translator.load("qt_" + QLocale.system().name(),
QLibraryInfo.location(QLibraryInfo.TranslationsPath))
print "Locale: " + unicode(QLocale.system().name())
translators.append(translator)
else:
print "Loading default (ie. no) translation."
for t in reversed(translators):
qapp.installTranslator(t)
puddlestuff.constants.trans_strings()
puddlestuff.puddleobjects.trans_imagetypes()
def parse_cmd_options():
usage = "Usage: %prog [options] [directory path]"
parser = OptionParser(usage=usage)
parser.add_option("--langfile", dest="langfile",
default='',
help="Path to a translation (.qm) file.", metavar="LANGFILE")
parser.add_option("--fontsize", type='float',
dest="fontsize", help="Default fontsize to use (in points).")
parser.add_option("-d", "--debug", action="store_true",
dest="debug", default=False, help="Show (useless) debug messages.")
parser.add_option("-v", "--version", action="store_true",
dest="version", default=False, help="Show version info and exit.")
return parser.parse_args()
def print_info():
"""Print program info."""
from puddlestuff import version_string, changeset
if changeset:
print translate('Defaults', 'puddletag Version: %1, Changeset: %2').arg(
version_string).arg(changeset)
else:
print translate('Defaults', 'puddletag Version: %s' % version_string)
class StdOut(object):
"""Class to redirect stdout/in/err."""
def __init__(self, old_write, new_write):
"""old_write should be the original sys.stdout.out
new_write is a function is what sys.stdout.out will be replaced with.
Text will be passed to both functions."""
self._old_write = old_write
self._new_write = new_write
def write(self, text):
self._old_write(text)
try:
self._new_write(text)
except:
pass
if __name__ == '__main__':
check_libs()
from PyQt4.QtGui import QApplication, QPixmap, QSplashScreen, QIcon
from PyQt4.QtCore import (pyqtRemoveInputHook, QTranslator,
QLibraryInfo, QLocale)
import pdb, logging
pyqtRemoveInputHook()
#Load puddletag modules.
from puddlestuff import resource #Needs to be first as other modules use it.
import puddlestuff.constants
from puddlestuff.puddleobjects import get_languages, PuddleConfig
from puddlestuff.translations import translate
#Init.
print_info()
app = QApplication(sys.argv)
options, filenames = parse_cmd_options()
init(options, app)
#Depends on init being called first.
from puddlestuff.puddletag import MainWin
from puddlestuff.puddlesettings import load_gen_settings
app.setWindowIcon(QIcon(":/appicon.png"))
pixmap = QPixmap(':/puddlelogo.png')
app.setOrganizationName("Puddle Inc.")
app.setApplicationName("puddletag")
splash = QSplashScreen(pixmap)
splash.show()
app.processEvents()
win = MainWin()
splash.close()
win.setVisible(True)
app.processEvents()
#Check if dirnames passed on command line.
if filenames:
dirname = filenames[0]
if dirname and os.path.exists(dirname):
win.openDir(dirname, False)
elif load_gen_settings([('&Load last folder at startup', False)])[0][1]:
if win._lastdir and os.path.exists(win._lastdir[0]):
win.openDir(win._lastdir[0], False)
app.exec_() puddletag-1.0.2/TODO 0000644 0001750 0000144 00000001133 11764714347 014452 0 ustar keith users 0000000 0000000 Add ability to cancel a tag source lookup.
Ability not to save artwork to tag, or to tag & file or just file or not at all.
The only big things I can think about are:
Rhythmbox and mpd library support.
Library stuff, like finding duplicates, maybe some stats (I hate that most
programs don't provide good lib stats)
A better console version. It shouldn't do much besides editing tags,
running functions/actions.
Integrating the logging thing with the whole app and having logs for
most everything.
Massive, massive code cleanup.
Docs for everything that needs it like plugins and all the new stuff. puddletag-1.0.2/README 0000644 0001750 0000144 00000007617 11612773575 014657 0 ustar keith users 0000000 0000000 What it is
=========
puddletag is a audio tag editor for GNU/Linux similar to Windows program Mp3tag (http://www.mp3tag.de). Unlike most taggers for GNU/Linux, it uses a spreadsheet-like layout so that all the tags you want to edit by hand are visible and easily editable.
The usual tag editor features are supported like extracting tag information from filenames, renaming files based on their tags by using patterns (that you define, not crappy, uneditable ones).
Then there're Functions, which can do things like replace text, trim, change the case of tags, etc. Actions can automate repetitive tasks. You can import your QuodLibet library, lookup tags using MusicBrainz, FreeDB or Amazon (though it's only good for cover art) and more, but I've reached my comma quota.
Supported formats: ID3v1, ID3v2 (mp3), MP4 (mp4, m4a, etc.), VorbisComments (ogg, flac), Musepack (mpc), Monkey's Audio (.ape) and WavPack (wv).
Why it is
=========
Keeping an XP partition just for Mp3tag just wasn't feasible anymore.
How it's different
==================
To Mp3tag, not that much. It has more or less the same UI and functionality. You'll feel right at home here for the most part. However, puddletag isn't a clone, so check the skim the docs section on the puddletag website (puddletag.sourceforge.net) for more details.
What you need
=============
At least Python 2.5 available from http://python.org.
PyQt4 (4.5 or greater) (http://www.riverbankcomputing.co.uk/software/pyqt/intro) for the GUI.
PyParsing (1.5.1 or greater) (http://pyparsing.wikispaces.com) takes care of the parsing...
Mutagen (1.20 recommended, 1.14 required) (http://code.google.com/p/mutagen/) is used as the tagging lib and...
ConfigObj (4.5.0 or greater) (http://code.google.com/p/configobj/) takes care of saving settings.
The following are recommended
python-musicbrainz2 (0.6.0 or better) (http://musicbrainz.org/doc/python-musicbrainz2) for MusicBrainz support.
QuodLibet must be installed in order to edit a QuodLibet library.
Downloading/Installing
======================
From source:
Install the dependencies listed above.
For Debian-based distros, run the following as root to install them aptitude install python-qt4 python-pyparsing python-mutagen python-configobj python-musicbrainz2 python-imaging
Download the source tarball from http://puddletag.sourceforge.net. (If this file came from that tarball, ignore everything on this line.)
Unzip it.
You can run puddletag from that directory by typing ./puddletag in your console.
Alternatively install it by running python setup.py install as root in the unzipped directory.
puddletag should appear in your Multimedia (or Sounds etc.) menu. If not run 'desktop-file-install puddletag.desktop' as root in the unzipped directory.
Installing from the Debian package.
This package has been created on and for Ubuntu 10.04, but has been reported to work on Ubuntu 10.10, Sabayon and Debian Squeeze.
Download the package from http://puddletag.sourceforge.net.
Install using your distros preferred method (usually double clicking should suffice). Or:
Run as root dpkg -i /path/to/puddletag-deb.
Install dependencies using your favourite tool.
Run puddletag from your Multimedia menu.
Development builds are available via svn:
svn co https://puddletag.svn.sourceforge.net/svnroot/puddletag puddletag
License
=======
puddletag licensed under the GPLv3, which you can find in its entirety at http://www.gnu.org/licenses/gpl-3.0.html
Updates
=======
Release usually go out about once a month. Subscribe to the RSS feed at the website if you want to be updated.
Support
=======
Bugs go to the issue tracker at Google Code (http://code.google.com/p/puddletag/issues). Feature requests and things of general concern go on the forum (http://sourceforge.net/apps/phpbb/puddletag). For anything else I can be contacted via email at concentricpuddle@gmail.com.
puddletag-1.0.2/changelog 0000644 0001750 0000144 00000026064 12236755457 015650 0 ustar keith users 0000000 0000000 7 November 2014 - 1.0.2
Fixed: Escaped chars in functions weren't being escaped correctly. Check your functions if they make use of this odd behaviour.
Added: Opus support.
Added: Artwork windows list JPG + PNG's at the same time.
14 July 2013 - 1.0.2 RC1
Added: Multiple-valued fields can be added using '\\' in extended tags.
Added: Czech translation by Pavel Fric.
Fixed: MP4 tagging not working at all.
Added: Dropdown in Extended Tags that works like Tag Panel.
Fixed: Directory renaming not stripping invalid chars.
Fixed: $validate scripting function failing when '/' in arguments.
Fixed: Unable to delete fields if __total populated.
Added: __total can be edited in Tag Panel and other places.
Fixed: Album art can be dragged from browser. If link can be resolved, image will be loaded.
Added: Confirmation dialog if copying large amounts of data.
Added: In field selection dialog for columns, fields are listed in combo box.
Added: Support for MusicBrainz cover art.
Fixed: Search by ID for MusicBrainz tag source.
Added: Directory modified date is force-changed if files are modified.
Added: disambiguation to album title for MusiBrainz so that album titles would be "Somaro (Deluxe Edition)" instead of just "Somaro".
Added: Tags can be submitted to AcoustID.
Added: Russian translation.
Fixed: Removed invalid files from puddletag.pro for translations.
Changed: Column settings take ordering made by user (by dragging, etc) into account.
Fixed: checked Actions being overwritten by check Quick Actions selections.
Added: catno field to Discogs tag source.
Fixed: Discogs didn't return all album info.
Changed: Discogs multiple artists are concatenated using &.
Added: __total can be added to Tag Panel and edited.
31 August 2012 - 1.0.1
Changed: AcoustID tag source is not loaded if fpcalc binary not found.
Fixed: Issue 189.
Fixed: puddletag.desktop file installation error with .deb file.
Fixed: python2.6 incompatibility.
21 August 2012 - 1.0.0
Added: Updated icon
Fixed: Cutting tags wasn't working.
Added: Russian translation by Viktor Yu. Kovalskiy
Fixed: If multiple files were selected in file-view and edited.
When changing focus, the new cell would be opened and would remain
with the value as before after the change.
Added: German translation by Ralf Sarholz
Changed: Updated .desktop file as per issue 186.
Fixed: Encoding is added for genre field. Fixes http://sourceforge.net/apps/phpbb/puddletag/viewtopic.php?f=4&p=699&sid=10751cabefe27ffcd74eea2dde7663f8#p699
Fixed: Filter wasn't working with filename fields like __filename.
Added: To .desktop file, options that'll make it possible to right click in FM and open in puddletag.
9 June 2012 - 1.0.0RC1
Fixed: Issue 183 where the Tag Sources dialog wouldn't unfreeze for invalid results.
Added: Copy/Paste now copies the data as JSON to clipboard.
Fixed: Masstagging was discarding albums with same name.
Fixed: Issue 181. regex function wasn't working on Python 2.6.
Fixed: Edge cases with Mp3tag tag sources.
Fixed: Undoing filename related changes weren't being effected.
Fixed: Issue 180 where directories weren't unloaded when loading a new one.
Added: Status message for Mp3tag tag sources.
Fixed: Creating new actions duplicated old ones.
Added: Made it impossible to save Functions with invalid field names.
Fixed: AcoustID doesn't have as many dependencies. Only chromaprint as
included sampsyo's pyacoustid source and wrote supporting libs
to contain only needed code.
Changed: Filesystem panel will not update if hidden. Works for loading
large directories so puddletag won't freeze for an extended
period.
Added: AcoustID tag source also returns acoustid_fingerprint field.
Changed: If directory was created when removing a file, that directory will
be removed if change is undone.
18 April 2012 - 1.0.0beta6
Fixed issues with deb not un/installing.
Fixed issue with dropping album art on Artwork window. Invalid files would still affect the files that have been loaded.
Fixed error in parser where it wouldn't detect syntax errors correctly.
Added translations to source tarball.
10 April 2012 - 1.0.0beta5
Added AcoustID support. Not complete as yet.
Featuring artist in MusicBrainz tag source are parsed correctly.
Rate limiting for FreeDB as too many requests at once causes errors.
Restart numbering checkbox in Autonumbering wizard now hides the Total spinbox so that track numbering is generated for each directory.
$num function uses the length for the track number only and not the total.
Massively updated parser.
ID3v2.3 frames are written in same order as Mp3tag's.
$regex function added.
Fixed Amazon tag source as now requires AssociateTag to do lookups.
Added parameter to $num function to use track separators or not (default not)
For functions like $meta_sep to not use parsed patterns as things like \\\\ were being parsed as one separator instead of two.
VA album lookups for Discogs.
Dutch Translation by Fabian Bakkum.
Added __md5_sig field that lists internal MD5 signature of FLAC files.
For Discogs, fixed albums where tracks don't have lengths weren't being loaded.
Fixes issue 174, where if scrollbar shown in Functions dialog, it sometimes hides text.
12 February 2012 - 1.0.0beta4
Helpful menu items added to about menu.
Updated documentation.
Fixed centering of images in docs.
When Discogs returned no results there'd be an error.
24 January 2012 - 1.0.0beta3
Fixes for issue 171.
23 January 2012 - 1.0.0beta2
Fixed MusicBrainz not working (issue 170).
22 January 2012 - 1.0.0beta1
Improved masstagging for albums with weird track numbers.
Mastagging matching improved (courtesy of beets)
Masstagging ignores stuff inbetween brackets like "this name (disc 1)" and
retries the search.
Mastagging checks all files and rearranges for best matches instead finding the
best match for one file and putting that match out of the running for checking
with later files.
$round, $ceiling and $floor scripting functions.
Mp3tag tag sources are fully supported.
Files containing APEv2 tags are loaded even if the file is not a valid audio file.
Confirmations when exiting/loading dirs if file's still contain previews.
If writing previews to files fails, then those files' previews are kept.
$eql scripting function.
Fixed a bug whereby if a file has an invalid picture type, puddletag would not start up. https://sourceforge.net/apps/phpbb/puddletag/viewtopic.php?f=4&p=542#p542
If changed field for one file and multiple files selected, all will be update. Plus others.
Quickactions and actions' checked settings are now stored in different keys in config.
Plugins are sorted in plugin chooser widget.
Support for MusicBrainz's new API.
Update Discogs tag source to use new Discogs API as per http://www.discogs.com/help/forums/topic/234138.
An error would be raised when trying to save invalid picture data. Data is discarded now upon saving. Issue 167
--version command line option.
Request to check log to for more info in error messages.
24 August 2011 - 0.10.6.3
Did modifications for inclusion into Debian.
21 August 2011 - 0.10.6-2
No source changes. Added missing files required for Debian packaging.
6 June 2011 - 0.10.6
Fix for freezes if Update empty fields and 'Retrieve exact matches.' checked
in Tag Sources dialog.
4 June 2011 - 0.10.5
Tag Sources were broken in the release.
3 June 2011 - 0.10.4
News:
Man page added.
New logo created.
Added data files to source tarball.
Added documentation to source tarball.
French translation contributed by Raphaël Rochet.
Added changelog.
New Features:
Much improved masstagging.
Save artwork to file Function.
Filter that behaves like Mp3tag's.
In Discogs tag source:
Added the ability to retrieve track artists
for Various Artist albums.
This required that the involvedpeople field be renamed
to involvedpeople_album as a list of involved people were
returned for each track too.
These people are added to the involvedpeople_track field.
URL links for albums in Tag Sources dialog are shown for all
Tag Sources (except FreeDB).
Tag to filename and Tag->Dir functions handle patterns
like '../%artist%' and './%artist%/%album%' correctly.
Options for setting the pattern used in saving covers to file dialogs.
Ability to drag and drop folders on file-view.
Fixes:
Lines that contain '/' being parsed incorrectly in Import Text File dialog.
FreeDB tag source artist/album parsing.
Undoing renaming of dirs.
MusicBrainz Tag Source ratings error.
Tag->Dir creating subfolders when it shouldn't.
Issue 132: Images weren't being added to list of fields to undo.
Numbering of COMM frames (and others like it) to have frames with
the same description being number 0,1,2,3 instead of 0,01,002, etc.
When editing actions, if a field not in the current list of fields was
used, then the list of saved fields would contain only that field.
If a file contained an ID3v2.2 tag than that tag would be shown
twice in the Stored Tags window.
Patterns that use scripting functions like $validate(arg1,,arg3) will
work correctly in that the second argument will evaluate to an empty
string instead of being discarded.
For Discogs Tag Source: Images were being retrieved even if disabled
when using textual searches.
Changing files in Extended Tags changes the selection in File-View,
thereby ensuring changes are written to the correct file.
Editing colour in Extended Tags remaining green even if changed.
Multiple value handling for ID3v2.3
Changes:
Unicode support for Replace with Regular Expression function.
Overhaul of Masstagging internals.
peformersortorder has been renamed to performersortorder in ID3 tags.
Images can be removed when the Cover Varies in Extended Tags.
The semi-colon character(';') has been removed from the list of
invalid filename chars.
Renaming dirs hooks into Tag->Dir function now.
lyrics_us is now unsyncedlyrics
Proper error messages differentiating whether the error occurred.
while writing to files or renaming dirs, files.
Subfolder checkbox in the Filesystem window being enabled
when it had no reason to be.
If last loaded dir is not found on startup,
then all parents of that dir (still existing) will be expanded.
Functions dialog restores last used function upon first load.
In QuodLibet Library:
Changes the fields: _rating to rating, _skipcount to __skipcount, _playcount to playcount.
All fields are caseless.
Fixed the loading of fields with numbers for values.
Added the __tag and __tag_read fields.
puddletag-1.0.2/PKG-INFO 0000644 0001750 0000144 00000001312 12236755734 015056 0 ustar keith users 0000000 0000000 Metadata-Version: 1.1
Name: puddletag
Version: 1.0.2
Summary: An simple, powerful audio tag editor.
Home-page: http://puddletag.sourceforge.net
Author: concentricpuddle
Author-email: concentricpuddle@gmail.com
License: GNU General Public License v2
Download-URL: https://sourceforge.net/projects/puddletag/files/latest
Description: UNKNOWN
Keywords: tagging ogg mp3 apev2 mp4 id3
Platform: UNKNOWN
Classifier: Development Status :: 2 - Unstable
Classifier: Intended Audience :: Users
Classifier: Natural Language :: English
Classifier: Operating System :: GNU/Linux
Classifier: Programming Language :: Python :: 2.6
Classifier: License :: OSI Approved :: GNU General Public License v3
Classifier: Topic :: Tagging
puddletag-1.0.2/HACKING 0000644 0001750 0000144 00000001204 11612773575 014750 0 ustar keith users 0000000 0000000 Some things people have said about the puddletag code:
'Holy sh**' - some atheist after viewing the library code.
'Can somebody blind me, cause I don't think I'll be able to forget what I just saw if I still have sight.' - An experienced coder after opening a random puddletag source file.
'This thing runs?' - Some guy.
'Suddenly, I'm in the mood for spaghetti.' - Some guy's buddy after checking to see what his buddy was exclaiming about.
Feel free to knock out an email to concentricpuddle@gmail.com if you want to contribute or say anything about the code. (Give me at least a week to reply though, I don't check my email every day.)
puddletag-1.0.2/setup.py 0000644 0001750 0000144 00000002565 12236752374 015503 0 ustar keith users 0000000 0000000 # -*- coding: utf-8 -*-
# from setuptools import setup
from distutils.core import setup
# try:
# from setuptools import setup
# except ImportError:
# from distutils.core import setup
import puddlestuff
setup(
name='puddletag',
version=puddlestuff.version_string,
author='concentricpuddle',
author_email='concentricpuddle@gmail.com',
url='http://puddletag.sourceforge.net',
download_url='https://sourceforge.net/projects/puddletag/files/latest',
description='An simple, powerful audio tag editor.',
packages = ['puddlestuff', 'puddlestuff.mainwin',
'puddlestuff.libraries', 'puddlestuff.audioinfo',
'puddlestuff.tagsources', 'puddlestuff.tagsources.mp3tag',
'puddlestuff.masstag', 'puddlestuff.plugins'],
keywords='tagging ogg mp3 apev2 mp4 id3',
license='GNU General Public License v2',
classifiers=['Development Status :: 2 - Unstable',
'Intended Audience :: Users',
'Natural Language :: English',
'Operating System :: GNU/Linux',
'Programming Language :: Python :: 2.6',
'License :: OSI Approved :: GNU General Public License v3',
'Topic :: Tagging',
],
scripts = ['puddletag'],
data_files=[('share/pixmaps/', ('puddletag.png',)),
('share/applications/', ('puddletag.desktop',)),
('share/man/man1/', ('puddletag.1',))]
)
puddletag-1.0.2/puddletag.png 0000664 0001750 0000144 00000130771 11774632374 016456 0 ustar keith users 0000000 0000000 PNG
IHDR \rf sBIT|d pHYs j tEXtSoftware www.inkscape.org< IDATxygy{Z{}F3eFKo[el8`
!,'9 $'d=ߕ| NcWi$/
xe[4f齻zill}]}i]U]]U~?+RDa~BO B>D
ByHD0)1"!