Skip to content

Commit 93a5649

Browse files
authored
feat: complete Python and Node.js bindings for all namespaces (#36)
* feat(python): add complete bindings for GeoRSS, Media RSS, Dublin Core, and Podcast 2.0 Phase 1: Python Bindings Implementation New types: - PyGeoLocation (geo_type, coordinates, srs_name) - PyMediaThumbnail (url, width, height) - PyMediaContent (url, type, filesize, width, height, duration) - PyPodcastChapters (url, type) - PyPodcastSoundbite (start_time, duration, title) - PyPodcastEntryMeta (transcript, chapters, soundbite, person) New Entry getters: - geo, dc_creator, dc_date, dc_date_parsed, dc_rights, dc_subject - media_thumbnails, media_content, podcast New FeedMeta getters: - geo All types include __repr__ and __eq__ implementations. Comprehensive test coverage with 23 new tests. * feat(node): add type definitions for all namespaces Phase 2: Node.js Type Definitions New types (13 total): - GeoLocation (geoType, coordinates, crs) - MediaThumbnail (url, width, height) - MediaContent (url, type, filesize, width, height, duration) - ItunesFeedMeta (author, owner, categories, explicit, image, keywords, podcastType, complete, newFeedUrl) - ItunesOwner (name, email) - ItunesCategory (text, subcategory) - PodcastMeta (transcripts, funding, persons, guid, value) - PodcastFunding (url, message) - PodcastEntryMeta (transcript, chapters, soundbite, person) - PodcastChapters (url, type) - PodcastSoundbite (startTime, duration, title) - PodcastValue (type, method, suggested, recipients) - PodcastValueRecipient (name, type, address, split, fee) Security: SSRF warnings on all URL fields Documentation: Enhanced with format examples and security notes * feat(node): add field bindings and complete feature parity Phase 3: Node.js Field Bindings FeedMeta new fields: - geo: Option<GeoLocation> - itunes: Option<ItunesFeedMeta> - podcast: Option<PodcastMeta> Entry new fields: - geo, dcCreator, dcDate, dcSubject, dcRights - mediaThumbnails, mediaContent - podcast: Option<PodcastEntryMeta> - itunes: Option<ItunesEntryMeta> Improvements: - Added ItunesEntryMeta type (duration, episode, season, episodeType, etc.) - Fixed camelCase naming for FeedMeta DC fields and SyndicationMeta - Optimized entries Vec with capacity pre-allocation - Added SSRF security notes to all URL fields - Enhanced SyndicationMeta documentation Tests: 24 new integration tests, 72 total passing * style: apply rustfmt formatting
1 parent 2b973d2 commit 93a5649

File tree

16 files changed

+2511
-67
lines changed

16 files changed

+2511
-67
lines changed

crates/feedparser-rs-core/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ pub use options::ParseOptions;
6868
pub use parser::{detect_format, parse, parse_with_limits};
6969
pub use types::{
7070
Content, Enclosure, Entry, FeedMeta, FeedVersion, Generator, Image, ItunesCategory,
71-
ItunesEntryMeta, ItunesFeedMeta, ItunesOwner, LimitedCollectionExt, Link, ParsedFeed, Person,
72-
PodcastChapters, PodcastEntryMeta, PodcastFunding, PodcastMeta, PodcastPerson,
73-
PodcastSoundbite, PodcastTranscript, PodcastValue, PodcastValueRecipient, Source, Tag,
74-
TextConstruct, TextType, parse_duration, parse_explicit,
71+
ItunesEntryMeta, ItunesFeedMeta, ItunesOwner, LimitedCollectionExt, Link, MediaContent,
72+
MediaThumbnail, ParsedFeed, Person, PodcastChapters, PodcastEntryMeta, PodcastFunding,
73+
PodcastMeta, PodcastPerson, PodcastSoundbite, PodcastTranscript, PodcastValue,
74+
PodcastValueRecipient, Source, Tag, TextConstruct, TextType, parse_duration, parse_explicit,
7575
};
7676

7777
pub use namespace::syndication::{SyndicationMeta, UpdatePeriod};

0 commit comments

Comments
 (0)