9 返信 最新の回答 日時: Sep 22, 2016 8:10 PM ユーザー:qbxxdp

    iTunesからデータを取り込む方法があればお教えください

    akiboh

      FileMakerを始めて3年になりますが、仕事の忙しさにかまけて勉強が中断していました。

      それと、何よりも具体的に何を作るのか?と言う課題も乏しくおざなりになっていたのですが。

      そこで、一念発起して再度勉強を始めることにしました。基本好きなことなので、具体的な課題があれば

      作っていけると思うのですが。

      その一環として今持っている音楽媒体の管理を行おうと思い出しました。アナログのレコード、CD等です。

      数百枚あって何があるのかもはっきりと解らないのです。CDはiTunesで管理していますが、アナログ音源も

      管理したいと思います。また、今後ハイレゾ音源なども増えてくるのでこう言ったものも一元管理したいと思い出しました。

      そこで、まず膨大な数のCDのデータですが、1枚ずつ入れていくのは至難の技です。そこで、iTunesと言うデータベースがある

      ことに目をつけました。iTunes自体かなり良くできたデータベースだと思います。あのデータをなんとかFileMakerに取り込む

      ことができればかなり作業がはかどります。そこで、もしそう言った

        • 1. Re: iTunesからデータを取り込む方法があればお教えください
          user14047

          Re: Import iTunes library?!

          [レコードのインポート] -[XML データソース] でこの XSLT を指定するだけで取り込めましたよ。

           

          昔々、iTunes の XML を取り込んで管理していたことがあるのですが、iTunes のライブラリが増えても FileMaker に反映されるわけではないので、テンポラリーなテーブルに全部取り込んで、既存のデータが無いものだけを新規レコードを作っていくような作業が必要で面倒になってやめてしまった経験があります。

          当時と iTunes の XMLが違って、その楽曲ファイル固有なユニークな値が無かったのですが、今ならPersistent ID あたりで判別できそうですね(未検証)。

           

          xml import@x1.png

          • 2. Re: iTunesからデータを取り込む方法があればお教えください
            akiboh

            詳しいご解説ありがとうございました。

            確かに追加をどうするか?と言う問題はありますね。

            しかし、まずはFileMakerで何か成果物を作ると言うのが目的ですから、やってみて次の段階で勉強して解決していくようにしたいと思います。

            FileMakerについては非常に良い物だと言う事は解っているのですが、今まで具体的な目標がなく具体的な成果物がありませんでした。なので、勉強もストップしています。これをステップに勉強していきます。

             

             

            先ほど、この返信をさせていただき、やってみてふとXSLTファイルはどこにあるんだ?と言うことに気づきました。

            XMLは書き出しで出てくると思うのですが。ちなみにMacを使っております。一度フォルダの中も探してみます。

             

            すみません。わかりました。

            • 3. Re: iTunesからデータを取り込む方法があればお教えください
              akiboh

              リンク先のところをコピーしてxsltファイルにすれば良いのでしょうか?

              やってみたのですが、”SAXParseException: input ended before all started tags were ended; last tag started is 'ssl:template' (Occurred in entity '/Users/ahamada/Desktop/iTunesToFM.xslt', at li…”と言うエラーが返ってきます。

               

              難しいですね。簡単にインポートできると思っていました。

               

              すみません。理解不足で、ちなみにFMは13です。(書き忘れていました。)

              xmlのライブラリーは見つかったのですが。

              • 4. Re: iTunesからデータを取り込む方法があればお教えください
                user14047

                at li… の後にはなにか書かれていませんでしたか?

                多分 li には line という言葉が続いて、何行目がおかしいと書かれているかと思います。

                もし、...で省略されてしまっているのなら、他の xml を扱えるアプリで保存した xslt を開いてみてください。

                どこがエラーなのか教えてくれるのでその箇所を潰していけばいいかと思います。

                (例に挙げたリンク先の xslt は何の修正の必要もなかったんですがね...)

                 

                Google Chrome で XML を開いた時の例

                xmlParseError@x1.png

                • 5. Re: iTunesからデータを取り込む方法があればお教えください
                  akiboh

                  ありがとうございます。

                  エラーは”

                  This page contains the following errors:

                  error on line 436 at column 26: Extra content at the end of the document

                  Below is a rendering of the page up to the first error.”

                  と出ました。

                  そこで、436行ですが。最終行で、

                  ”   </FMPXMLRESULT>”です。

                   

                  1行目2行目は下記の通りです。

                  ”<?xml version="1.0" encoding="utf-8"?>

                  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">”

                  これで合っているのでしょうか?

                   

                  知識不足ですみません。

                   

                  最初に記載したエラーは、インポート時にFMが出力したエラーメッセージで省略されていました。

                  iTunesは良い教材だと思ったのですが、最初でつまづいてしまいました。

                   

                  今まで、年賀状住所録ソフトをインポートしたりして何やら作っていましたが、今ひとつ変化に乏しく、

                  初心者ながらレベルアップのために何か作って勉強しようと思っているのですが。

                  会社に在籍中に出会っていれば、本当色々と作れたと今更ながら残念に思っています。

                   

                  そもそもXML自体がわかっていないのが原因なのだとは自覚しています。すみません。

                  • 6. Re: iTunesからデータを取り込む方法があればお教えください
                    user14047

                    html を触ったことがあれば感覚でわかるかと思いますが、閉じタグは必須です。xml の場合 html より厳格です。

                    <PRODUCT  /> のように末尾が /> で終わってるものはコンテンツが空で閉じているとします。

                    <xsl:stylesheet> で始まっているわけですから、最後は必ず </xsl:stylesheet> で終わる必要があります。(1行目は xml 宣言)

                    "Extra content at the end of the document(文書の最後に余分なコンテンツ)" というエラーメッセージからは分かり辛いかもしれませんが、この場合ちゃんとタグが閉じていないということでしょう。

                     

                    勉強のためにとりかかるのでしたら、XML や XSLT のことも学ぶと幅が広がるかもしれませんね。

                    FileMaker のデータベースデザインレポート(DDR)もXML ですし、XSLT を使った XML のインポート/エクスポートは今でも使えますし、構造化テキストの概念やらの知識は全く無駄になるわけではないかと思います。

                    件の XSLT も内容が分かれば、自分なりに改造ができますし、日付の扱いの工夫とか読み取れて面白くなりますよ。

                    躓いたらその都度聞くより、自分で調べた方が身になるかと思いますよ。

                     

                    その昔 FileMaker PHP API が無かった頃のカスタム Web は XML + XSLT という時代がありました。

                    その頃にお世話になったサイトを紹介しておきます。

                    たのしいXML: XML/XHTML入門ページです

                    • 7. Re: iTunesからデータを取り込む方法があればお教えください
                      akiboh

                      遅くなりました。

                       

                      ありがとうございます。

                       

                      一応閉じタグはありました。

                       

                      ファイルはこれで合っていますか?

                       

                      <?xml version="1.0" encoding="utf-8"?>

                      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

                           <!-- 2010-05-22 Tom Robinson, based on stylesheet to import 5 fields by Fenton Jones http://forum-en.filemaker.com/t5/Using-FileMaker-Pro/Import-iTunes-library/td-p/5560 -->

                           <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />

                           <xsl:template match="/">

                                <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">

                                     <ERRORCODE>0</ERRORCODE>

                                     <PRODUCT BUILD="" NAME="" VERSION="" />

                       

                      中略

                      <RESULTSET FOUND="">

                                          <xsl:for-each select="/plist/dict/dict/dict">

                                               <ROW MODID="0" RECORDID="">

                       

                      中略

                      </RESULTSET>

                                </FMPXMLRESULT>

                           </xsl:template>

                      </xsl:stylesheet>

                       

                      です。これだと一応閉じタグは有るようなのですが。

                       

                      文字コードが違うとか、Macでの編集なのです。

                       

                      よろしくお願いいたします。

                      • 8. Re: iTunesからデータを取り込む方法があればお教えください
                        user14047

                        エラーはどうなっていますか?

                        頭で<?xml version="1.0" encoding="utf-8"?>とutf-8で宣言していますから、xsltファイルを保存する時は utf-8 になっていますか?

                        あとはご自身でご確認ください。

                        • 9. Re: iTunesからデータを取り込む方法があればお教えください
                          qbxxdp

                          ご参考まで。

                          Macであれば、アプリケーション間の連携にAppleScriptが利用できます。

                          下記は、簡易的なサンプルです。

                           

                          FileMaker が開いておく。

                          フィールド:f1 に取得した情報が、挿入されます。

                           

                          以下を「AppleScriptを実行」に設定。

                          デバッグする場合は、スクリプトエディタで実行するのが良いでしょう。

                           

                          tell application "iTunes"

                            set thePlaylist to playlist named "プレイリスト"

                            -- for example:

                            set ls to {}

                            set AppleScript's text item delimiters to ","

                            repeat with i from 1 to (count tracks of thePlaylist)

                            tell track i of thePlaylist

                            set the end of ls to {get name, get artist, get album} as string

                            end tell

                            end repeat

                          end tell

                           

                          tell application "FileMaker Pro"

                            set AppleScript's text item delimiters to ASCII character 13

                            set cell "f1" of current record to ls as string

                          end tell

                           

                           

                          実際に使用するには、色々とカスタマイズが必要かと思います。