{"id":25423583,"url":"https://github.com/adelelawady/clipify","last_synced_at":"2025-10-31T14:30:41.743Z","repository":{"id":274122801,"uuid":"919754088","full_name":"adelelawady/Clipify","owner":"adelelawady","description":"1 long video, 10 viral clips. Create 10x faster.","archived":false,"fork":false,"pushed_at":"2025-02-01T03:55:52.000Z","size":221208,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-02-01T04:27:07.094Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adelelawady.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-21T00:20:38.000Z","updated_at":"2025-02-01T03:55:56.000Z","dependencies_parsed_at":"2025-01-25T03:33:57.308Z","dependency_job_id":null,"html_url":"https://github.com/adelelawady/Clipify","commit_stats":null,"previous_names":["adelelawady/clipify"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2FClipify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2FClipify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2FClipify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adelelawady%2FClipify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adelelawady","download_url":"https://codeload.github.com/adelelawady/Clipify/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239207402,"owners_count":19599963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-16T22:39:34.373Z","updated_at":"2025-10-31T14:30:41.696Z","avatar_url":"https://github.com/adelelawady.png","language":"Python","funding_links":["https://buymeacoffee.com/adel50ali5b"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e \u003cimg src=\"https://github.com/user-attachments/assets/876170d2-523c-4045-b4c9-67ac957e46c1\" alt=\"Clipify Logo\" width=\"150\"\u003e \u003c/p\u003e\n\n# Clipify\n\n\u003e An AI-powered video processing toolkit for creating social media-optimized content with automated transcription, captioning, and thematic segmentation.\n\n[![Development Status](https://img.shields.io/badge/status-beta-yellow.svg)](https://github.com/adelelawady/clipify)\n[![PyPI version](https://img.shields.io/pypi/v/clipify.svg)](https://pypi.org/project/clipify/)\n[![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://github.com/adelelawady/clipify)\n[![License](https://img.shields.io/pypi/l/clipify.svg)](https://github.com/adelelawady/clipify/blob/main/LICENSE)\n[![Downloads](https://img.shields.io/pypi/dm/clipify.svg)](https://pypi.org/project/clipify/)\n[![GitHub stars](https://img.shields.io/github/stars/adelelawady/Clipify.svg)](https://github.com/adelelawady/Clipify/stargazers)\n[![Documentation Status](https://img.shields.io/badge/docs-passing-brightgreen.svg)](https://github.com/adelelawady/Clipify#readme)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n## 🌟 Key Features\n\n### Content Processing\n- **Video Processing Pipeline**\n  - Automated audio extraction and speech-to-text conversion\n  - Smart thematic segmentation using AI\n  - Mobile-optimized format conversion (9:16, 4:5, 1:1)\n  - Intelligent caption generation and overlay\n\n### AI Capabilities\n- **Advanced Analysis**\n  - Context-aware content segmentation\n  - Dynamic title generation\n  - Smart keyword and hashtag extraction\n  - Sentiment analysis for content optimization\n\n### Platform Options\n- **Desktop Application**\n  - Intuitive graphical interface\n  - Drag-and-drop functionality\n  - Real-time processing feedback\n  - Batch processing capabilities\n\n- **Server Deployment**\n  - RESTful API integration\n  - Asynchronous processing with webhooks\n  - Multi-tenant architecture\n  - Containerized deployment support\n\n## 🚀 Quick Start\n\n### Desktop Application\n\n🚀 Check out our full project based on Clipify on [https://github.com/adelelawady/Clipify-hub](https://github.com/adelelawady/Clipify-hub) 🚀\n\nDownload and install the latest version:\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/adelelawady/Clipify-Hub/releases/download/3.3.0/clipify-hub-installer.exe\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Download-Installable%20App-blue?style=for-the-badge\u0026logo=windows\" alt=\"Download Installable\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/adelelawady/Clipify-Hub/releases/download/3.3.0/clipify-hub-server.exe\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Download-Server%20Only-green?style=for-the-badge\u0026logo=docker\" alt=\"Download Server\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n### Python Package Installation\n\n```bash\n# Via pip\npip install clipify\n\n# From source\ngit clone https://github.com/adelelawady/Clipify.git\ncd Clipify\npip install -r requirements.txt\n```\n\n## 💻 Usage Examples\n\n### Basic Implementation\n```python\nfrom clipify.core.clipify import Clipify\n\n# Initialize with basic configuration\nclipify = Clipify(\n    provider_name=\"hyperbolic\",\n    api_key=\"your-api-key\",\n    model=\"deepseek-ai/DeepSeek-V3\",\n    convert_to_mobile=True,\n    add_captions=True\n)\n\n# Process video\nresult = clipify.process_video(\"input.mp4\")\n\n# Handle results\nif result:\n    print(f\"Created {len(result['segments'])} segments\")\n    for segment in result['segments']:\n        print(f\"Segment {segment['segment_number']}: {segment['title']}\")\n```\n\n### Advanced Configuration\n```python\nclipify = Clipify(\n    # AI Configuration\n    provider_name=\"hyperbolic\",\n    api_key=\"your-api-key\",\n    model=\"deepseek-ai/DeepSeek-V3\",\n    max_tokens=5048,\n    temperature=0.7,\n    \n    # Video Processing\n    convert_to_mobile=True,\n    add_captions=True,\n    mobile_ratio=\"9:16\",\n    \n    # Caption Styling\n    caption_options={\n        \"font\": \"Bangers-Regular.ttf\",\n        \"font_size\": 60,\n        \"font_color\": \"white\",\n        \"stroke_width\": 2,\n        \"stroke_color\": \"black\",\n        \"highlight_current_word\": True,\n        \"word_highlight_color\": \"red\",\n        \"shadow_strength\": 0.8,\n        \"shadow_blur\": 0.08,\n        \"line_count\": 1,\n        \"padding\": 50,\n        \"position\": \"bottom\"\n    }\n)\n```\n\n\n## AudioExtractor\n\n\n```python\nfrom clipify.audio.extractor import AudioExtractor\n\n# Initialize audio extractor\nextractor = AudioExtractor()\n\n# Extract audio from video\naudio_path = extractor.extract_audio(\n    video_path=\"input_video.mp4\",\n    output_path=\"extracted_audio.wav\"\n)\n\nif audio_path:\n    print(f\"Audio successfully extracted to: {audio_path}\")\n```\n\n##  SpeechToText\n\n```python\nfrom clipify.audio.speech import SpeechToText\n\n# Initialize speech to text converter\nconverter = SpeechToText(model_size=\"base\")  # Options: tiny, base, small, medium, large\n\n# Convert audio to text with timing\nresult = converter.convert_to_text(\"audio_file.wav\")\n\nif result:\n    print(\"Transcript:\", result['text'])\n    print(\"\\nWord Timings:\")\n    for word in result['word_timings'][:5]:  # Show first 5 words\n        print(f\"Word: {word['text']}\")\n        print(f\"Time: {word['start']:.2f}s - {word['end']:.2f}s\")\n```\n\n## VideoConverter\n\n```python\nfrom clipify.video.converter import VideoConverter\n\n# Initialize video converter\nconverter = VideoConverter()\n\n# Convert video to mobile format with blurred background\nresult = converter.convert_to_mobile(\n    input_video=\"landscape_video.mp4\",\n    output_video=\"mobile_video.mp4\",\n    target_ratio=\"9:16\"  # Options: \"1:1\", \"4:5\", \"9:16\"\n)\n\nif result:\n    print(\"Video successfully converted to mobile format\")\n```\n\n\n## VideoConverterStretch\n\n\n```python\nfrom clipify.video.converterStretch import VideoConverterStretch\n\n# Initialize stretch converter\nstretch_converter = VideoConverterStretch()\n\n# Convert video using stretch method\nresult = stretch_converter.convert_to_mobile(\n    input_video=\"landscape.mp4\",\n    output_video=\"stretched.mp4\",\n    target_ratio=\"4:5\"  # Options: \"1:1\", \"4:5\", \"9:16\"\n)\n\nif result:\n    print(\"Video successfully converted using stretch method\")\n```\n\n\n## VideoProcessor\n\n```python\nfrom clipify.video.processor import VideoProcessor\n\n# Initialize video processor with caption styling\nprocessor = VideoProcessor(\n    # Font settings\n    font=\"Bangers-Regular.ttf\",\n    font_size=60,\n    font_color=\"white\",\n    \n    # Text effects\n    stroke_width=2,\n    stroke_color=\"black\",\n    shadow_strength=0.8,\n    shadow_blur=0.08,\n    \n    # Caption behavior\n    highlight_current_word=True,\n    word_highlight_color=\"red\",\n    line_count=1,\n    padding=50,\n    position=\"bottom\"  # Options: \"bottom\", \"top\", \"center\"\n)\n\n# Process video with captions\nresult = processor.process_video(\n    input_video=\"input_video.mp4\",\n    output_video=\"captioned_output.mp4\",\n    use_local_whisper=\"auto\"  # Options: \"auto\", True, False\n)\n\nif result:\n    print(\"Video successfully processed with captions\")\n\n# Process multiple video segments\nsegment_files = [\"segment1.mp4\", \"segment2.mp4\", \"segment3.mp4\"]\nprocessed_segments = processor.process_video_segments(\n    segment_files=segment_files,\n    output_dir=\"processed_segments\"\n)\n```\n\nThe VideoProcessor provides powerful captioning capabilities:\n- Customizable font styling and text effects\n- Word-level highlighting for better readability\n- Shadow and stroke effects for visibility\n- Automatic speech recognition using Whisper\n- Support for batch processing multiple segments\n\n## VideoCutter\n\n```python\nfrom clipify.video.cutter import VideoCutter\n\n# Initialize video cutter\ncutter = VideoCutter()\n\n# Cut a specific segment\nresult = cutter.cut_video(\n    input_video=\"full_video.mp4\",\n    output_video=\"segment.mp4\",\n    start_time=30.5,  # Start at 30.5 seconds\n    end_time=45.2     # End at 45.2 seconds\n)\n\nif result:\n    print(\"Video segment successfully cut\")\n``` \n\n\n## SmartTextProcessor\n\n```python\nfrom clipify.core.text_processor import SmartTextProcessor\nfrom clipify.core.ai_providers import HyperbolicAI\n\n# Initialize AI provider and text processor\nai_provider = HyperbolicAI(api_key=\"your_api_key\")\nprocessor = SmartTextProcessor(ai_provider)\n\n# Process text content\ntext = \"Your long text content here...\"\nsegments = processor.segment_by_theme(text)\n\nif segments:\n    for segment in segments['segments']:\n        print(f\"\\nTitle: {segment['title']}\")\n        print(f\"Keywords: {', '.join(segment['keywords'])}\")\n        print(f\"Content length: {len(segment['content'])} chars\")\n```\n\n## 📦 Project Structure\n```\nclipify/\n├── clipify/\n│   ├── __init__.py           # Package exports and version info\n│   ├── core/\n│   │   ├── __init__.py       # Core module exports\n│   │   ├── clipify.py        # Main Clipify class implementation\n│   │   ├── processor.py      # Content processing and segmentation\n│   │   ├── text_processor.py # Text analysis and theme detection\n│   │   └── ai_providers.py  # AI providers (OpenAI, Anthropic, Hyperbolic)\n│   ├── video/\n│   │   ├── __init__.py       # Video module exports\n│   │   ├── processor.py      # Video captioning and effects\n│   │   ├── converter.py      # Mobile format with blur background\n│   │   ├── converter_stretch.py  # Stretch-based format conversion\n│   │   └── cutter.py         # Video segment extraction\n│   ├── audio/\n│   │   ├── __init__.py       # Audio module exports\n│   │   ├── extractor.py      # FFmpeg-based audio extraction\n│   │   └── speech.py         # Whisper speech recognition\n├── scripts/\n│   ├── build.sh              # Package build script\n│   └── publish.sh            # PyPI publishing script\n├── .gitignore                # Git ignore patterns\n├── LICENSE                 # MIT License\n├── MANIFEST.in             # Package manifest\n├── README.md               # Project documentation\n├── requirements.txt        # Project dependencies\n└── setup.py  # Package configuration\n\n\n```\n\n## 🛠️ Configuration Options\n\n### AI Providers\n- `hyperbolic`: Default provider with DeepSeek-V3 model\n- `openai`: OpenAI GPT models support\n- `anthropic`: Anthropic Claude models\n- `ollama`: Local model deployment\n\n### Video Formats\n- Aspect Ratios: `1:1`, `4:5`, `9:16`\n- Output Formats: MP4, MOV\n- Quality Presets: Low, Medium, High\n\n### Caption Customization\n- Font customization\n- Color schemes\n- Position options\n- Animation effects\n- Word highlighting\n\n## 🤝 Contributing\n\nWe welcome contributions! Here's how you can help:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit changes (`git commit -m 'Add amazing feature'`)\n4. Push to branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\nPlease read our [Contributing Guidelines](LICENSE.md) for details.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🌐 Support\n\n- Enterprise Support: Contact adel50ali5b@gmail.com\n- Community Support: [GitHub Issues](https://github.com/adelelawady/Clipify/issues)\n- Documentation: [Wiki](https://github.com/adelelawady/Clipify)\n\n## 🙏 Acknowledgments\n\n- FFmpeg for video processing\n- OpenAI for AI capabilities\n- PyTorch community\n- All contributors and supporters\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://buymeacoffee.com/adel50ali5b\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Buy%20me%20a%20coffee-☕-yellow.svg\" alt=\"Buy me a coffee\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadelelawady%2Fclipify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadelelawady%2Fclipify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadelelawady%2Fclipify/lists"}