GNUupod 0.99.7

Summary
-------

I was planning to release GNUpod 1.0, but Heinrich Langos
flooded me with patches, many thanks to him:
- Fix DBID width in gnupod_search.pl output
- Added --bitrate switch to gnupod_search.pl
- Added --podcast-files-limit switch to gnupod_addsong.pl
- Added Podcast-Date patch (GNUpod now depends on Date::Parse)
- Added --unique switch to extractArtwork.pl
- Added xescaped() patch. GNUpod will now store
  non-ascii data escaped in it's GNUtunesDB.xml, however: you can still
  write UTF8 into the file using a decent editor (Such as Yudit).
  xescaped is now also a lot faster, giving GNUpod a nice speedup.

*** OLD STUFF ***

GNUpod 0.99.6

Summary
-------

- Fixed M4A-Genre support (for numeric values)
- Use udevinfo to find the iPods Firewire-GUID (as /proc/bus/usb/devices is depricated)
- Support for iPhone: Edit ~/.gnupodrc and add 'model = iphone'
- Some documentation 'fixes', thanks a lot to Toby Cabot
- gnupod_addsong.pl: replace wget with curl
- Use binmode() more often to help Win32


GNUpod 0.99.5

Summary
-------
- Added Artwork-Support for Video, Nano and 2007-Nano iPods
  You'll need to set the value 'model' in your configuration file.
    See doc/gnupodrc.example for more details.
- Fixed Video-Podcast support for late 2007 iPods
- Fixed iPod GUID autodetection on linux. GNUpod 0.99.4 failed if the iPod
  was the last entry of /proc/bus/usb/devices
- The iTunesDB parsing code is now much more flexible and uses callbacks.
- Remove UTF8-BOM (Fixes garbage if source was UTF16 encoded)
- Removed broken lastfm support


GNUpod 0.99.4

Summary
-------
- Added README_FIRMWARE.txt file
- Added compilation-patch, thanks to Ray Lortie
- Rewrote mktunes.pl to be faster and more readable :-)
- Added support for 2007-iPods (iPod Classic, iPod Nano-2 and iPod Touch (?) )
  
  Apple attempted to lockout non-iTunes software by implementing an obscure
  protection using a sha1-hash. This sucked very bad.. for about 36 hours.
  This GNUpod release is able to overcome the silly protection. Thanks
  a lot to 'wtbw' for discovering some random numbers and implementing hash58.cpp
  
  Feel free to express your feelings about this
  issue at http://www.apple.com/feedback/ipod.html



GNUpod 0.99.3

Summary
-------

- Fixed invalid warning about broken mhip header. (tunes2pod.pl)
- Less stricter Podcast-Playlist parsing
- Reduced MP3::Info false-positives: Empty files are
  no longer detected as .mp3 files
- tools/fwpatch.pl: Support for video iPods added (yeah!)
- gnupod_convert_RIFF.pl: Support for new ffmpeg builds (s/aac/libfaac/)
- Upgraded from GPLv2 to GPLv3



GNUpod 0.99.2

Summary
-------

- Added support for Podcast-Playlists.
- Filter out bad chars from '--rename' command.
- Added RVA2 (Normalize) patch by Peter Liljenberg
- gnupod_INIT.pl: Added --noask option
- gnupod_addsong.pl: --playlist can now be used multiple times
- gnupod_addsong.pl: added --playlist-is-podcast command
- gnupod_addsong.pl: Added workaround for glibc/linux/perl bug/problem (realloc() error)
- Raised video-bitrate for on-the-fly converting
- Added configuration option 'automktunes'. Setting
  'automktunes = 1' inside ~/.gnupodrc eliminates the need
  to call mktunes.pl after adding/deleting/renaming songs because GNUpod
  will call mktunes.pl itself.
- Many internal changes / bugfixes to iTunesDB.pm like fixing an incorrect
  written mhip size. Playlist parsing has also been rewritten and cleaned up.
- Bugfix: Do not detect PCM files as movies when using --decode


GNUpod 0.99.1 - codename 'Klaus ist eine Wurst'

Summary
-------

- iTunesDB.pm: Added some new fields and SPL-Defs (Removes some warnings while running tunes2pod / gnupod_INIT)
- QTFile.pm: Search tracklength inside 'mdhd' as a fallback
- Added support for iPod-shuffle 2


GNUpod 0.99 - codename 'Pentarou'

Summary
-------

- iPod-Video support
  gnupod_addsong.pl can now read/add .mp4 files

  Converting .avi (RIFF) files on-the-fly works
  only IF your ffmpeg binary has AAC Support!
  (Adding preencoded files works witout ffmpeg)

  Try: gnupod_addsong.pl --decode=video *.avi

