Class: Id3Taginator::Frames::Id3v2FrameFactory
- Inherits:
-
Object
- Object
- Id3Taginator::Frames::Id3v2FrameFactory
- Defined in:
- lib/id3taginator/frames/id3v2_frame_factory.rb
Constant Summary collapse
- BUFFER_FRAMES =
[Buffer::RecommendedBufferSizeFrame].freeze
- COMMENT_FRAMES =
[Comment::CommentFrame].freeze
- COUNT_FRAMES =
[Count::PopularityFrame, Count::PlayCounterFrame].freeze
- ENCRYPTION_FRAMES =
[Encryption::AudioEncryptionFrame, Encryption::EncryptionMethodFrame].freeze
- GEO_FRAMES =
[Geo::GeneralEncapsulatedObjectFrame].freeze
- GROUPING_FRAMES =
[Grouping::GroupIdentificationFrame, Grouping::GroupingFrame].freeze
- IPL_FRAMES =
[Ipl::InvolvedPeopleFrame].freeze
- LYRICS_FRAMES =
[Lyrics::UnsyncLyricsFrame].freeze
- MCDI_FRAMES =
[Mcdi::MusicCDIdentifierFrame].freeze
- PICTURE_FRAMES =
[Picture::PictureFrame].freeze
- PRIVATE_FRAMES =
[Private::PrivateFrame].freeze
- TEXT_FRAMES =
[Text::AlbumFrame, Text::BPMFrame, Text::ComposerFrame, Text::GenreFrame, Text::CopyrightFrame, Text::DateFrame, Text::PlaylistDelayFrame, Text::EncodedByFrame, Text::WritersFrame, Text::FileTypeFrame, Text::TimeFrame, Text::ContentGroupDescriptionFrame, Text::TitleFrame, Text::SubtitleFrame, Text::InitialKeyFrame, Text::LanguageFrame, Text::LengthFrame, Text::MediaTypeFrame, Text::OriginalAlbumFrame, Text::OriginalFilenameFrame, Text::OriginalWritersFrame, Text::OriginalArtistsFrame, Text::OriginalReleaseYearFrame, Text::FileOwnerFrame, Text::ArtistsFrame, Text::AlbumArtistFrame, Text::ConductorFrame, Text::ModifiedByFrame, Text::PartOfSetFrame, Text::PublisherFrame, Text::TrackNumberFrame, Text::RecordingDatesFrame, Text::InternetRadioStationFrame, Text::SizeFrame, Text::AlbumSortOrderFrame, Text::PerformerSortOrderFrame, Text::TitleSortOrderFrame, Text::ISRCFrame, Text::EncoderFrame, Text::UserTextInfoFrame, Text::YearFrame].freeze
- TOS_FRAMES =
[Tos::OwnershipFrame, Tos::TermsOfUseFrame].freeze
- UFID_FRAMES =
[Ufid::UniqueFileIdentifierFrame].freeze
- URL_FRAMES =
[Url::CommercialUrlFrame, Url::CopyrightUrlFrame, Url::OfficialFileWebpageFrame, Url::OfficialArtistWebpageFrame, Url::OfficialSourceWebpageFrame, Url::OfficialAudioRadioStationHomepageFrame, Url::PaymentUrlFrame, Url::OfficialPublisherWebpageFrame, Url::UserUrlLinkFrame].freeze
Instance Method Summary collapse
-
#initialize(file, version, options) ⇒ Id3v2FrameFactory
constructor
Constructor.
-
#next_frame ⇒ Id3v2Frame?
reads the next frame in the data stream.
Constructor Details
#initialize(file, version, options) ⇒ Id3v2FrameFactory
Constructor
55 56 57 58 59 |
# File 'lib/id3taginator/frames/id3v2_frame_factory.rb', line 55 def initialize(file, version, ) @file = file @version = version = end |
Instance Method Details
#next_frame ⇒ Id3v2Frame?
reads the next frame in the data stream
only padding left)
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/id3taginator/frames/id3v2_frame_factory.rb', line 65 def next_frame frame_id = @version == 2 ? @file.read(3) : @file.read(4) return nil if frame_id.bytes.all?(&:zero?) frame = frame_for_id(frame_id) case @version when 2 frame&.build_v2_frame(frame_id, @file, ) when 3 frame&.build_v3_frame(frame_id, @file, ) when 4 frame&.build_v4_frame(frame_id, @file, ) else raise Errors::Id3TagError, "id3v2.#{@version} is not supported." end end |