Scripting way to upload videos to peertube and youtube
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
LecygneNoir 2e600bc455 Fix bug with trailing / in peertube url. fix #6 5年前
lib Fix bug with trailing / in peertube url. fix #6 5年前
.gitignore Add option to disable comments on Peertube (Youtube has no option in API to do that) 6年前
CHANGELOG.md Add Changelog info for thumbnail feature 5年前
LICENSE initial commit 6年前
README.md Update README with new features and help for thumbnail 5年前
nfo_example.txt Merge branch 'feature/thumbnail' into develop 5年前
peertube_secret.sample Bugfix, no quotes are allowed inside peertube_secret 6年前
prismedia_upload.py Merge branch 'feature/thumbnail' into develop 5年前
youtube_secret.json.sample use youtube_secret instead of client_secret to allow more flexibility (possibility to use peertube_secret) 6年前

README.md

Prismedia

A scripting way to upload videos to peertube and youtube

Dependencies

Search in your package manager, otherwise use pip install --upgrade

  • google-auth
  • google-auth-oauthlib
  • google-auth-httplib2
  • google-api-python-client
  • docopt
  • schema
  • python-magic
  • requests-toolbelt
  • tzlocal

For Peertube and if you want to use the publishAt option, you also need some utilities on you local system

Configuration

Edit peertube_secret and youtube_secret.json with your credentials.

Peertube

Set your credentials, peertube server URL.
You can get client_id and client_secret by logging in your peertube website and reaching the URL: https://domain.example/api/v1/oauth-clients/local You can set OAUTHLIB_INSECURE_TRANSPORT to 1 if you do not use https (not recommended)

Youtube

Youtube uses combination of oauth and API access to identify.

Credentials The first time you connect, prismedia will open your browser to as you to authenticate to Youtube and allow the app to use your Youtube channel.
It is here you choose which channel you will upload to.
Once authenticated, the token is stored inside the file .youtube_credentials.json.
Prismedia will try to use this file at each launch, and re-ask for authentication if it does not exist.

Oauth:
The default youtube_secret.json should allow you to upload some videos.
If you plan an larger usage, please consider creating your own youtube_secret file:

  • Go to the Google console.
  • Create project.
  • Side menu: APIs & auth -> APIs
  • Top menu: Enabled API(s): Enable all Youtube APIs.
  • Side menu: APIs & auth -> Credentials.
  • Create a Client ID: Add credentials -> OAuth 2.0 Client ID -> Other -> Name: prismedia1 -> Create -> OK
  • Download JSON: Under the section "OAuth 2.0 client IDs". Save the file to your local system.
  • Save this JSON as your youtube_secret.json file.

How To

Currently in heavy development

Support only mp4 for cross compatibility between Youtube and Peertube

Simply upload a video:

./prismedia_upload.py --file="yourvideo.mp4"

Specify description and tags:

./prismedia_upload.py --file="yourvideo.mp4" -d "My supa description" -t "tag1,tag2,foo"

Provide a thumbnail:

./prismedia_upload.py --file="yourvideo.mp4" -d "Video with thumbnail" --thumbnail="/path/to/your/thumbnail.jpg"

Use a NFO file to specify your video options:

./prismedia_upload.py --file="yourvideo.mp4" --nfo /path/to/your/nfo.txt

Use --help to get all available options:

prismedia_upload - tool to upload videos to Peertube and Youtube

Usage:
  prismedia_upload.py --file=<FILE> [options]
  prismedia_upload.py --file=<FILE> --tags=STRING [--mt options]
  prismedia_upload.py -h | --help
  prismedia_upload.py --version

Options:
  --name=NAME  Name of the video to upload. (default to video filename)
  -d, --description=STRING  Description of the video. (default: default description)
  -t, --tags=STRING  Tags for the video. comma separated.
                     WARN: tags with space and special characters (!, ', ", ?, ...)
                           are not supported by Mastodon to be published from Peertube
                           use mastodon compatibility below
  --mt  Force Mastodon compatibility for tags (drop every incompatible characters inside tags)
        This option requires --tags
  -c, --category=STRING  Category for the videos, see below. (default: Films)
  --cca  License should be CreativeCommon Attribution (affects Youtube upload only)
  -p, --privacy=STRING  Choose between public, unlisted or private. (default: private)
  --disable-comments  Disable comments (Peertube only as YT API does not support) (default: comments are enabled)
  --nsfw  Set the video as No Safe For Work (Peertube only as YT API does not support) (default: video is safe)
  --nfo=STRING  Configure a specific nfo file to set options for the video.
                By default Prismedia search a .txt based on video name
                See nfo_example.txt for more details
  --platform=STRING  List of platform(s) to upload to, comma separated.
                     Supported platforms are youtube and peertube (default is both)
  --language=STRING  Specify the default language for video. See below for supported language. (default is English)
  --publishAt=DATE  Publish the video at the given DATE using local server timezone.
                    DATE should be on the form YYYY-MM-DDThh:mm:ss eg: 2018-03-12T19:00:00
                    DATE should be in the future
                    For Peertube, requires the "atd" and "curl utilities installed on the system
  --thumbnail=STRING    Path to a file to use as a thumbnail for the video.
                        Supported types are jpg and jpeg.
                        By default, prismedia search for an image based on video name followed by .jpg or .jpeg
  -h --help  Show this help.
  --version  Show version.

Categories:
  Category is the type of video you upload. Default is films.
  Here are available categories from Peertube and Youtube:
    music, films, vehicles,
    sports, travels, gaming, people,
    comedy, entertainment, news,
    how to, education, activism, science & technology,
    science, technology, animals

Languages:
  Language of the video (audio track), choose one. Default is English
  Here are available languages from Peertube and Youtube:
    Arabic, English, French, German, Hindi, Italian,
    Japanese, Korean, Mandarin, Portuguese, Punjabi, Russian, Spanish

Features

  • Support of all videos arguments (description, tags, category, licence, ...)

Compatibility

If your server uses peertube before 1.0.0-beta4, use the version inside tag 1.0.0-beta3!

Sources

inspired by peeror and youtube-upload