
# Freetube-import
Creates [FreeTube](https://freetubeapp.io/) .db playlist files from a list of youtube urls (.txt) or from .csv files exported from 'Google takeout'.
Run the scrip with a path to a valid .txt file of youtube urls, or youtube's .csv playlist file. Then import the resulting .db file into FreeTube.
Install via pip:
pip install freetube-import
https://pypi.org/project/freetube-import/
Basic usage:
freetube-import <file>... <file2> <file3>
Help message:
usage: freetube_import.py [-h] [-a] [-b] [-e] [-s] [filepath ...]
Import youtube playlists
positional arguments:
filepath path to a valid .txt or .csv playlist file or files
optional arguments:
-h, --help show this help message and exit
-a, --list-all Takes all .txt and csv files as input from the current working directory.
-b, --list-broken-videos
Lists videos that were added but have possibly broken metadata (for debugging).
-e, --log-errors Also lists the videos that failed the metadata fetch
-s, --stdin Takes stdin as input and outputs dirextly to stdout
-n NAME, --name NAME sets a name for playlist, otherwise uses input filename
While buggy and experimental `stdin` mode can used in scripts and automation. Not for average users.
cat test.txt | freetube-import -s > std_test.db
It might be usefull to set a name that shows up in FreeTube. Otherwise in stdin mode a placeholder name is generated.
cat test.txt | freetube-import -s -n playlist-name > std_test.db
pro tip: Try appending the ouput to FreeTube's own playlist.db file. So playlists get automatically added. (at your own risk, backup your files beforehand, close freetube to avoid file corruption)
cat test.txt | freetube-import -s -n playlist-name >> your/path/FreeTube/playlists.db
Works without YouTube api through a custom version of [YouTube-search library](https://github.com/joetats/youtube_search/). Also works atleast on piped links, probably also on lists of Invidious links and other links that follow the standard youtube url format.
### Dependencies
pip install requests
https://pypi.org/project/requests/
pip install tqdm
https://pypi.org/project/tqdm/
Raw data
{
"_id": null,
"home_page": null,
"name": "freetube-import",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "freetube, youtube, tube, playlist, import, cli, console, video, videos",
"author": "NoSpiner",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/a1/75/10c717aa5bbf94d37e5de3c93fe3e8b69e9137e9e49e1daab3be2d9b855a/freetube_import-0.35.0.tar.gz",
"platform": null,
"description": "\n\n\n\n# Freetube-import\nCreates [FreeTube](https://freetubeapp.io/) .db playlist files from a list of youtube urls (.txt) or from .csv files exported from 'Google takeout'.\n\nRun the scrip with a path to a valid .txt file of youtube urls, or youtube's .csv playlist file. Then import the resulting .db file into FreeTube.\n\n\n\nInstall via pip:\n\n pip install freetube-import\n\nhttps://pypi.org/project/freetube-import/\n\nBasic usage:\n\n freetube-import <file>... <file2> <file3>\n\nHelp message:\n\n usage: freetube_import.py [-h] [-a] [-b] [-e] [-s] [filepath ...]\n\n Import youtube playlists\n\n positional arguments:\n filepath path to a valid .txt or .csv playlist file or files\n\n optional arguments:\n -h, --help show this help message and exit\n -a, --list-all Takes all .txt and csv files as input from the current working directory.\n -b, --list-broken-videos\n Lists videos that were added but have possibly broken metadata (for debugging).\n -e, --log-errors Also lists the videos that failed the metadata fetch\n -s, --stdin Takes stdin as input and outputs dirextly to stdout\n -n NAME, --name NAME sets a name for playlist, otherwise uses input filename\n\nWhile buggy and experimental `stdin` mode can used in scripts and automation. Not for average users.\n\n cat test.txt | freetube-import -s > std_test.db\n\nIt might be usefull to set a name that shows up in FreeTube. Otherwise in stdin mode a placeholder name is generated.\n\n cat test.txt | freetube-import -s -n playlist-name > std_test.db\n\npro tip: Try appending the ouput to FreeTube's own playlist.db file. So playlists get automatically added. (at your own risk, backup your files beforehand, close freetube to avoid file corruption)\n\n cat test.txt | freetube-import -s -n playlist-name >> your/path/FreeTube/playlists.db\n\n\nWorks without YouTube api through a custom version of [YouTube-search library](https://github.com/joetats/youtube_search/). Also works atleast on piped links, probably also on lists of Invidious links and other links that follow the standard youtube url format.\n\n### Dependencies \n\n pip install requests\nhttps://pypi.org/project/requests/\n\n pip install tqdm\nhttps://pypi.org/project/tqdm/\n",
"bugtrack_url": null,
"license": null,
"summary": "Converts text and youtube .csv files into FreeTube playlists",
"version": "0.35.0",
"project_urls": {
"Homepage": "https://github.com/NoSpiner/Freetube-import",
"Issues": "https://github.com/NoSpiner/Freetube-import/issues"
},
"split_keywords": [
"freetube",
" youtube",
" tube",
" playlist",
" import",
" cli",
" console",
" video",
" videos"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "cb42d8f0fbcc348dc1c5d421ac9db56f7dc5a95257a7137342f6977e88604eb0",
"md5": "24a5a1cd3a1270fbd6f3209416c758b0",
"sha256": "eea66764adff19475f2661f0c4ffd95db8f9da2563948720abb36fa32466392e"
},
"downloads": -1,
"filename": "freetube_import-0.35.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "24a5a1cd3a1270fbd6f3209416c758b0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 8869,
"upload_time": "2025-07-31T11:36:36",
"upload_time_iso_8601": "2025-07-31T11:36:36.411991Z",
"url": "https://files.pythonhosted.org/packages/cb/42/d8f0fbcc348dc1c5d421ac9db56f7dc5a95257a7137342f6977e88604eb0/freetube_import-0.35.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a17510c717aa5bbf94d37e5de3c93fe3e8b69e9137e9e49e1daab3be2d9b855a",
"md5": "4d7c6c8a4c5a3c88564cb0183dc65a9a",
"sha256": "6f617d8c888b3d9664e61bd87f53686121c08fb79fb80106f9b66ea5cce23cd4"
},
"downloads": -1,
"filename": "freetube_import-0.35.0.tar.gz",
"has_sig": false,
"md5_digest": "4d7c6c8a4c5a3c88564cb0183dc65a9a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 8065,
"upload_time": "2025-07-31T11:36:37",
"upload_time_iso_8601": "2025-07-31T11:36:37.403321Z",
"url": "https://files.pythonhosted.org/packages/a1/75/10c717aa5bbf94d37e5de3c93fe3e8b69e9137e9e49e1daab3be2d9b855a/freetube_import-0.35.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-31 11:36:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "NoSpiner",
"github_project": "Freetube-import",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "freetube-import"
}