Search packages, repositories and app categories

GitHub repositorythitlwincoder/direct_link

direct_link

Direct link extractor from URL to stream and download directly

direct_link project cover
Stars
36
Forks
21
Last push (UTC)
Aug 18, 2026
Project status
Active

Original README

English project snapshot. Visit GitHub for the latest content.

direct_link

pub package Last Commits GitHub repo size License
Uploaded By

direct_link is a Flutter package for extracting direct media links and basic metadata from supported public page URLs.

Use it when you need to build a downloader, media preview, or media utility app that can resolve a shared social/video URL into playable or downloadable links.

Features

  • Extract direct media links from supported websites.
  • Return media metadata such as title, thumbnail, and duration when available.
  • Return multiple qualities or formats when the source provides them.
  • Simple null-safe API with a single check method.

Supported websites

  • Facebook
  • Instagram
  • YouTube
  • Twitter/X
  • Dailymotion
  • Vimeo
  • VK
  • SoundCloud
  • TikTok
  • Reddit
  • Threads

Support depends on the upstream website response and the extraction service used internally. A supported website can still return null when the URL is private, removed, region-blocked, unsupported by the upstream service, or temporarily unavailable.

Platform support

This package currently depends on Flutter and flutter_inappwebview, so it is intended for Flutter apps.

Screenshot

direct_link example screenshot

Installation

Add direct_link to your Flutter project's pubspec.yaml:

dependencies:
  direct_link: ^0.3.3

Then run:

flutter pub get

Import the package:

import 'package:direct_link/direct_link.dart';

Usage

Create a DirectLink instance and call check with a supported page URL:

final directLink = DirectLink();

final data = await directLink.check(
  'https://www.youtube.com/watch?v=kzOO_uplPdk',
);

if (data == null) {
  // No media link was found, or the upstream service could not resolve it.
  return;
}

print(data.title);
print(data.thumbnail);
print(data.duration);

for (final link in data.links ?? []) {
  print(link.quality);
  print(link.type);
  print(link.link);
}

API

DirectLink.check
Future<SiteModel?> check(String url, {double? timeoutInterval});

Resolves a supported public page URL into a SiteModel.

Returns null when no media link can be extracted.

SiteModel
class SiteModel {
  final String? title;
  final String? thumbnail;
  final String? duration;
  final List<Link>? links;
}
Link
class Link {
  final String quality;
  final String link;
  final String? type;
}

Notes and limitations

  • This package resolves public media URLs only.
  • Private, deleted, age-restricted, login-required, or region-blocked content may not resolve.
  • Website markup and upstream extraction behavior can change without notice.
  • The returned link list and quality labels depend on the source website and upstream service response.
  • Network-based social website checks are integration tests and are not run by default.

Testing

Run deterministic unit tests:

flutter test

Run real-site integration tests explicitly:

flutter test integration_test/social_test.dart

Integration tests depend on live third-party websites and may fail because of network issues, rate limits, region restrictions, or upstream website changes.

Contributing

Issues and pull requests are welcome.

  • Report bugs on the issue tracker.
  • Include a reproducible URL when reporting extraction failures.
  • Keep unit tests deterministic. Put live website checks in integration_test/.

License

This package is released under the MIT License.

Thit Lwin GitHub avatar
GitHub author

Thit Lwin ↗

Flutter Developer

RemoteYangon, Myanmar(Burma)
LanguagesDartC++CMakeRubySwiftCHTMLKotlinObjective-C

Categories

Packages published by this repository

Dependencies used

Dependency list 5 items

How do I choose a repository?

Start with your use case, compare repository activity, and check the original project before adopting it.

  1. Search by repository name, owner or description, then narrow the results by topic.
  2. Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
  3. Read the README, license and issues on GitHub before using a project.

Sources and maintenance

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