ソニーの3gp音楽ファイルをm4aに変換するスクリプト

概要

  • ソニーの音楽アプリ(x-アプリ)で生成された3gp音楽ファイルを想定
    • 時期によってフォーマットの仕様が変わっているので変換できない物もあるかも
  • 以下の形式のファイルに対して変換処理を行う
    • 拡張子: .3gp
    • FileType: 3GP or MP4
    • AudioFormat: mp4a
  • 音声データはそのまま(ストリームコピー)
  • 引き継げるメタデータ
    • Title Artist Album AlbumArtist(※) Year Track(※) DiscNumber(※) Genre CoverArt(※)
    • AlbumArtist Track DiscNumberはファイルパスから推測するため完全ではない
      • \/:*?"<>|.などのパスに使用できない記号が_に変換されているため
        • Feat_Feat.のみ自動で修正
      • タグからAlbumArtistを取得できる時はそちらを優先(FileTypeがMP4の場合など)
    • CoverArtはファイルパスに特定の文字が含まれる場合読み出せない
    • 基本的に読み出せるのはID3v2形式で記録されているものだけ
    • 変換時ソニーの独自形式部分に記録された読み仮名やカバーアートは破棄される
  • タイムスタンプは変換前のファイルから引き継ぐ
続きを読む

Adobe ExtendScriptでminify後のスクリプトが動かない

結論としては文字コードがBOM付きのUTF-8じゃないせいでした。


※追記(2018/04/08)
他にも三項演算子をネストした時の処理順がおかしかったりbreakの後にセミコロンがないと駄目だったり、UglifyJSで圧縮されたコードがExtendScriptでは使えないことがたまにあります。


IllustratorスクリプトがUglifyJSで圧縮するとなぜか動かず、$.writeln()の出力すら表示されなくなったのでオプション変えて色々試したものの動かず……不思議に思いながら差分をとっていたら日本語(漢字?)のコメントが残っていると動いたのでやっと文字コードの問題と気づく。

ExtendScriptは結構古いシステムなのでBOM付きのUTF-8が使われているみたいですね。 変換したらあっさり動きました。

あんまり調べてないのでなんで日本語のコメントがあると普通に動くのかよく分かりませんが…

参考

サイドバーに現在位置を表示して追尾する目次を設置する【Ver3】

いわゆるシングルページナビゲーションみたいなやつ(はてなブログ用) (2021/08/12 ver3.4.1)

できること

  • サイドバーに目次を設置
  • スクロールに合わせて追尾
  • 現在位置の背景色変更
  • リンク先へのスムーズスクロール
  • ウィンドウサイズ変更に合わせてサイズ変更
  • 記事ページ以外でもページ内の記事一覧などを表示
続きを読む

gulpの出力内容をクリップボードにコピーする

使い所が限定されすぎていて使い道がわからないコード。Windows用。

ストリーム内でクリップボードにコピーしたかったけど文字化けしたりで上手くいかず、ファイルに書き出してからクリップコマンド使うというゴリ押し(ひどい)。

あと元のファイルがUTF-8だったのでShift_JISに変換してます。文字コードヨクワカラナイ。

var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var exec = require('child_process').exec;

var TEMP_PATH = process.env.TEMP;
var EXPORT_NAME = 'test.js';

// ファイルに書き出しクリップボードへコピー
gulp.task('clip', function() {
  gulp.src('src/*.js')
    .pipe($.concat(EXPORT_NAME))
    .pipe($.convertEncoding({to: 'shift_jis'}))
    .pipe(gulp.dest(TEMP_PATH))
    .on('end', function() {
      exec('clip < ' + TEMP_PATH + '/' + EXPORT_NAME);
    });
});