Giter Club home page Giter Club logo

ariblib's People

Contributors

split-n avatar yosida95 avatar youzaka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ariblib's Issues

PILをsubmoduleにする

そのまま pil-py3k を使っても動かない
( import Imagefrom PIL import Image にしないといけなかったりする)
ので、それがこの環境のみの問題なら自前で直すしどこでも起こる問題ならpull req してみる

Python 3.7でRuntimeError: generator raised StopIteration 

https://www.python.org/dev/peps/pep-0479/

ariblib/packet.py

    def __iter__(self):
        packet_size = self.PACKET_SIZE
        chunk_size = self.chunk_size
        buffer_size = packet_size * chunk_size
        packets = iter(lambda: self.read(buffer_size), b'')
        for packet in packets:
            for start, stop in zip(
                range(0, buffer_size - packet_size + 1, packet_size),
                range(packet_size, buffer_size + 1, packet_size)
            ):
                next = packet[start:stop]
                if not next:
                    raise StopIteration  <---
                yield next

DRCS文字列の対応

  • DRCS イメージを PIL を使って指定の場所に PNG で保存する。ファイル名は patternData を md5 かなんかでハッシュ化した値とする
  • ハッシュ値と代替文字列の辞書を別途用意しておき、既存のマッピングがある場合は代替文字列を出力する
  • 代替文字列がない場合は、 {{DRCS:<character_code>:<hash>}} のように出力しておき、画像イメージから代替イメージを決めたあとに適宜置換する
  • 代替文字列が Unicode の Emoticons Block 文字であるなどターミナルで表示ができない文字の場合は、さらなる代替文字列も定義したい

case下のclassから親classの属性を読めるようにする

    @case(lambda self: self.logo_transmission_type == x03)
    class type_03(Syntax):
        logo_char = aribstr(lambda self: self.descriptor_length - 1)

親のdescriptor_length が読めないのでエラーになる。
caseの場合には呼び出し元の参照を渡して、AttributeErrorだったら上を見るみたいな実装になるかも

記述子を意識しないラッパーオブジェクトの定義

こう使えるようなの

with TransportStreamFile("/path/to/file") as ts:
    for event in events(ts):  # EventInformationTableのeventsごとにyieldする
        event.title           # ShortEventDescriptor.event_name_char
        event.description     # ShortEventDescriptor.text_char
        event.longdesc        # ExtendedEventDescriptor.item_description_char, item_charをそのまま結合
        event.descdict        # ExtendedEventDescriptorの中身を辞書にパース
        event.genre           # ContentDescriptor.content_nibble_level_1
        event.subgenre        # ContentDescriptor.content_nibble_level_2
        event.sampling_rate   # AudioComponentDescriptor.sampling_rate
        # その他もろもろ

字幕の場合

with TransportStramFile("/path/to/file") as ts:
    for caption in captions(ts, color=True):     # 字幕パケットをさらに色別にyieldするジェネレータ
        caption.at      # 字幕送出日時
        caption.body    # 字幕本文
        caption.color   # 字幕の色
        caption.speaker # 話者名

captions(ts, dot=True) とすると PIL で PNG 画像出す代わりに標準出力にドット表示したり

あと、TransportStreamFile()と同じく使えるtsopen()って関数があるとタイプ数節約できてよさそう

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.