{"id":49,"date":"2010-12-08T21:43:16","date_gmt":"2010-12-08T20:43:16","guid":{"rendered":"http:\/\/www.idoru.be\/notes\/?p=49"},"modified":"2010-12-08T21:45:26","modified_gmt":"2010-12-08T20:45:26","slug":"atomic-parsley-manual","status":"publish","type":"post","link":"http:\/\/www.idoru.be\/notes\/atomic-parsley-manual\/","title":{"rendered":"Atomic Parsley Manual"},"content":{"rendered":"<p>See <a href=\"http:\/\/sourceforge.net\/projects\/atomicparsley\" target=\"_blank\">http:\/\/sourceforge.net\/projects\/atomicparsley<\/a><\/p>\n<p>AtomicParsley is distributed under the GPL &#8220;AS IS&#8221;, without any warranty; without even the implied warranty of merchantability or fitness for either an expressed or implied particular purpose.<\/p>\n<p>AtomicParsley is a command line program for reading &amp; writing iTune-style metadata in mpeg4 files (m4a, m4b, m4p, m4v &amp; mp4) whether iTMS drm protected or not. AtomicParsley can set most user accessible tags, and some that iTunes doesn&#8217;t let you change. Of particular note are the Mac OS X only image modification preferences that allow artwork to be modified prior to embedding. Artwork can be converted to jpeg, file size limited, reduced &amp; squared through setting command line preferences.<\/p>\n<p>Currently, AtomicParsley lets you set these type of iTunes-style tags in MPEG-4 files:<\/p>\n<p>artist\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0lyrics\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0category\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0TVEpisodeNum<br \/>\ntitle\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0album artist\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0artwork\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0TVSeasonNum<br \/>\nalbum \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0composer\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0compilation\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0podcast flag<br \/>\ngenre\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0copyright\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0advisory\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0podcast feed url<br \/>\ntracknumber\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0grouping\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0stik\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0podcast episode GUID url<br \/>\ndisknumber\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0bpm\/tempo\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0TVNetwork\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0purchase date<br \/>\ncomment\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0description\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0TVShowName\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0encoder tool<br \/>\nyear \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0keyword\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0TVEpisode\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0play gapless<\/p>\n<p>3GPP &amp; 3GPP2 files (.3gp &amp; .3g2) have a different set of metadata tags available called assets:<\/p>\n<p>title\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0author\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0performer\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0genre<br \/>\nalbum\u00a0\u00a0 \u00a0*\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0year\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0copyright\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0description<br \/>\nrating\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0keyword\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0classification\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0location<\/p>\n<p>* album asset is only available on 3gp6 and later branded files.<\/p>\n<p>All mpeg-4 based files support &#8216;uuid&#8217; user-defined extensions atoms &amp; ISO copyright notices:<\/p>\n<p>tagtime\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0url \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0information<br \/>\nANY user-defined atom with text\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ANY user-defined atom with embedded file<br \/>\nISO-copyright [at movie and\/or track level(s)]<br \/>\n______________________________________________________________________________________________<br \/>\nWorking with AtomicParsley<\/p>\n<p>The format for working with files is always the same:<\/p>\n<p>\/path\/to\/AtomicParsley \/path\/to\/your.m4a [options]<\/p>\n<p>Example to set a picture file into your mpeg4 file (jpeg or png only):<br \/>\nAtomicParsley \/path\/your.m4a &#8211;artwork \/path\/to\/your.jpg<\/p>\n<p>Exampe of setting multiple tags into your mpeg4 file:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;artist &#8220;I am an Artist&#8221; &#8211;title &#8220;This is the Title&#8221; &#8211;album &#8220;The iAlbum&#8221; &#8211;genre &#8220;Progressive Zydeco&#8221; &#8211;tracknum 1\/2 &#8211;disknum 1\/2 &#8211;year 1985 &#8211;comment &#8216;Superlative (I made this TODAY!!!)&#8217; &#8211;lyrics &#8216;Go, Go, GO! (repeat)&#8217; &#8211;composer &#8220;I Claudius&#8221; &#8211;grouping &#8220;Ennui&#8221; &#8211;copyright &#8220;LowDown Recordings&#8221; &#8211;bpm 20 &#8211;compilation true &#8211;advisory clean &#8211;artwork \/path\/to\/your.jpg &#8211;artwork \/path\/to\/your2.jpg<\/p>\n<p>Example of using the artwork preferences to limit the embedded artwork size &amp; dimensions:<br \/>\nexport PIC_OPTIONS=&#8221;MaxDimensions=400:MaxKBytes=50:AllPixJPEG=true:SquareUp:removeTempPix&#8221;<br \/>\nAtomicParsley \/path\/your.m4a &#8211;artwork \/path\/to\/your.jpg<\/p>\n<p>Example to change your own mpeg4 file into an iTunes TV show:<br \/>\nAtomicParsley \/path\/your.mp4 &#8211;genre &#8220;TV Shows&#8221; &#8211;stik &#8220;TV Show&#8221; &#8211;TVNetwork FOOnn &#8211;TVShowName &#8220;Some Showname&#8221; &#8211;TVEpisode &#8220;1120&#8221; &#8211;TVEpisodeNum 20 &#8211;TVSeason 11<\/p>\n<p>Example to change your own mpeg4 file into a Video Podcast (FrontRow requires the purl atom, iTunes doesn&#8217;t):<br \/>\nAtomicParsley \/path\/your.mp4 &#8211;podcastFlag true &#8211;stik &#8220;Movie&#8221; &#8211;podcastURL &#8220;http:\/\/www.fictionalURL.com&#8221;<\/p>\n<p>Example of extracting embedded artwork in your mpeg4 file to the same folder:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;extractPix<\/p>\n<p>To see the atom tree of your mpeg4 file:<br \/>\nAtomicParsley \/path\/your.m4a -T<\/p>\n<p>To see the metadata tags set into your mpeg4 file:<br \/>\nAtomicParsley \/path\/your.m4a -t<\/p>\n<p>Note Mac users: iTunes looks at type\/creator when opening an mpeg4 file. As of AtomicParsley 0.8.1, you no longer need to change extensions to\/from anything &#8211; this is automatically determined through the information in the file itself and is set accordingly. A podcast mpeg-4 file may cause some concern at first because it shows up as being a protected file with a lock on the icon. This is nothing to be concerned about; iTunes uses the same icon\/file info for &#8216;M4B &#8216; and &#8216;M4P &#8216; types &#8211; that&#8217;s it. They aren&#8217;t drm&#8217;ed in any way, just a sharing of icon\/Finder info.<br \/>\nNote2: iTMS purchased media often has \u00a9day set to &#8220;2005-09-06T07:00:00Z&#8221; or something similar. This is normal and is called Coordinated Universal Time and is denoted by the Z at the end. iTunes only displays the year, but in fact there is an entire date that is there.<\/p>\n<p>Writing out is non-destructive &#8211; the original file is unaltered. There is a command-line option to over write the source file: use it with caution or on duplicates. Starting with version 0.9, AtomicParsley can used available padding to rapidly update tags. This option is only available with the &#8211;overWrite option.<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nErasing atoms with AtomicParsley<\/p>\n<p>To delete metadata &#8220;&#8221;:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;artist &#8220;&#8221; &#8211;title &#8220;&#8221;<\/p>\n<p>To delete all artwork (on the covr atom):<br \/>\nAtomicParsley \/path\/your.m4a &#8211;artwork REMOVE_ALL<\/p>\n<p>To delete every piece of metadata (in the &#8220;moov.udta.meta.ilst&#8221; hierarchy); drm files will still play as normally:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;metaEnema<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nSetting 3gp assets with AtomicParsley<\/p>\n<p>3gp metadata assets are more complicated than iTunes-style metadata. Assets can be in either utf8 or utf16, and are for a specific language. Multiple like-named tags differing in the language are supported allowing for up to around 480 tags per asset. See the AtomicParsley &#8211;3gp-help page for more. 3gp assets are only available on 3gp files &#8211; setting iTunes-style metadata is not allowed.<\/p>\n<p>3gp assets have more options than iTunes tags &#8211; most are hardcoded with defaults. Defaults are as follows:<\/p>\n<p>Default encoding: utf8 (utf16 also available)<br \/>\nDefault language: &#8216;eng&#8217; (about 480 other languages supported; none are currently checked)<br \/>\nDefault Rating: entity = &#8216;NONE&#8217; (4spaces); criteria = &#8216;NONE&#8217; (4 spaces)<br \/>\nDefault Classification:\u00a0 entity = &#8216;NONE&#8217; (4 spaces); index = 0<br \/>\nDefault Location: Longitude: = -73.98; Latitude = 40.77; Altitude = 4.3; Role = shooting location; Astronomical Body = Earth; Additional notes = &#8216;none&#8217; [Central Park] &#8211; altitude is measured in meters; negative values are appended with a capital letter (S for southern latitudes, W for western longitudes, B for below sea level.)<\/p>\n<p>Setting a title asset for the spanish language in utf16:<br \/>\nAtomicParsley \/path\/your.3g2 &#8211;3gp-title &#8220;The Rain In Spain&#8230;&#8221; lang=spa UTF16<\/p>\n<p>Setting a album asset (with tracknumber) for the sve language in utf8:<br \/>\nAtomicParsley \/path\/your.3g2 &#8211;3gp-album &#8220;Bjorn Diddles His Banjo of Death&#8221; track=2 lang=sve<\/p>\n<p>Setting a rating asset for the japanese language in utf16:<br \/>\nAtomicParsley \/path\/your.3g2 &#8211;3gp-rating &#8220;A superlative 4-on-the-floor house anthem.&#8221; entity=MOMA criteria=PU18 lang=jpn UTF16<\/p>\n<p>Setting a location asset for the english language in utf16:<br \/>\nAtomicParsley \/path\/your.3g2 &#8211;3gp-location &#8220;Bethesda Terrace&#8221; latitude=40.77 longitude=73.98W altitude=4.3B role=&#8221;real&#8221; body=Earth notes=&#8221;Underground in Central Park&#8221; UTF16<\/p>\n<p>Setting a keyword asset for the french language in utf8:<br \/>\nAtomicParsley \/path\/your.3gp &#8211;3gp-keyword &#8220;keywords=France,Paris,Basilique du Sacr\u00e9-C\u0153ur, Sewers, stinky cheeses&#8221; lang=fra<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nSetting copyright notices at movie and\/or track level<\/p>\n<p>The only defined piece of metadata designed for descriptive annotations of the presentation\/track is the copyright notice. If your file contains 4 tracks, there are 5 places to set copyright notices, max \u2014 each of the tracks + movie level. There may be multiple notices, differing by language &amp; may be present at any combination of movie and\/or track level in either utf8 or utf16. Defaults are lang=eng &amp; utf8.<\/p>\n<p>Please note that at movie level, this notice is identical the the 3gp copyright asset, and if present for the same langauges this will overwrite the exising asset.<\/p>\n<p>Examples:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;ISO-copyright &#8220;\u00a9 2006, Lalalandia Productions&#8221; movie UTF16<br \/>\nAtomicParsley \/path\/your.m4a &#8211;ISO-copyright &#8220;\u00a9 2006, Produ\u00e7\u00f5es Da Estrada&#8221; track lang=por<br \/>\nAtomicParsley \/path\/your.m4a &#8211;ISO-copyright &#8220;\u00a92006. USA&#8221; track=1 &#8211;ISO-copyright &#8220;\u00a92006. \u0395\u03bb\u03bb\u03ac\u03b4\u03b1&#8221; track=2 lang=gre &#8211;ISO-copyright &#8220;\u00a92006. \u0a2c\u0a23\u0a3e\u0a09\u0a1f\u0a40&#8221; track=5 lang=pun &#8211;ISO-copyright &#8220;Callaloo Prductions, \u00a92006&#8221; movie lang=car<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nCustom uuid atoms with AtomicParsley<\/p>\n<p>According the the specifications for the mpeg-4 file format, any atom not listed is reserved &amp; is unavailable for use. However, the specification &amp; the mpeg-4 registration authority www.mp4ra.org allow for user defined extension via a mechanism called the &#8216;uuid&#8217; atom. This type of atom actually has a &#8216;uuid&#8217; name, but following that is 16 bytes (the actual UUID representation itself).<\/p>\n<p>Because anyone or any program can implement UUID atoms, a special version of the UUID form is used &#8211; and when read back, special checks are in place to determine if any UUIDs found were created by AtomicParsley. In this way, UUIDs created by 3rd parties are ignored for reading, listings &amp; extractions. This is all handled transparently via a simple mechanism: &#8211;meta-uuid ATOM text &#8220;Some Text&#8221;<\/p>\n<p>where ATOM can be any 4 letter atom name you choose &#8211; carrying any text information you choose. Support is also present for directly embedding a file via a similar mechanism: &#8211;meta-uuid ATOM file \/path\/to\/target\/file.ext<\/p>\n<p>Create your own atoms directly:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;meta-uuid &#8220;YZAB&#8221; text &#8220;Some string value to set&#8221;<br \/>\nAtomicParsley \/path\/your.m4a &#8211;meta-uuid &#8220;\u00aeUSP&#8221; text &#8220;6125480&#8221;<br \/>\nAtomicParsley \/path\/your.m4a &#8211;meta-uuid &#8220;\u00a9212&#8221; text &#8220;CBGB OMFUG last set&#8221;<br \/>\nAtomicParsley \/path\/your.m4a &#8211;meta-uuid &#8220;docu&#8221; file ~\/Desktop\/taxes.zip<br \/>\nAtomicParsley \/path\/your.m4a &#8211;meta-uuid &#8220;inst&#8221; file \/Files\/archive.dmg description=&#8221;Installer&#8221;<\/p>\n<p>Deleting a custom uuid atom:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;meta-uuid &#8220;\u00a9212&#8221; text &#8220;&#8221;<br \/>\nAtomicParsley \/path\/your.m4a &#8211;meta-uuid &#8220;docu&#8221; file &#8220;&#8221;<\/p>\n<p>Set the tagging time (the moment the tag was written) on a uuid=tdtg atom:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;tagtime<\/p>\n<p>Set a url on a uuid=\u00a9url atom:<br \/>\nAtomicParsley \/path\/your.m4a &#8211;url &#8220;http:\/\/www.bumperdumper.com&#8221;<\/p>\n<p>Manually removing uuid atoms:<br \/>\nAP \/path\/your.m4a &#8211;manualAtomRemove &#8220;moov.trak[1].uuid=55534d54-21d2-4fce-bb88-695cfac9c740&#8221;<br \/>\nAP \/path\/your.m4a &#8211;manualAtomRemove &#8220;moov.udta.meta.uuid=1fed6656-d911-5385-9cb2-cb2c100f06e7&#8221;<\/p>\n<p>Note: any program can create a uuid atom &#8211; and are listed differently in an atom tree based on origin. Non-AP created atoms are listed slightly differently than AP-created uuid atoms:<\/p>\n<p>non-AtomicParsley created uuid (from a Sony PSP file):<br \/>\nAtom uuid=55534d54-21d2-4fce-bb88-695cfac9c740 @ &#8230;<\/p>\n<p>uuid created by AtomicParsley:<\/p>\n<p>Atom uuid=971451ee-0928-59f2-b81f-b1372b62565d(APuuid=ATOM) @ &#8230;<\/p>\n<p>Here you can see that after the hex-a-decimal representation of the uuid, AP has discovered an AtomicParsley-set uuid atom, and lists its name after APuuid).<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nCompiling AtomicParsley<\/p>\n<p>A fresh svn checkout will always be the most recent version available. AtomicParsley was developed on Mac OS X 10.4x, but should be able to compile on older versions. Only gcc4 was used to compile on Mac OS X.<\/p>\n<p>cd AtomicParsley &amp;&amp; .\/build<\/p>\n<p>Releases of AtomicParsley are also available built using:<\/p>\n<p>\u2022 Debian &#8216;Sarge&#8217; 31r0a-i386 with gcc\/g++4.02, libc6_2.3.5-8 &amp; libstdc++6_4.0.2-2<br \/>\n\u2022 Microsoft Windows XP SP2 with VisualC++ 6.0<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nAtomicParsley &amp; new atoms, bugs, etc&#8230;.<\/p>\n<p>If you should come across an atom (in the moov.udta.meta.ilst hierarchy) that AtomicParsley doesn&#8217;t handle, please let me know about it &#8211; I would like to be able to support it. Note: AtomicParsley will never support iTunes-style &#8220;&#8212;-&#8221; atoms. To facilitate implementation, a sample of the new atom would be needed as it could come in a few different types &#8211; or even an entirely new type.<\/p>\n<p>Should you find a bug or a suspect behavior, please post to the bugs section or forum at sourceforge. A sample of the file that demonstrates the behavior would be best. Please also provide the name of the encoding program used to produce the file. Please refrain from using email as a primary means of support &#8211; it isn&#8217;t. Fun though it is to answer some questions repeatedly, imagine the fun a non-response would be.<\/p>\n<p>Please remember: as long as it works on Mac OS X &#8211; to me it works *perfectly* good enough. If you find a bug on another platform (probably Windows, because Linux will have most of the same encoders as on Mac OS X) or with any form of commercial encoder, a sample would probably go a long way to making AtomicParsley work on your files.<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nThings to watch out for &amp; avoid with AtomicParsley<\/p>\n<p>\u2022 iTunes text tags (except for lyics) are restricted to 255 characters<\/p>\n<p>\u2022 Many of the iTMS (both drm and podcast) files have **ID atoms. What they stand for can only be guessed, but their values have meaning only to Apple &#8211; as such they are displayed in raw hex. Since all metadata can be stripped (including these **ID atoms), and a drm file still plays properly, these tags can be considered superfluous metadata.<\/p>\n<p>\u2022 iTunes 7 incorporates a feature called gapless playback. For unknown reason, iTunes incorporates NULL space at the end of mpeg4 files. This may (or may not) be part of the mechanism iTunes uses as part of its gapless playback. Normally, this NULL space is replicated when AP writes out. It is not if DEFAULT_PAD=0 is set.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>See http:\/\/sourceforge.net\/projects\/atomicparsley AtomicParsley is distributed under the GPL &#8220;AS IS&#8221;, without any warranty; without even the implied warranty of merchantability or fitness for either an expressed or implied particular purpose. AtomicParsley is a command line program for reading &amp; writing iTune-style metadata in mpeg4 files (m4a, m4b, m4p, m4v &amp; mp4) whether iTMS drm protected [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6,5],"tags":[],"class_list":["post-49","post","type-post","status-publish","format-standard","hentry","category-macosx","category-manual","category-video"],"_links":{"self":[{"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/posts\/49","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/comments?post=49"}],"version-history":[{"count":2,"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/posts\/49\/revisions"}],"predecessor-version":[{"id":51,"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/posts\/49\/revisions\/51"}],"wp:attachment":[{"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/media?parent=49"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/categories?post=49"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.idoru.be\/notes\/wp-json\/wp\/v2\/tags?post=49"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}