- Fixes a playlist problem with iTunes5 (new 100 Mhods)

- '--encode' didn't remove tempfiles from /tmp .. works again

- Added Support for .ape (MAC - http://sourceforge.net/projects/mac-port/) files (use --decode=foo)

- Added 'mediatype' support (for video) and stricter mhit parsing (for very old databases)

- Workaround for broken files written by 'Anapod'
  Set 'tunes2pod.anapodworkaround=1' inside ~/.gnupodrc
  to enable it. Enabling it slows down tunes2pod.pl
  (because it deactivates the fast-skip of the (useless)
   MasterPlaylist)

- QTFile.pm: rseek() now refuses to return more than 1024 kb. Fixes possible out-of-memory problems
             with broken files.

- Fixed an obscure gnupod_search.pl bug causing some weird search results.

- Added DESTDIR support (make DESTDIR=/tmp/bla install) and removed slackpkg target (obsoleted)


GNUpod 0.98.3 - codename 'Socke'

Summary
-------

- gnupod_addsong.pl can now fetch podcast-rss feeds!
  Example: 'gnupod_addsong.pl http://www.tagesschau.de/export/podcast'

- Added basic support for podcast-rss and podcast-guid in tunes2pod.pl and mktunes.pl

- Fixed small bug in FileMagic.pm: UTF16-Tags didn't work.
  Thanks to Chris Abajian for reporting this issue.

- Read TPE2 / TP2 for MP3-Files

=> Please note: Podcast support is still in BETA and 'real podcasts' are currently not supported



GNUpod 0.98.2 - codename "Jigen"

Summary
-------

- Changed the file-detection-type order
  of FileMagic.pm from:
  NonNative > QT > MP3 > PCM
  ..into..
  NonNative > QT > PCM > MP*

  ..MP3::Info had some false-positives and detected
  a few PCM-Files as MP3s :-/. The PCM-Detection
  is much simpler and shouldn't create any false-
  positives.
  Thanks to Stefano Vesa for reporting the Problem.

- GNUpod had some problems if the $IPOD_MOUNTPOINT
  contained whitespaces.
  Switched to File::Glob::bsd_glob() to fix this issue.

- iPod-Mini 1.4 Software is broken, avoid using it!
  -> Apple lowered the Max. Pathlength from 64 to
     55. GNUpod will now crop after 49 chars (who knows what
     Apple will do next time?)
     ..you can run 'gnupod_check.pl --fixit' to crop
     songs you added with an older version.
  -> Looks like Apple also broke the SmartPlaylists Liveupdate
     Feature. I couldn't get it to work with iTunes and GNUpod. Good job guys!
     Since GNUpod only supports 'liveupdate-smartplaylists', you can't
     use any SPL's with GNUpod and iPod-Mini 1.4 . Downgrading to 1.3 helps.

- gnupod_check.pl has now a --fixit switch. It will try to
  fix the found errors itself

- Updated documentation: Tell how to extract a
  Firmware-Image on Linux. (And others? Well, you need
  HFS+ Support)

  


GNUpod 0.98.1 - codename 'Lupin the 3rd'

Summary
-------

- Added support for multiple On-The-Go playlists.

- gnupod_addsong.pl can now reenocde aac and mp3 'on-the-fly'
  Usage: gnupod_addsong.pl --reencode 6 *.mp3
  This would reenocde everything with 'lame -V 6'
  Use this if you don't have much space left (iPod Shuffle?!)
  Note: The Reencode option also changes the quality of
        files converted with '--decode=' :-)

- Added support for m4a 'gnre' tags

- Fixed some iPod-Shuffle issues
   * mktunes.pl removes the iTunesShuffle leftover

- Remove TARGET-File if File::Copy() failed for any reason
   => Better handling of 'disk full' but still not perfect
      [GNUpod should write a 'sparefile' or something like that]


GNUpod 0.98 - codename 'Luna 9'

Summary
-------

- Support for iPod-Shuffle!
  (I do not know why Apple uses
   another Database for this thing!!!)
   Thanks to:
     * Chris Scott for testing and providing samples
     * Jeff Thieleke (From FooPod)
     * ..and Rodja Trappe (Samples + Testing)

- Fixed 'songnum' for ID3V1 Tags .. ouch

- Workaround for perl5.6 feature/bug
  'addtime' shouldn't be below zero anymore

- Write more tags for m4a files..

- Internal Change: Removed the ugly _itop and _x86itop..
  I hope i didn't break anything ;)

