Y901x 0.3.5 公開。
Y901x はシークバーを弄くるのに gst.SEEK_FLAG_KEY_UNIT 指定で軽くしている。
けどたまに動かしたピチッとした位置で止めたい場合が多々ある。
面倒くさいので放置していたけどそろそろやろうかと。
def set_play_position(self, location): """ Media Seeking SEEK_FLAG_KEY_UNIT -> LightWaight """ if self.seekinfo.button == 1: seek = gst.SEEK_FLAG_KEY_UNIT else: seek = gst.SEEK_FLAG_ACCURATE event = gst.event_new_seek( 1.0, gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH | seek, gst.SEEK_TYPE_SET, location, gst.SEEK_TYPE_NONE, 0) self.player.send_event(event)
とシークバー上で押されたマウスボタンを記憶しておいて振り分けにしてみた。
GtkHScale はホイールクリックだと正確な位置に移動できるので合わせてみたんだが。
つーてもホイールクリックでシークはやりにくいので右ボタンでもオケにと。
こんなに簡単に振り分けできるならもっと早くやればよかった、我ながら。
それと一時間以上のファイルの場合は自動で
00:05/85:45 → 00:00:05/01:23:45
なんて切り替わるように表示したくなった。
こんな処理にしたけど、今見るともしかしてジャスト一時間だとアウト…
まぁ手持ちのは問題無いし次で直せばいいか。
def put_time_status(self, location): """ self.player is PlayBin2 """ sec = location / 1000000000 allsec = self.player.query_duration(gst.FORMAT_TIME)[0] / 1000000000 if allsec > 3600: s = time.strftime("%H:%M:%S", time.gmtime(sec)) t = time.strftime("%H:%M:%S", time.gmtime(allsec)) else: s = time.strftime("%M:%S", time.gmtime(sec)) t = time.strftime("%M:%S", time.gmtime(allsec)) self.statusbar.label[0].set_text("{0}/{1}".format(s, t)) """ 今までの処理 secv = "%02d:%02d/%02d:%02d" % ((sec / 60), (sec % 60), (allsec / 60), (allsec % 60)) self.statusbar.label[0].set_text(secv)"""
自分で計算しなくても time モジュールを使えばいいと今頃気がついた私って…
そういえば新しいフォーマッタで %02d みたくゼロ詰めするのはどうやるのだ?
どうせ V2 を使いつづけるのでほとんど気にしていなかった。
7.1. string ? Common string operations ? Python v2.7.1 documentation
# old print "%02d:%02d" % (1, 2) # new print("{0:02d}:{1:02d}".format(1, 2))
スゲェ分かり辛いと思うんですけど…
せっかく C 言語とほぼ同じで覚えやすかったのに今後はこうなるんだよなぁ…