Skip to content

Releases: ysskrishna/social-links

Release v1.3.1

21 Feb 06:40
20521b5

Choose a tag to compare

Added

  • New extract_id() function to extract usernames/profile IDs from URLs:
    • Available as both module-level function and SocialLinks class method
    • Works seamlessly with all supported platforms
    • Example: extract_id("linkedin", "https://linkedin.com/in/johndoe") returns "johndoe"
  • Support for 15 new platforms:
    • Developer: CodePen, HackerRank, Kaggle, LeetCode, PyPI, Replit, Docker Hub
    • Creative: ArtStation, Unsplash
    • Gaming: Chess.com, Lichess
    • Video: Dailymotion, Rumble
    • Other: Fiverr, Trello, WordPress

Changed

  • Redesigned interactive demo page:
    • Modern tabbed interface for all operations (detect, validate, sanitize, extract_id, list)
    • Real-time Python code preview for each operation
    • Quick stats bar showing instant platform detection and validation
    • Pre-loaded examples for easy testing
  • Updated documentation to reflect 65+ supported platforms
  • Improved README footer with better link organization

Release v1.3.0

19 Jan 15:56
8ac7a3e

Choose a tag to compare

Added

  • Module-level convenience functions for simplified API usage:
    • detect_platform(url) - Detect platform from URL without instantiating SocialLinks
    • is_valid(platform_name, url) - Validate URL for a specific platform
    • sanitize(platform_name, url) - Sanitize URL to canonical format
    • list_platforms() - List all supported platform names
  • Separate documentation pages for better organization:
    • basic-api.md - Documentation for module-level convenience functions
    • core-api.md - Documentation for SocialLinks class and advanced features
    • constants.md - Documentation for constants and type aliases
    • exceptions.md - Documentation for exception hierarchy
  • Add test cases for module-level functions.

Changed

  • Enhanced README with improved Quick Start section using module functions
  • Added comprehensive "Basic Usage" section with extensive examples
  • Improved README organization with clearer separation between basic and advanced usage

Release v1.2.1

05 Jan 17:12

Choose a tag to compare

Added

  • Interactive demo page in documentation with Pyodide integration
    • Browser-based testing interface for detecting platforms, validating URLs, and sanitizing links
    • No installation required - runs entirely in the browser
    • Real-time platform detection and validation feedback
  • Demo badge in README linking to interactive demo
  • Prominent callout in README highlighting the interactive demo feature

Changed

  • Enhanced README visibility for demo page with badge and callout placement
  • Improved user experience with easier access to interactive testing

Release v1.2.0

05 Jan 16:19

Choose a tag to compare

Added

  • Support for 28 new social media platforms:
    • Music & Audio: Apple Music, Bandcamp
    • Video Platforms: Douyin, Kuaishou, Vimeo
    • Social Networks: Bluesky, Discord, Reddit, Snapchat, Tumblr, Threads (Instagram)
    • Professional & Business: Crunchbase, GitLab, HackerNews, ProductHunt, Wellfound (AngelList)
    • E-commerce & Marketplaces: Etsy, Gumroad
    • Content & Publishing: Hashnode, Slideshare
    • Messaging & Communication: Signal, WeChat, WhatsApp
    • Photo & Media: Flickr, Gravatar
    • Gaming: Steam
    • Q&A & Forums: Quora
    • Chinese Platforms: Weibo
  • InvalidPlatformRegexError exception for handling invalid regex patterns in platform configurations
  • constants.py module with reusable regex patterns and type aliases for platform configuration
  • Comprehensive API reference documentation
  • Function and constant docstrings throughout the codebase
  • Roadmap section in README
  • Google verification key for documentation
  • SEO meta tags and title templates for documentation pages
  • Common test patterns module for parametrized testing across platforms

Changed

  • Enhanced platform pattern matching:
    • LinkedIn: Added support for school URLs and improved pattern matching with % character support
    • Reddit: Added support for subreddit URLs and u/ prefix format
    • Telegram: Enhanced with additional URL patterns
    • Spotify: Added support for artist profile URLs and improved user profile patterns
    • Quora: Added support for Unicode characters in profile URLs
    • Substack: Updated URL patterns for better matching
    • WhatsApp: Added support for send URL format
    • YouTube: Fixed channel pattern matching
  • Refactored exception hierarchy:
    • Introduced PlatformError as base class for platform-related errors
    • Introduced URLParsingError as base class for URL parsing errors
    • Improved error categorization and inheritance structure
  • Refactored test suite:
    • Split monolithic test_platforms.py into individual platform-specific test files
    • Added conftest.py for shared test fixtures
    • Parametrized common test cases (www, http, trailing_slash) for better coverage
  • Updated README:
    • Formatted predefined platforms in a table for better readability
    • Removed outdated error handling section
  • Enhanced pyproject.toml with improved keywords and metadata
  • Improved documentation structure with better organization and SEO optimization

Fixed

  • Fixed YouTube channel pattern matching issues
  • Fixed sanitization pattern edge cases
  • Fixed documentation bugs

Release v1.1.0

21 Dec 11:03

Choose a tag to compare

Added

  • MkDocs documentation setup with Material theme
  • Comprehensive Contributing Guide (CONTRIBUTING.md) with development setup instructions
  • GitHub Actions workflow for automated documentation deployment
  • Documentation badge in README linking to hosted documentation
  • Links section in README with all project resources
  • Added py.typed file for type hinting

Changed

  • Updated README with clickable links for all 25+ supported platforms
  • Enhanced README structure with Changelog, Contributing, and Support sections
  • Improved documentation organization with dedicated docs/ directory

Release v1.0.0

06 Dec 16:00

Choose a tag to compare

Added

  • Initial release of social-links
  • SocialLinks class for detecting and sanitizing social media URLs
  • detect_platform() method for automatically detecting platform from URL
  • is_valid() method for validating URLs against specific platforms
  • sanitize() method for normalizing URLs to canonical format
  • Platform management methods:
    • set_platform() - Add or override a single platform
    • delete_platform() - Remove a single platform
    • set_platforms() - Bulk add/override platforms
    • delete_platforms() - Bulk remove platforms
    • clear_platforms() - Remove all platforms
    • get_platform() - Retrieve platform configuration
    • list_platforms() - List all registered platforms
  • Support for 25+ predefined social media platforms:
    • behance, dev_to, dribbble, exercism, facebook, github, instagram, keybase, lemmy_world, linkedin, linktree, mastodon, medium, patreon, pinterest, soundcloud, spotify, stackoverflow, substack, telegram, tiktok, twitch, vk, x (Twitter), youtube
  • Custom regex pattern support for flexible URL matching
  • Multiple pattern support per platform
  • Automatic ID extraction from URLs
  • Support for various URL formats (with/without protocol, www, mobile variants)
  • Customizable regex flags for pattern matching
  • Comprehensive error handling with custom exceptions:
    • SocialLinksError - Base exception
    • PlatformNotFoundError - Platform not found
    • PlatformAlreadyExistsError - Platform already exists
    • InvalidPlatformError - Invalid platform configuration
    • PlatformIDExtractionError - Failed to extract platform ID
    • URLMismatchError - URL doesn't match platform pattern
  • Full test coverage with comprehensive test suite

Features

  • Zero external dependencies
  • Python 3.8+ compatibility
  • Case-insensitive URL matching (configurable)
  • Support for username-only input (without full URLs)
  • Automatic @ symbol handling
  • URL normalization and sanitization