- Switched from Audio::FLAC to Audio::FLAC::Header



GNUpod 0.97 - codename guezli

Summary
-------

- 0.96 didn't write 'tracknum' for OGG Files, fixed now..
  Thanks to Ed Wandasiewicz for reporting this bug

- Read 'tracknum' on ID3V2 Files with 'TRK' Field

- Handle ID3Tags with Charset info

- You can now add MIDI files ;-) (with timidity)

- Added --set-songnum option for gnupod_addsong.pl

- Rewritten ConverterCore.. shouldn't break anything...

- gnupod_search.pl can now RENAME/Edit tags.
  use --rename="artist=New artist Name"

- You can now sort playlists:
  <playlist .. sort="artist"> or (reverse)
  <playlist .. sort="reverse title">

- Do not generate filenames longer than 64 chars..
  looks like the iPod Photo has a problem
  (Thanks to Mathieu Chouquet-Stringer for reporting)

- Added tools/fwpatch.pl. Allows you to convert an
  EU-iPod into an US-iPod (Make it louder)


GNUpod 0.96 - codename 'kartoffelsaft'

Summary
-------

- Changed --decode switch from gnupod_addsong.pl
  You can now select the output format of --decode
  -> pcm(old default) / MP3 (using lame) / AAC (using FAAC)  
  Example: # gnupod_addsong.pl --decode=mp3 *.flac
  (Idea and original patch from <daniel at kefa.co.uk>)

- GNUpod can now also convert OGG-Vorbis files
  (Use --decode=XXX, same as FLAC)

- Added --playlist=STRING switch to gnupod_addsong.pl
  This creates the playlist 'STRING' and adds all songs
  passed to gnupod_addsong.pl to this playlist.
  (Thanks to Bob Cotton)

- Many changes for the M4A parser, should work better now
  (Searches the SOUND Stream!)

- Write tracknum for AAC/ALAC files (doh!)

- Support for Bookmarks (Just rename .m4a files into .m4b)

- Convert strange Genre-Strings in MP3 Tags ( (17) -> Rock )

- Support for 'Playlist IDs' (Useless feature ATM ;) )


GNUpod 0.95 - codename 'sockentier'


Summary
-------

- GNUpod has now a configuration file! Read the docs or/and
  see doc/gnupodrc.example

- Added funky SmartPlaylist creator, see doc/mkspl.html
  (Needs JavaScript + DOM => Mozilla)
  ** SMARTPLAYLIST SYNTAX CHANGED **

- gnupod_addsong.pl can now add FLAC files.
  'flac' needs to be in your $PATH and it's disabled
  per default. (Enable it using gnupod_addsong.pl --decode
  or set 'gnupod_addsong.decode=1' in your config)

- gnupod_addsong.pl can read ALAC (Apples Loseless Audio Codec)
  files (iTunes creates normal .m4a files)

- Polished Playcounts parser (no hardcoded offsets anymore)

- added '--disable-v2' and '--disable-v1' to
  gnupod_addsong.pl (Disable parsing of ID3TAG version X)

- Fixed small bug with .m4a files and added more fields.
  gnupod_addsong.pl can now read M4A/AAC files from www.allofmp3.com

- added tools/m4a-info.pl: Use this tool to read Title/Artist tags
  from .m4a files (not installed by 'make install')

- You can modify the output of gnupod_search.pl using --view
  (See 'gnupod_search.pl --help')

- gnupod_addsong.pl checks for wrong extensions
  (like a mp3-file called 'test.wav'). The iPod wouldn't play
  such a file.

- Fixed some SmartPlaylist stuff and added support for last
  playtime

- Added gnupod_check.pl, it check's for 'lost' files

- I changed the 'build' system. Btw, you can now uninstall
  GNUpod using 'make uninstall' .. but why? :)

- Added manual pages

- GNUpod warns about case-sensitive mounted filesystems



GNUpod 0.94 - codename 'aspartam'


Summary (hmm.. it's a long summary..):
--------------------------------------
- Nobody did buy me a 40gb iPod with Firmware 2.x

- I bought one myself

- gnupod_addsong.pl understands .m4a files
  (= AAC Files written by iTunes)
  I don't know if it works with DRM files (.m4p?)
  I don't have any DRM files and i'm not interested
  in DRM files...
  If you like to see support for DRM files, send
  me a patch ;-)

- Added support for On-The-Go playlists!
  (2.x Firmware-only-feature)

- GNUpod can now handle the 'Rating' set
  on the iPod (2.x Firmware-only-feature)
  It does also update the Playcounts on v2
  iPods

