Compare commits

...

44 Commits

Author SHA1 Message Date
DarkFighterLuke 56e8c29a94 Detect directory separators in paths 2024-05-09 15:32:18 +02:00
DarkFighterLuke 7ea9d20e86 Merge branch 'master' of github.com:tubearchivist/tubearchivist-jf-plugin into dev 2024-05-09 10:50:31 +02:00
DarkFighterLuke bff3b2b59a Update README.md 2024-05-09 10:46:47 +02:00
DarkFighterLuke c4b1d1d954 Update README.md 2024-05-09 10:41:52 +02:00
DarkFighterLuke bc5fd7fa20 Add missing space 2024-05-09 10:14:52 +02:00
DarkFighterLuke 13fd9de010 Fix double * 2024-05-09 10:10:14 +02:00
DarkFighterLuke 6803016a17 Create release changelog file 2024-05-09 10:06:49 +02:00
DarkFighterLuke 00047b6753 Remove useless branch condition 2024-05-08 23:45:17 +02:00
DarkFighterLuke 107aa0ed6c Allow updates 2024-05-08 23:40:49 +02:00
DarkFighterLuke c93d705216 Set latest tag 2024-05-08 23:35:54 +02:00
DarkFighterLuke 8cbdeee818 Trigger push event 2024-05-08 23:31:09 +02:00
DarkFighterLuke f70527d218 Trigger push event 2024-05-08 23:30:10 +02:00
DarkFighterLuke 9f2c7e4510 Run workflow on tag creation and create release automatically 2024-05-08 23:24:07 +02:00
DarkFighterLuke a5904a5310 Attempt to set release message 2024-05-08 22:35:34 +02:00
DarkFighterLuke a7c6d575ed Attempt to set release message 2024-05-08 22:31:55 +02:00
DarkFighterLuke 5b14b3ac87 Attempt to set RELEASE_MESSAGE 2024-05-08 22:26:51 +02:00
DarkFighterLuke 8b6eae7a6c Fix release message variable 2024-05-08 22:22:09 +02:00
DarkFighterLuke 3c33025cfa Add quotes 2024-05-07 23:01:36 +02:00
DarkFighterLuke da56d00689 Fix variable definition 2024-05-07 22:59:41 +02:00
DarkFighterLuke aab2de6189 Move release message creation before build task 2024-05-07 22:56:52 +02:00
DarkFighterLuke 9b0c4b5d34 Set release message 2024-05-07 22:53:24 +02:00
DarkFighterLuke d6cf76f948 Change plugin description 2024-05-07 22:24:09 +02:00
DarkFighterLuke 03c77fcbc5 Add imageUrl 2024-05-07 16:03:27 +02:00
DarkFighterLuke 1f33b908be Revert "Set correct dotnet-target"
This reverts commit 6e24a61623.
2024-05-07 16:02:25 +02:00
DarkFighterLuke ebb74cf7f5 Fix artifact name 2024-05-07 15:56:47 +02:00
DarkFighterLuke 59550760eb Fix attempt for version in file name 2024-05-07 15:51:31 +02:00
DarkFighterLuke 3b9d235aee Use only version number in file name 2024-05-07 15:47:57 +02:00
DarkFighterLuke 857ca0f8e0 Change asset name 2024-05-07 15:45:12 +02:00
DarkFighterLuke 80f1091af3 Merge branch 'master' of github.com:DarkFighterLuke/TubeArchivistMetadata 2024-05-07 15:11:44 +02:00
DarkFighterLuke d1ddd4d32d Merge branch 'master' of github.com:DarkFighterLuke/TubeArchivistMetadata
.github/workflows/build.yaml
2024-05-07 15:11:18 +02:00
DarkFighterLuke 924f85260e Merge branch 'master' of github.com:DarkFighterLuke/TubeArchivistMetadata
.github/workflows/build.yaml
2024-05-07 15:09:08 +02:00
DarkFighterLuke ca56fcac34 Give write permission to upload 2024-05-07 15:07:27 +02:00
DarkFighterLuke 37c7056204 Give write permission to upload 2024-05-07 15:04:36 +02:00
DarkFighterLuke 8d89c82660 Add imageUrl 2024-05-07 00:16:58 +02:00
DarkFighterLuke 06efee0051 Fix plugin version in workflow 2024-05-07 00:14:09 +02:00
DarkFighterLuke 83b92f5dfe Fix paths and version 2024-05-07 00:09:15 +02:00
DarkFighterLuke 8e77326c20 Add solution file 2024-05-06 23:59:29 +02:00
DarkFighterLuke 37a49ddabd Fix path 2024-05-04 16:46:13 +02:00
DarkFighterLuke 6e24a61623 Set correct dotnet-target 2024-05-04 16:42:19 +02:00
DarkFighterLuke ddd61fa39c Automate build and release 2024-05-04 16:16:20 +02:00
DarkFighterLuke 3ba7e2ec52 Add compatibility with Windows in paths 2024-05-03 15:46:57 +02:00
DarkFighterLuke 057020f0ba Update README.md
Fix wrong replacement
2024-05-01 22:15:34 +02:00
DarkFighterLuke 02846a7d00 Add feature request issue template 2024-04-28 12:07:03 +02:00
DarkFighterLuke c9fee17716 Add bug report issue template 2024-04-28 12:05:10 +02:00
12 changed files with 239 additions and 12 deletions
+55
View File
@@ -0,0 +1,55 @@
name: Bug Report
description: File a bug report
title: "[Bug]: "
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to help improve this project! Please read the [how to open an issue](https://github.com/tubearchivist/tubearchivist/blob/master/CONTRIBUTING.md#how-to-open-an-issue) guide carefully before continuing.
- type: checkboxes
id: latest
attributes:
label: "I've read the documentation"
options:
- label: I'm running the latest version of tubearchivist-jf-plugin.
required: true
- label: I have read the [how to open an issue](https://github.com/tubearchivist/tubearchivist/blob/master/CONTRIBUTING.md#how-to-open-an-issue) guide, particularly the [bug report](https://github.com/tubearchivist/tubearchivist/blob/master/CONTRIBUTING.md#bug-report) section.
required: true
- type: input
id: os
attributes:
label: Operating System
description: On what operating system are you running Tube Archivist on?
placeholder: eg. Linux, Windows, ...
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: Your Bug Report
value: "## Describe the bug\n\n## Steps To Reproduce\n\n## Expected behavior"
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant Jellyfin log output
description: Please copy and paste any relevant Jellyfin logs. This will be automatically formatted into code, so no need for backticks.
render: shell
validations:
required: true
- type: textarea
attributes:
label: Anything else?
description: |
Links? References? Anything that will give us more context about the issue you are encountering!
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
validations:
required: false
@@ -0,0 +1,34 @@
name: Feature Request
description: I have an idea for a great addition to this project
title: "[Feature Request]: "
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to help improve this project! This project is *very* selective with accepting new feature requests. Please read the [how to open an issue](https://github.com/tubearchivist/tubearchivist/blob/master/CONTRIBUTING.md#how-to-open-an-issue) guide carefully before continuing.
- type: checkboxes
id: already
attributes:
label: "I've read the documentation"
options:
- label: I have read the [how to open an issue](https://github.com/tubearchivist/tubearchivist/blob/master/CONTRIBUTING.md#how-to-open-an-issue) guide, particularly the [feature request](https://github.com/tubearchivist/tubearchivist/blob/master/CONTRIBUTING.md#feature-request) section.
required: true
- type: textarea
id: description
attributes:
label: Your Feature Request
value: "## Is your feature request related to a problem? Please describe.\n\n## Describe the solution you'd like\n\n## Additional context"
placeholder: Tell us what you see!
validations:
required: true
- type: checkboxes
id: help
attributes:
label: Your help is needed!
description: This project is ambitious as it is, please contribute.
options:
- label: Yes I will work on this in the next few days or weeks.
+76
View File
@@ -0,0 +1,76 @@
name: TubeArchivistMetadata Release
on:
push:
tags:
- v*
jobs:
build:
runs-on: ubuntu-latest
name: Build & Release
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: ${{ github.ref }}
fetch-depth: 0
- name: Get release version
id: newtag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
- name: Setup .Net
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
- name: Get version number only
run: |
TAG=${{ steps.newtag.outputs.tag }}
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
- name: Generate release message
run: |
# Read the YAML file and extract the value of the 'changelog' field
changelog=$(awk '/changelog:/ {flag=1; next} /^[^ ]/ {flag=0} flag' build.yaml | awk '{$1=$1};1')
# Check if changelog contains multiple lines
if [[ $(echo "$changelog" | wc -l) -gt 1 ]]; then
changelog=$(echo "$changelog" | sed 's/^/* /')
else
changelog="* $changelog"
fi
# Create release-changelog.md
echo "Changelog:" > release-changelog.md
echo "$changelog" >> release-changelog.md
- name: Build Jellyfin Plugin
uses: oddstr13/jellyfin-plugin-repository-manager@843260fcdfda7cba229c5abd77bdd9c6fc4e850b # v1.1.0
id: jprm
with:
dotnet-target: net6.0
version: ${VERSION}
- name: Create release
uses: ncipollo/release-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: ${{ steps.jprm.outputs.artifact }}
makeLatest: latest
bodyFile: release-changelog.md
tag: ${{ steps.newtag.outputs.tag }}
allowUpdates: true
- name: Update manifest.json
uses: stefanzweifel/git-auto-commit-action@v4
with:
branch: master
commit_message: "Update manifest.json"
file_pattern: manifest.json
skip_fetch: true
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Threading;
@@ -59,7 +60,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
{
var list = new List<RemoteImageInfo>();
var taApi = TubeArchivistApi.GetInstance();
var videoTAId = item.Path.Split("/").Last().Split(".").First();
var videoTAId = Utils.GetVideoNameFromPath(item.Path);
var video = await taApi.GetVideo(videoTAId).ConfigureAwait(true);
_logger.LogInformation("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting images for video: {0} ({1})", video?.Title, videoTAId));
_logger.LogInformation("{Message}", "Thumb URI: " + video?.VidThumbUrl);
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Threading;
@@ -50,7 +51,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
{
var result = new MetadataResult<Episode>();
var taApi = TubeArchivistApi.GetInstance();
var videoTAId = info.Path.Split("/").Last().Split(".").First();
var videoTAId = Utils.GetVideoNameFromPath(info.Path);
var video = await taApi.GetVideo(videoTAId).ConfigureAwait(true);
_logger.LogInformation("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting metadata for video: {0} ({1})", video?.Title, videoTAId));
_logger.LogInformation("{Message}", "Received metadata: \n" + JsonConvert.SerializeObject(video));
@@ -79,7 +80,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
var results = new List<RemoteSearchResult>();
var taApi = TubeArchivistApi.GetInstance();
var videoTAId = searchInfo.Path.Split("/").Last().Split(".").First();
var videoTAId = Utils.GetVideoNameFromPath(searchInfo.Path);
var video = await taApi.GetVideo(videoTAId).ConfigureAwait(true);
if (video != null)
{
@@ -58,7 +58,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
{
var list = new List<RemoteImageInfo>();
var taApi = TubeArchivistApi.GetInstance();
var channelTAId = item.Path.Split("/").Last();
var channelTAId = Utils.GetChannelNameFromPath(item.Path);
var channel = await taApi.GetChannel(channelTAId).ConfigureAwait(true);
_logger.LogInformation("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting images for channel: {0} ({1})", channel?.Name, channelTAId));
_logger.LogInformation("{Message}", "Thumb URI: " + channel?.ThumbUrl);
@@ -50,7 +50,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
{
var result = new MetadataResult<Series>();
var taApi = TubeArchivistApi.GetInstance();
var channelTAId = info.Path.Split("/").Last();
var channelTAId = Utils.GetChannelNameFromPath(info.Path);
var channel = await taApi.GetChannel(channelTAId).ConfigureAwait(true);
_logger.LogInformation("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting metadata for channel: {0} ({1})", channel?.Name, channelTAId));
_logger.LogInformation("{Message}", "Received metadata: \n" + JsonConvert.SerializeObject(channel));
@@ -79,7 +79,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
var results = new List<RemoteSearchResult>();
var taApi = TubeArchivistApi.GetInstance();
var channelTAId = searchInfo.Path.Split("/").Last();
var channelTAId = Utils.GetChannelNameFromPath(searchInfo.Path);
var channel = await taApi.GetChannel(channelTAId).ConfigureAwait(true);
if (channel != null)
{
@@ -1,3 +1,5 @@
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
namespace Jellyfin.Plugin.TubeArchivistMetadata.Utilities
@@ -53,5 +55,40 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Utilities
return description;
}
/// <summary>
/// Get video name from file path on the disk.
/// </summary>
/// <param name="path">File path on disk.</param>
/// <returns>The video name.</returns>
public static string GetVideoNameFromPath(string path)
{
return path.Split(DetectDirectorySeparator(path)).Last().Split(".").First();
}
/// <summary>
/// Get channel name from directory path on the disk.
/// </summary>
/// <param name="path">Directory path on disk.</param>
/// <returns>The channel name.</returns>
public static string GetChannelNameFromPath(string path)
{
return path.Split(DetectDirectorySeparator(path)).Last();
}
private static char DetectDirectorySeparator(string path)
{
int backslashCount = path.Count(c => c == '\\');
int forwardSlashCount = path.Count(c => c == '/');
if (backslashCount > forwardSlashCount)
{
return '\\'; // Windows directory separator
}
else
{
return '/'; // Unix directory separator
}
}
}
}
+3 -3
View File
@@ -30,11 +30,11 @@ The plugin interacts with TubeArchivist APIs to fetch videos and channels metada
3. Go to the `Catalog` tab
4. Find `TubeArchivistMetadata` in the `Metadata` section and install it
![Find plugin](https://github.com/tubearchivist/tubearchivist-jf-plugin/assets/31162436/86897215-bac5-4cef-8bd3-ffec731b0875)
![Find plugin](https://github.com/tubearchivist/tubearchivist-jf-plugin/assets/31162436/a30a14c2-33cd-44c1-b96a-406662726e5e)
5. Restart Jellyfin to apply the changes
### From ZIP in GitHub releases
1. Download the latest available release (`TubeArchivistMetadata-*.zip`) from the repository releases section
1. Download the latest available release (`tubearchivistmetadata_*.zip`) from the repository releases section
2. Extract the contained files in the `plugins/TubeArchivistMetadata` folder (you might need to create the folders) of your Jellyfin installation
3. Restart Jellyfin to apply the changes
@@ -68,7 +68,7 @@ _NOTE: If you are using Docker containers, it is important to mount the TubeArch
2. Build plugin with following command
```
dotnet publish Jellyfin.Plugin.tubearchivist-jf-plugin --configuration Release --output bin
$ dotnet publish Jellyfin.Plugin.TubeArchivistMetadata --configuration Release --output bin
```
3. Place the dll-file in the `plugins/tubearchivist-jf-plugin` folder (you might need to create the folders) of your Jellyfin installation
+22
View File
@@ -0,0 +1,22 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Plugin.TubeArchivistMetadata", "Jellyfin.Plugin.TubeArchivistMetadata\Jellyfin.Plugin.TubeArchivistMetadata.csproj", "{7A112ACB-79E8-4FC9-BCF6-B3AC849DA2D4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7A112ACB-79E8-4FC9-BCF6-B3AC849DA2D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A112ACB-79E8-4FC9-BCF6-B3AC849DA2D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A112ACB-79E8-4FC9-BCF6-B3AC849DA2D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A112ACB-79E8-4FC9-BCF6-B3AC849DA2D4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
+3 -2
View File
@@ -1,7 +1,8 @@
---
name: "TubeArchivistMetadata"
guid: "dc97d0c6-28b0-4242-afb4-5833ae1b3715"
version: "1.2.3.0"
imageUrl: https://raw.githubusercontent.com/tubearchivist/tubearchivist-jf-plugin/master/images/logo.png
version: "1.2.4.0"
targetAbi: "10.8.0.0"
framework: "net6.0"
overview: "Metadata for your TubeArchivist library on Jellyfin"
@@ -13,4 +14,4 @@ owner: "DarkFighterLuke"
artifacts:
- "Jellyfin.Plugin.TubeArchivistMetadata.dll"
changelog: >
Add fix for unclosed HTML breaks
Fix issues with directory separators
+1 -1
View File
@@ -3,7 +3,7 @@
"category": "Metadata",
"guid": "dc97d0c6-28b0-4242-afb4-5833ae1b3715",
"name": "TubeArchivistMetadata",
"description": "A new and fully integrated way to manage metadata and organize your TubeArchivist library videos on Jellyfin.",
"description": "TubeArchivistMetadata is a plugin that automatically manages metadata for videos downloaded with TubeArchivist from YouTube.\n",
"owner": "DarkFighterLuke",
"overview": "Metadata for your TubeArchivist library on Jellyfin",
"imageUrl": "https://raw.githubusercontent.com/tubearchivist/tubearchivist-jf-plugin/master/images/logo.png",