Skip to content

Etherna/etherna-video-importer

Repository files navigation

Etherna Video Importer

Overview

Tool to import videos on Etherna from different sources.

Instructions

Download and extract binaries from release page.

Currently, exists two versions:

  • EthernaVideoImporter for a generic use
  • EthernaVideoImporter.Devcon to import specifically Devcon Archive's videos

Etherna Video Importer requires at least .NET 8 Runtime and ASP.NET Core 8 Runtime installed on local machine to run, or it needs the selfcontained version of package, that already contains framework dependencies.

Setup FFmpeg and FFprobe

To run the importer you need to download FFmpeg and FFprobe locally, and copy them into the default folder "\FFmpeg", or specify its location with arguments.

How to use

EthernaVideoImporter's help

Tool to import videos on Etherna from different sources.

    Program distributed under AGPLv3 license. Copyright since 2022 by Etherna SA.
    You can find source code at: https://github.com/Etherna/etherna-video-importer

Usage:  evi COMMAND SOURCE_URI [SOURCE_URI, ...] [OPTIONS]

Commands:
  json      Import from json video list (requires metadata descriptor, see below)
  youtube   Import from multiple YouTube links. Supports videos, channels and playlists urls

General Options:
  -k, --api-key           Api Key (optional)
  -f, --ffmpeg-path       Path to FFmpeg folder (default: search to <app_dir>/FFmpeg or global install)
  -i, --ignore-update     Ignore new version of EthernaVideoImporter
  -a, --auto-purchase     Accept automatically purchase of all batches
  -w, --write-file        Write published videos result to a JSON file
  --dry                   Run in dry mode. Any action on swarm gateway or index is performed read-only
  --working-dir           Use custom working directory
  
YouTube Options:
  --yt-autogen-sub        Import also YouTube autogenerated subtitles
  --yt-cookies            List of cookies to use with YouTube requests, divided by ';'

Video Management Options:
  -t, --ttl               TTL (days) Postage Stamp (default: 365 days)
  -o, --offer             Offer video downloads to everyone
  --no-pin                Don't pin videos (pinning by default)
  --force                 Force upload video if they already have been uploaded
  -m, --remove-missing    Remove indexed videos generated with this tool but missing from source
  --remove-unrecognized   Remove indexed videos not generated with this tool
  -u, --unpin             Try to unpin contents removed from index
  --bitrate-reduction     Reduce bitrate from HLS standard. [None, Low, Normal, High, Extreme, Insane]. Default: Normal
  --ffmpeg-preset         Preset option with ffmpeg (https://trac.ffmpeg.org/wiki/Encode/H.264#Preset). Default: Medium

Gateway Options:
  --bee-node              Use bee node as gateway
  --gateway-url           Connect gateway with custom URL

Json videos metadata format:
To import from a video list you need a metadata descriptor file. Metadata is a JSON file with the following structure:

[
    {
        "Id": "myId1",
        "Title": "First video title",
        "Description": "My first video description",
        "VideoFilePath": "path/to/your/video1.mp4",
        "ThumbnailFilePath": "path/to/your/optional/thumbnail1.jpg",
        "OldIds": [
            "optionalOldId1",
            "optionalOldId2"
        ]
    },
    {
        "Id": "myId2",
        "Title": "Second video title",
        "Description": "My second video description",
        "VideoFilePath": "http://example.com/stream.m3u8",
        "ThumbnailFilePath": "path/to/your/optional/thumbnail2.jpg"
    },
    ...
]

Id field is mandatory, and is needed to trace same video through different executions. Each Id needs to be unique.

Run 'evi -h' or 'evi --help' to print help.

EthernaVideoImporter.Devcon's help

Tool to import videos on Etherna from Devcon archive.

    Program distributed under AGPLv3 license. Copyright since 2022 by Etherna SA.
    You can find source code at: https://github.com/Etherna/etherna-video-importer

Usage:  evid VIDEO_FOLDER [OPTIONS]

General Options:
  -k, --api-key           Api Key (optional)
  -f, --ffmpeg-path       Path to FFmpeg folder (default: search to <app_dir>/FFmpeg or global install)
  -i, --ignore-update     Ignore new version of EthernaVideoImporter
  -a, --auto-purchase     Accept automatically purchase of all batches
  --dry                   Run in dry mode. Any action on swarm gateway or index is performed read-only
  --yt-cookies            List of cookies to use with YouTube requests, divided by ';'
  --working-dir           Use custom working directory

Video Management Options:
  -t, --ttl               TTL (days) Postage Stamp (default: 365 days)
  -o, --offer             Offer video downloads to everyone
  --no-pin                Don't pin videos (pinning by default)
  --force                 Force upload video if they already have been uploaded
  -m, --remove-missing    Remove indexed videos generated with this tool but missing from source
  --remove-unrecognized   Remove indexed videos not generated with this tool
  -u, --unpin             Try to unpin contents removed from index
  --bitrate-reduction     Reduce bitrate from HLS standard. [None, Low, Normal, High, Extreme, Insane]. Default: Normal
  --ffmpeg-preset         Preset option with ffmpeg (https://trac.ffmpeg.org/wiki/Encode/H.264#Preset). Default: Medium

Gateway Options:
  --bee-node              Use bee node as gateway
  --gateway-url           Connect gateway with custom URL

Run 'evid -h' or 'evid --help' to print help.

Issue reports

If you've discovered a bug, or have an idea for a new feature, please report it to our issue manager based on Jira https://etherna.atlassian.net/projects/EVI.

Detailed reports with stack traces, actual and expected behaviours are welcome.

Questions? Problems?

For questions or problems please write an email to info@etherna.io.

License

AGPL Logo

We use the GNU Affero General Public License v3 (AGPL-3.0) for this project. If you require a custom license, you can contact us at license@etherna.io.