- GNUpod checks if the iTunesDB did change and
  runs tunes2pod.pl if it has to run it

- Changed rating-schema to match SPL-Rating
  -> Rating 5 is now 100 (newrating=oldrating*20)
  mktunes.pl will drop old (= now invalid) ratings,
  no autoconvert... sorry.. but does anyone care?

- gnupod_addsong.pl understands ID3v2.2 tags

- You'll have to install Digest::MD5

- You can also call your GNUtunesDB
  GNUtunesDB.xml



Details:
--------

I removed the '-x' and '-i' switch, because
it wouldn't work well together with the
autosync

FooBar.pm:
 * connect() changed a lot

FileMagic.pm:
 * Stupid bug: We can now also read
   ID3v2.2 tags - Thanks to
   David Ranch for the Bugreport
 * Detect Arrays returned by MP3::Info
   (no ARRAY(XXX) on the iPod anymore :) )

iTunesDB.pm
 * Added 'Play Counts' parser (=Rating)
 * Changed rating Schema
 * _itop() checks for very big values and dies

QTfile.pm
 * A dirty QuickTime parser

gnupod_otgsync.pl
 * A new tool, don't use it yourself :)
   It's only used internal.



GNUpod 0.93 - codename 'Shorthorn'

Summary:
--------
- Reading MusicMatch files should work (again)
- gnupod_addsong.pl can add WAVE files
- Parsing large iTunesDB files should be faster
  (-> we skip the MainPlayList)


Details:
--------
iTunesDB.pm and co:
 * Can read and write Playlist-Elements without child
   tunes2pod.pl couldn't read files written by
   (newer) MusicMatch releases.. this should fix the issue :)
 * Don't parse MasterPlaylists, do a seek()
   -> Speeds up parsing
 * Read and Write SamplingRate (Helps audible.com files? ..no)

FileMagic.pm
 * Fixed (Again?) ID3 reading (Charset handling still broken?!)
 * Read SamplingRate for MP3 Files

XMLhelper.pm
 * Output is sorted




GNUpod 0.92 - codename 'frau beyersdorf'

-> This version supports SmartPlaylists (BETA!)

iTunesDB.pm:
  * Fixed the very old 'gnupod versus iTunes' bug
    -> iTunes shouldn't try to 'resort' playlist items anymore
       (Note: iTunes will ALWAYS re-sort the playlists.. that's
        a 'feature' of iTunes)
  * Added 'eq syntax check', you can use (since 0.90) 
    'eq="#!#NUMBER#!#' to specify the EQ-Setting per song.
    mktunes.pl will now check if this syntax is correct.
    (You'll see a warning if it failed)
  * Fixed get_string() to handle null-size strings correct
  * Changed some internal things (using hrefs.. etc)
  * Misc SPL-Related code

XMLhelper.pm:
  * Misc cleanups
  * Added SPL-Support
  * Added check for playlist duplicates
  * Fixed escape bug for <playlist name=..

FileMagic.pm
  * Fixed (?) ID3v2 reading

tunes2pod.pl:
  * Added paranoia checks (stricter parsing)
  * Added SPL-Read code (BETA!)

mktunes.pl
  * Added SPL-Write support
  * regex-matches are sorted by id

gnupod_addsong.pl:
  * duplicate-checker displayed the
    wrong number of the dup, works again





GNUpod 0.91 

Much changed from 0.90 to 0.91.
I removed XML::Simple and use (again)
XML::Parser (Event based GNUpod.. .. again)
0.91 needs much less memory...

I hope i didn't break anything.. but...


gnupod_search.pl:
  * -d doesn't delete all songs anymore.. hups..
  * Playlist-Cleanup works now.. (another stupid bug.. :-/) 
  * Added '--title' switch to usage

gnupod_addsong.pl:
  * Can read from STDIN again (use 'gnupod_addsong.pl -')
    (I forgot this feature ;) )

gnupod_INIT.pl
  * Added '--france' switch (Limit volume to 100 db for
    1.x Firmware)

mktunes.pl
  * New Playlist-Code.. MUCH faster now
    (Wow.. again? no.. the code of 0.90 was
     VERY slow with many files (~3000) and more
     than ~15 big playlists)
  * Added '--volume' switch: Adjust the volume on the iPod!
    Use something like 'mktunes.pl --volume 70' to boost
    the volume by 70% (same as volume="70" in the GNUtunesDB)

XMLhelper.pm
  * Fixed the cleandoc() bug
  * Dropped XML::Simple.. it's stupid :-/

..and..
  Changed 'Win' to 'Windows/W32/etc'





GNUpod 0.90

- This is a *COMPLETE* rewrite of GNUpod, expect new bugs
  and some new features ;)

Highlights:

- Faster (?)
- REAL Unicode Support (Perl 5.8 and 5.6, .. i hope!)
- Cleaner Code (?)
- Support for elements like 'playcount / volume .. etc' (Read the docs)


This release isn't perfect but it works nice and i think its good
enough to be released :)

No Support for AAC (mp4) and SPL (SmartPlayLists) in this release, 
but AAC Support will be added soon (GNUpod 0.91?) and adding
SPL Support is possible ;)


gnuPod 0.29-rc1
- Unicode Support!!
  Use an UNICODE Texteditor to edit the GNUtunesDB..
  (Like 'yudit' or the gnome2 texteditor)
  Your old latin1 GNUtunesDB will get converted to an
  UTF8 version after running tunes2pod.pl/gnupod_addsong.pl or
  gnupod_delete.pl

  UTF8 Support isn't testet very well, and gnuPod 0.28 maybe more
  Stable for you.. but as you can see: somebody is working on it ;)
- 'Rebuild' mode does now *never* check for duplicates
- gnupod_delete doesn't kill some playlists if you tried to
  kill ID 0


gnuPod 0.28
- Rewritten Playlistcode for tunes2pod.pl
- tunes2pod.pl doesn't kill your empty GNUtunesDB anymore
  if it can't find the iTunesDB
- mktunes.pl uses now binmode(), maybe this helps
  RedHat 8 ? .. (and win32 ;) )
- mktunes.pl is now *much* faster!!
- the GNUtunesDB written by gnupod_delete.pl looks
  nicer now :) (id= is now always the first element..)

gnuPod 0.27 codename 'codename'
- We are now on gnu.org
- Fixed 'creating playlists' sample in documentation.
- Firmware 1.1.0 can read FAT32, updatet documentation.
- gnupod_delete.pl doesn't kill regex playlists anymore (ouch)
- gnupod_search.pl supports -g(enre)
 (Thanks to Johan Ruttenberg)

gnuPod 0.26
- We are going to be a GNU package:
 > Support for LongOpts
 > Documentation aviable as TexInfo
 > GNU-Style build system (configure/make)
- You can now create (mktunes) and convert (tunes2pod)
  empty playlists (0 songs)
  This isn't usefull, but iTunes can do it and we should
  also be able to do it.
- tunes2pod supports now buggy, ehr. funny playlists
  written by MusicMatch
- Playlists are now sorted on the iPod as they are found
  in the GNUtunesDB - file
- mktunes.pl no longer accepts <playlist..> when </file> was
  not found.
- gnupod_addsong.pl handles long filenames now better
- Timestamp should now be set correct
  (utime(undef,undef.. didn't work on every OS..)
- new playist keywords. You can now use <regex ..
  to create a playlist using regular expressions.
  <regex is case sensitive, use <iregex if you want case INsensitive
  checking


gnuPod 0.25 (API-Freeze i think ;) )
- New Syntax (We use getopt)
- Many small bugfixes
- Fixed mktunes and tunes2pod 'touch' bug
- tunes2pod creates now a nicer XML file
- 'composer' added to gnupod_addsong.pl
- Fixed 'Genere' - 'genre' typo.. args!
 (Thanks to Guillaume Leclanche)
- gnupod_addsong.pl knows now winamp genres (NOT generes!! *doh!*)
- gnupod_addsong.pl can now read from stdin, for example:
  find /blabla/foo | gnupod_addsong.pl -gm /mnt/ipod -
 (note the -g switch (no need to press ENTER) and '-')
 (Many thanks to Scott Savarese)

gnuPod 0.22 
- Bugfix in tunes2pod for Perl 5.8
 (Many thanks to Orion Buckminster Montoya)
- tunes2pod typo corrected *doh!*
 (Orion Buckminster Montoya again :) )
- Support for tracknumbers like "01/18"
 (Many thanks to Darrell Golliher)
- Support for 'composer' tag (just in XML/iTunesDB, not ID3)
 (Thanks to Alexey Marinichev for providing the ID :) )
 
 
gnuPod 0.21
- Fixed stupid tunes2pod.pl bug with big iTunesDBs
 (Thanks to Ciamac Moallemi for reporting and providing a patch)
- Support for songnum, songs, cdnum, cds and year


gnuPod 0.2
- Changed to XML as file format
- Added Playlist support
- Support for new iTunes attributes


gnuPod 0.1
- First working release!
