An audnexus client, providing rich author and audiobook data to Plex via it's legacy plugin agent system.

Overview

Project logo

Audnexus.bundle

Status GitHub Issues GitHub Pull Requests License CodeFactor Grade


An audnex.us client, providing rich author and audiobook data to Plex via it's legacy plugin agent system.

📝 Table of Contents

🧐 About

The aim of this project is to automate as much as possible, and make some intelligent, transparent choices for the user. All data used by this plugin is sourced from the parent aggregator, audnex.us. By using the audnexus API, searches and matches, which are cached, are greatly accelerated over scraping each search and item page from HTML. Additionally, the API can have multiple sources of data used for each book entry.

Audnexus will first search a book/author to see if it's come across it before. If it's found, it returns them straight away. If not, it requests that the aggregator import all the available data. Thus, the more people who use audnexus' client plugins, the faster the API will be and more data complete. You can also run a fork of the API yourself, see the above repo on how to do that.

🏁 Getting Started

Getting the agent up and running is a very smooth process, whether this is your first foray into audiobooks or you are migrating a library from another audiobooks agent. We look forward to getting you high quality data!

NOTE: Data is currently only available for the US region.

Prerequisites

  • Plex Media Server v1.24.4.5081 or greater.
  • git installed on system, as this is the preferred method of installing/updating the agent. You can also extract the zip instead.
  • Files are expected to be in/tested with common audiobook file structure and tags, specifically from either Bragi Books or Seanap's guide. In particular, you are expected to have the following structure: Author Name/Book Name/Book Name: Subtitle.m4b with album and albumartist tags. This is imperative for proper matching!

Installing

If you are new to getting plugins on your system or do not have access to git, go through this Plex documentation: How do I manually install a plugin? If you are already familiar with the plugins system, and have git, follow the below steps.

  1. Clone (or unzip) this project into your Plex Plug-ins directory:
git clone https://github.com/djdembeck/Audnexus.bundle.git
  1. Restart your Plex Media Server.

For future updates, run the below commmand from within the Audnexus.bundle folder.

git pull

🔧 Configuing the agent

If you wish to use local tags/images, you can follow the directions here, but this agent assumes you will not.

Create an audiobook library

  • From within Plex Web, create a new library, with the MUSIC type, and name it Audiobooks.
  • Add your folders.

In the ADVANCED tab:

  • Scanner: Plex Music Scanner
  • Agent: Audnexus Agent
  • Toggle agent settings as you please.
  • Uncheck all boxes except Store track progress
  • Genres: Embedded tags
  • Album Art: Local Files Only

Add the library and go do anything but read a physical book while the magic happens :)

Migrate an existing audiobook library

If you are coming from another Audiobooks agent, such as Audiobooks.bundle, then upgrading is super easy!

  • First, follow the steps for the ADVANCED tab above and save the settings.
  • Second, go to the Audiobooks library settings, Manage Library > Refresh All Metadata. This will programmatically upgrade authors, and then every album under those authors.

Just like adding a new library, upgrading one can take some time to switch all your data over.

🎈 Usage

Manually fixing matches

There are a few tricks to know about using fix match for books and authors:

  • You may use the ASIN (Audible ID) in the name field, and it will override any other search paramaters.
  • Some authors do not have an Audible profile. These will not have an Audnexus DB entry.
  • You may need to modify author names in search to find them (for example, removing a middle initial). This is a search limitation we are looking to improve.
  • Book results come back in the format of: "TITLE" by AUTHOR_FIRSTINITIAL.AUTHOR_LASTNAME w/ NARRATOR_FIRSTINITIAL.NARRATOR_LASTNAME
  • Year field cannot be used by music agents (what we use), so it's an irrelevant parameter.
  • Scores are based on the following criteria: Book title (Lvenshtein distance), Author(s) name (Lvenshtein distance), language of book vs language of library (2 points), and 1 point deduction for each result (relevance score).
  • Identical results for book may appear. Typically the one with a score of 100 is the 'correct' one.

Data that the agent brings to your library:

Authors (Artists)

  • High resolution image.
  • Text description/bio.
  • Genres
  • Sorted by Last Name, First Name
  • Combines books with multiple author into the first author, reducing duplicate author entries/pages.

Books (Albums)

  • High resolution cover (up to 3200x3200).
  • Rating (currently based on Audible user rating).
  • Release date.
  • Record label (publisher)
  • Review (plot summary)
  • Genres and sub-genres:
    • Up to 2 parent category genres.
    • Up to 4 sub-category genres.
  • Narrator as Style tag.
  • Authors as Mood tag.
  • Series as Mood tag (prefixed by Series:)
  • Sorted by Series number and then book title.

Collections are not available to legacy agents. Please do not open requests for them.

Comments
  • Issues with multiple series

    Issues with multiple series

    it looks like there are some issues when a book is in more than one series. for example Men at Arms is the 15th book in the Discworld series but the 2nd book in the City Watch sub series and the scraper has put it as discworld book 3 in the sort title. image i assume this is because of how Audible has it on their page. image is there a way to say have a setting to always use the larger number (most likely to be the main series and not a sub series)?

    bug 
    opened by TomW1605 7
  • Bugfix for name_to_initials()

    Bugfix for name_to_initials()

    I don't know why I thought using a list comprehension and f-strings improves the code, following the KISS principle the change I made in this commit is all that should have been done in the first place. So please dump my previous PR. Tested in Python 2.7 REPL.

    opened by rabelux 5
  • Detect ASINs in file path

    Detect ASINs in file path

    Short-circuit album search if an ASIN is detected after a # in the album's file path. Made this for my own library but this might close #19 if I understand it right.

    Could be good to also override the artist search if it's possible to get the right data using the album ASIN, but that's beyond my needs at the moment.

    opened by xuvatilavv 5
  • Bug? Wrong language fetched, when selecting language from Plex

    Bug? Wrong language fetched, when selecting language from Plex "Fix Match" Pulldown

    Hello,

    *I have read this issue and understand, that no other language support than english works atm, but the current bundle's behaviour is kind of cumbersome for the user, because it forced more manual work to change the language back to english from the wrong fetched language.

    In Plex, the sumary for artist "Franz Kafka" was fetched in english language. I wanted to change this to german* languange, so I choosed "fix match" and selected "german" as language of my choice. After that, the sumary was fetched in spanish language.

    If there exists no german sumary, I'd prefer english language over any other language, can we have the bundle have fall-back to english language, if the choosen language is not available for sumary?

    Having a language like spanish (or french...) might not be understandable by all users, so it might be better to fall back to english language.

    EDIT: I tried fixing the artist sumary to english language again, but Plex is fetching spanish language again, so I can not get it back to english.

    opened by gitttt54 4
  • Agent does not show up in list of agents

    Agent does not show up in list of agents

    I have installed the plugin into my plugins folder by using git. Screen Shot 2022-01-14 at 7 55 36 PM

    I have noticed that for some reason the file permissions do look different than other plugins, do I need to fix this? what commands should i use to fix these permisisions? eg this is another plugin, permissions slightly different: Screen Shot 2022-01-14 at 7 56 36 PM

    I also have error in my logs:

    ./Plex Media Server.1.log:Jan 14, 2022 19:26:52.271 [0x70000ab9e000] WARN - Request for plug-in [com.plexapp.agents.audnexus] but it doesn't exist.
    ./Plex Media Server.log:Jan 14, 2022 19:27:02.386 [0x7000022f2000] WARN - Request for plug-in [com.plexapp.agents.audnexus] but it doesn't exist.
    ./com.plexapp.system.log:2022-01-14 19:27:02,382 (70001016a000) :  INFO (agentservice:167) - Agents in com.plexapp.agents.audnexus not in info dictionary - pinging!
    ./com.plexapp.system.log:2022-01-14 19:27:02,382 (70001016a000) :  DEBUG (networking:143) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.agents.audnexus'
    ./com.plexapp.system.log:2022-01-14 19:27:02,394 (70001016a000) :  ERROR (networking:196) - Error opening URL 'http://127.0.0.1:32400/:/plugins/com.plexapp.agents.audnexus'
    ./com.plexapp.system.log:2022-01-14 19:27:02,940 (70000e555000) :  DEBUG (runtime:717) - Handling request GET /system/messaging/clear_events/com.plexapp.agents.audnexus
    ./com.plexapp.system.log:2022-01-14 19:27:02,952 (70000e555000) :  DEBUG (runtime:814) - Found route matching /system/messaging/clear_events/com.plexapp.agents.audnexus
    ./com.plexapp.system.log:2022-01-14 19:27:03,575 (70000e555000) :  INFO (agentservice:175) - Receiving agent info from com.plexapp.agents.audnexus: [{'media_types': ['Artist'], 'primary_provider': True, 'fallback_agent': None, 'contributes_to': None, 'languages': ['en', 'de', 'fr', 'it'], 'persist_stored_files': True, 'version': 0, 'accepts_from': ['com.plexapp.agents.localmedia'], 'prefs': True, 'name': 'Audnexus Agent'}]
    ./com.plexapp.system.log:2022-01-14 19:27:03,589 (70000e555000) :  INFO (agentservice:175) - Receiving agent info from com.plexapp.agents.audnexus: [{'media_types': ['Artist'], 'primary_provider': True, 'fallback_agent': None, 'contributes_to': None, 'languages': ['en', 'de', 'fr', 'it'], 'persist_stored_files': True, 'version': 0, 'accepts_from': ['com.plexapp.agents.localmedia'], 'prefs': True, 'name': 'Audnexus Agent'}, {'media_types': ['Album'], 'primary_provider': True, 'fallback_agent': None, 'contributes_to': None, 'languages': ['en', 'de', 'fr', 'it'], 'persist_stored_files': True, 'version': 0, 'accepts_from': ['com.plexapp.agents.localmedia'], 'prefs': True, 'name': 'Audnexus Agent'}]
    ./com.plexapp.system.log.1:2022-01-14 19:26:52,266 (700009f27000) :  INFO (agentservice:167) - Agents in com.plexapp.agents.audnexus not in info dictionary - pinging!
    ./com.plexapp.system.log.1:2022-01-14 19:26:52,267 (700009f27000) :  DEBUG (networking:143) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.agents.audnexus'
    ./com.plexapp.system.log.1:2022-01-14 19:26:52,271 (700009f27000) :  ERROR (networking:196) - Error opening URL 'http://127.0.0.1:32400/:/plugins/com.plexapp.agents.audnexus'
    ./com.plexapp.system.log.1:2022-01-14 19:26:52,759 (700009b24000) :  DEBUG (runtime:717) - Handling request GET /system/messaging/clear_events/com.plexapp.agents.audnexus
    ./com.plexapp.system.log.1:2022-01-14 19:26:52,760 (700009b24000) :  DEBUG (runtime:814) - Found route matching /system/messaging/clear_events/com.plexapp.agents.audnexus
    ./com.plexapp.system.log.1:2022-01-14 19:26:53,049 (700009b24000) :  INFO (agentservice:175) - Receiving agent info from com.plexapp.agents.audnexus: [{'media_types': ['Artist'], 'primary_provider': True, 'fallback_agent': None, 'contributes_to': None, 'languages': ['en', 'de', 'fr', 'it'], 'persist_stored_files': True, 'version': 0, 'accepts_from': ['com.plexapp.agents.localmedia'], 'prefs': True, 'name': 'Audnexus Agent'}]
    ./com.plexapp.system.log.1:2022-01-14 19:26:53,059 (700009b24000) :  INFO (agentservice:175) - Receiving agent info from com.plexapp.agents.audnexus: [{'media_types': ['Artist'], 'primary_provider': True, 'fallback_agent': None, 'contributes_to': None, 'languages': ['en', 'de', 'fr', 'it'], 'persist_stored_files': True, 'version': 0, 'accepts_from': ['com.plexapp.agents.localmedia'], 'prefs': True, 'name': 'Audnexus Agent'}, {'media_types': ['Album'], 'primary_provider': True, 'fallback_agent': None, 'contributes_to': None, 'languages': ['en', 'de', 'fr', 'it'], 'persist_stored_files': True, 'version': 0, 'accepts_from': ['com.plexapp.agents.localmedia'], 'prefs': True, 'name': 'Audnexus Agent'}]
    

    Only have option for other plugin, no Audnexus option: Screen Shot 2022-01-14 at 7 54 57 PM

    Please help, I know its something stupid i'm overlooking but i'm stumped.

    opened by deweydb 4
  • Multiple authors

    Multiple authors

    Hi, I am having a couple of issues with author data.

    1. In the description for this tool, it says "Combines books with multiple authors into the first author, reducing duplicate author entries/pages". But I am getting multiple authors displayed in Plex like this: "H.H. the Dalai Lama; Guy Newland - editor and translator". So several audiobooks by, for example, H.H. the Dalai Lama are showing up as different authors because they each have different co-authors or editors. Is there a way to prevent this from happening? Here's a screenshot:
    Screen Shot 2022-09-27 at 3 44 53 pm
    1. Also, even where there is a single author on a book, the name of this author is inconsistent it seems: I have books with the following author names for the same person: H.H. the Dalai Lama, His Holiness the Dalai Lama, Tenzin Gyatso the Fourteenth Dalai Lama. This seems to be a problem with the quality of data retrieved from the API. Can I get this tool to get the author from the tag data instead? What is the best way around this problem?

    Many thanks in advance for any help. Also thanks a lot for providing this great tool.

    opened by scop22 3
  • feat: Add a `simplify_title` option to the preferences

    feat: Add a `simplify_title` option to the preferences

    I've recently been trying to switch to using this Agent over the one from seanap, but it has a few things I want to change before I'd be willing to, as those things go against what I'm looking for data wise (one of those things being original publish date). Of course, I don't expect all of my changes to get merged into the main Agent as they're specific to my preferences, but I figured I'd submit what I can if it doesn't conflict with what you have already. Besides that I'll probably just maintain my own fork with the rest of my changes that are specific to my preferences.

    I know in v0.2.1 you added the subtitle to each book's title. As you mention in #10 you did so because the relevant part of the title is sometimes only in the subtitle. As for whether or not this is true, I believe that Audible has been switching the titles on a lot of their books to include the meat of the title in the main title section for the book. In my opinion, this leads to some very repetitive and overly long title fields when you also include the subtitle. Even for the example you give, the subtitle is now just a piece of the main title, and using the subtitle leads you to have Death Troopers: Star Wars Legends: Death Troopers.

    I thought that the best way to handle this for people like me who want cleaner/more minimal looking titles would be to add an option for it, so as not to break the existing behavior. This option would prevent the agent from appending the subtitle, and perform further simplification transformation on it to make it look as clean as possible.

    The additional steps it takes are as follows:

    1. Remove the ending of the title if it includes , Book N, indicating a part in a series (i.e. Book 1 or Book One). I don't think this part of the title looks appealing as its not part of the book's actual title, just something they use to further identify it.

    I'll use a Harry Potter book as an example: https://www.audible.com/pd/Harry-Potter-and-the-Order-of-the-Phoenix-Book-5-Audiobook/B017V4NMX4

    The title for this book is

    Harry Potter and the Order of the Phoenix, Book 5
    

    and this setting would change it to

    Harry Potter and the Order of the Phoenix
    

    I have found that Audible does this with decent frequency, and I use this transformation in my own app I shared with you.

    1. Remove any (Unabridged) or (Abridged) text from the end of the title. I'm not sure if you're already doing this at any point before this, so if this is unnecessary let me know. I believe you're doing it before running a search and on the search results in order to match better, but I'm not sure if you're keeping it that way for the final title. Regardless, I think this is a good change to keep the titles looking minimal. Like I mention in the first transformation, this is not part of the book's title, just a way of describing it.

    Let me know if this change works for you! Overall I think its a nice option to have for those like me who want the title to look as clean and close to the original as possible. Also definitely let me know if you want me to make any changes before it's good to go!


    EDIT: Sorry, a couple unrelated code formatting changes slipped into this PR that were done by my editor's formatter, hopefully thats not a problem!

    enhancement 
    opened by csandman 3
  • Plugin doesnt show

    Plugin doesnt show

    I am trying to add the l;=plugin but it doesn't show in plex. I am curious if this could be due to plex no longer supporting plugins or if I did something wrong?

    Screenshot 2022-03-27 at 22 31 13 Screenshot 2022-03-27 at 22 31 53
    opened by antonio59 3
  • Audnexus not showing up in Artists Agents

    Audnexus not showing up in Artists Agents

    Installing this for the first time and followed your directions as well as seanap's for setting this plugin up. After restarting the plex server, the Audnexus Agent is found under Albums/AudNexus Agent, but not Artists. Tested with both versions .27 and .28. Version .27 works and .28 does not.

    opened by nmillz 3
  • API is down

    API is down

    Seems to be a cloudflare issue, spitting out 522 errors.

    2022-01-29 17:42:45,284 (7f3485898b38) : DEBUG (networking:143) - Requesting 'http://127.0.0.1:32400/library/metadata/67681/tree' 2022-01-29 17:42:45,297 (7f3485898b38) : DEBUG (networking:143) - Requesting 'https://api.audnex.us/books/B07FSNSLZ1' 2022-01-29 17:43:00,643 (7f3485898b38) : ERROR (networking:196) - Error opening URL 'https://api.audnex.us/books/B07FSNSLZ1' 2022-01-29 17:43:00,644 (7f3485898b38) : CRITICAL (agentkit:1095) - Exception in the update function of agent named 'Audnexus Agent', called with guid 'com.plexapp.agents.audnexus://B07FSNSLZ1?lang=en' (most recent call last): File "/usr/lib/plexmediaserver/Resources/Plug-ins-f11334058/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/agentkit.py", line 1093, in _update agent.update(obj, media, lang, **kwargs) File "/config/Library/Application Support/Plex Media Server/Plug-ins/Audnexus.bundle/Contents/Code/__init__.py", line 374, in update self.call_item_api(update_helper) File "/config/Library/Application Support/Plex Media Server/Plug-ins/Audnexus.bundle/Contents/Code/__init__.py", line 451, in call_item_api helper.UPDATE_URL + helper.metadata.id File "/usr/lib/plexmediaserver/Resources/Plug-ins-f11334058/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/components/networking.py", line 220, in __str__ self.load() File "/usr/lib/plexmediaserver/Resources/Plug-ins-f11334058/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/components/networking.py", line 158, in load f = self._opener.open(req, timeout=self._timeout) File "/usr/lib/plexmediaserver/Resources/Python/python27.zip/urllib2.py", line 435, in open response = meth(req, response) File "/usr/lib/plexmediaserver/Resources/Python/python27.zip/urllib2.py", line 548, in http_response 'http', request, response, code, msg, hdrs) File "/usr/lib/plexmediaserver/Resources/Python/python27.zip/urllib2.py", line 473, in error return self._call_chain(*args) File "/usr/lib/plexmediaserver/Resources/Python/python27.zip/urllib2.py", line 407, in _call_chain result = func(*args) File "/usr/lib/plexmediaserver/Resources/Python/python27.zip/urllib2.py", line 556, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) HTTPError: HTTP Error 522:

    opened by lxcalghost 3
  • Critical Error during search

    Critical Error during search

    I'm having to match manually a lot of my books sadly (I'm not totally sure why as it gets some really well), but I'm seeing if I can figure it out.

    What I'm noticing is the plugin gets unloaded every so often. I'm looking at the logs and this is the only one I think could cause it - but it this error is fairly frequent so I'm pretty sure this isn't causing the plugin to be unloaded. I'll keep searching!

    2022-01-24 14:05:56,703 (2c98) : CRITICAL (core:574) - Exception in the search function of agent named 'Audnexus Agent', called with keyword arguments {'openSubtitlesHash': 'd2f03a5c14a32630', 'plexHash': '57545da557512216e42cb09d76996b51bca0c771', 'filename': 'D%3A%5CBackups%5CAudible%5CMurderbot%20Diaries%5C3%20-%20Rogue%20Protocol%5CRogue%20Protocol_%20The%20Murderbot%20Diaries%2C%20Book%203%20-%201%20-%20Opening%20Credits%2Emp3', 'parentGUID': 'com.plexapp.agents.audnexus://B000APZA1O?lang=en', 'parentID': '382160', 'duration': '14367', 'id': '382182'} (most recent call last): File "C:\Program Files (x86)\Plex\Plex Media Server\Resources\Plug-ins-f11334058\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\api\agentkit.py", line 1011, in search agent.search(*f_args, **f_kwargs) File "F:\Plex\Plex Media Server\Plug-ins\Audnexus.bundle\Contents\Code_init.py", line 300, in search info = self.process_results(search_helper, result) File "F:\Plex\Plex Media Server\Plug-ins\Audnexus.bundle\Contents\Code_init_.py", line 436, in process_results score_helper.run_score_book() File "F:\Plex\Plex Media Server\Plug-ins\Audnexus.bundle\Contents\Code\search_tools.py", line 405, in run_score_book return self.score_result() File "F:\Plex\Plex Media Server\Plug-ins\Audnexus.bundle\Contents\Code\search_tools.py", line 413, in score_result title_score = self.score_album(self.title) File "F:\Plex\Plex Media Server\Plug-ins\Audnexus.bundle\Contents\Code\search_tools.py", line 476, in score_album self.reduce_string(scorebase1), File "F:\Plex\Plex Media Server\Plug-ins\Audnexus.bundle\Contents\Code\search_tools.py", line 382, in reduce_string .replace(',', '') AttributeError: 'NoneType' object has no attribute 'lower'

    opened by rossdargan 3
  • Colon in filename not working well

    Colon in filename not working well

    The guide says that the files should be named in this schema:

    Book Name: Subtitle.m4b

    But in some systems this is causing problems:

    MacOS Screenshot 2023-01-01 at 16 51 48

    Synology NAS Screenshot 2023-01-01 at 16 51 16

    opened by MoSattler 1
  • Guide for setting up automatic series collections

    Guide for setting up automatic series collections

    Like you've already stated, this agent does not have the ability to generate collections for series' that books are a part of. However, I have found a workaround using Plex-Meta-Manager, which will automatically create smart collections for you based on a variety of criteria, one of those being mood tags.

    I wrote a guide on how I finally managed to get this set up to work right and figured I'd share it here.

    https://github.com/book-tools/audnexus-pmm-series

    If you want, you could include this guide in your project, or simply link to it, but I'm not going to push for either. I just figured other users of this package might be interested in a way to automatically generate collections for their series'.

    One side note, my PR #71 was prompted by trying to get rid of authors from mood tags in order to make this process work. I was discussing with another user of this package about how to set up PMM for it, and he was having the same issue.

    opened by csandman 0
  • Album art and metadata keeps changing when I have everything set to local tags

    Album art and metadata keeps changing when I have everything set to local tags

    I don't get why this keeps happening to me for starters.

    I have followed both your guide and seanaps guide on modifying audiobook meta data to my liking, creating the library, and adding audiobooks to my library.

    Using mp3tag I add the data that I want: album cover, artist, book name and album. I have it formatted to a specific way. I upload it to my gdrive and have plex scan it in. I have the library set to settings I have listed below.

    artist agent image image

    album agent image image

    Library setting image image image image

    My metadata changes constantly. I have a set album art that I want, formatted a specific way and it keeps changing. I am losing my mind as to why my audiobook metadata changes and what is causing the issue. Plex pulls in album art that is not apart of the metadata of the mp3/m4b file that I set in mp3tag. I don't get where it's getting this 2nd album art and why it trys to default to that over the album art that I have set. From my understanding of plex settings that I have it should prioritize my local metadata first before trying to match with audnexus audible data. Has anyone else had this where they add their own metadata from mp3tag and upload and plex just changes the metadata of my albums?

    image image

    opened by gh0sti 5
  • Artist Matching

    Artist Matching

    I keep running into a weird issue for Artist matching. There are some instances where the artist has an audible entry, but no combination of the name actually pulls it up when searching from the match window. Since authors have an ASIN also I have even tried using it in combination with the name.

    Example:

    Craig Schrader www.audible.com/author/Craig-Schrader/B09K4JPXP5 (Book that populated the artist) https://www.audible.com/pd/SuperDrunk-Audiobook/B09QKS71CR

    The only match it finds has a score of 46 Craig Schaefer www.audible.com/author/Craig-Schaefer/B00JYJPVG6

    opened by zacm1979 1
  • Duplicate albums in Plex for each file

    Duplicate albums in Plex for each file

    The first two books I added to my library worked as expected. The third is giving me a distinct album for each of the files, even though the Artist and Album Artist are tagged consistently. I'm sure this is user error but I'm out of ideas.

    Screenshot of Plex appearance

    Screenshot of tags in mp3tag

    opened by Nelluk 1
Releases(v0.4.1)
  • v0.4.1(Oct 5, 2022)

  • v0.4.0(Aug 9, 2022)

  • v0.3.0(May 29, 2022)

  • v0.2.8(Jan 24, 2022)

  • v0.2.7(Jan 13, 2022)

  • v0.2.6(Nov 24, 2021)

  • v0.2.5(Nov 8, 2021)

  • v0.2.4(Oct 15, 2021)

    0.2.4 (2021-10-15)

    Bug Fixes

    • :children_crossing: handle http errors and exponential backoff (8964fe4)
    • author-search: :ambulance: add greater weight to author name accuracy (c7ba7b7)
    • author-search: :bug: contributor stripping wasn't working properly. Fixes #23 (72f464e)
    • author-search: :bug: handle search failure when no artist tag is available but title is (manual search) (f399442)
    • author-search: :children_crossing: do basic author name cleanup prior to running search, to improve search success (5869c7e)
    • author-search: :children_crossing: if all authors are contributors use the first (988ea27)
    Source code(tar.gz)
    Source code(zip)
  • v0.2.3(Oct 10, 2021)

    0.2.3 (2021-10-09)

    Features

    • settings: :triangular_flag_on_post: new toggles: store author as mood tag and sort author by last name (aee2d26)

    Bug Fixes

    • author-update: :bug: single name authors would have sort applied erroneously (80e2554)
    Source code(tar.gz)
    Source code(zip)
  • v0.2.2(Oct 8, 2021)

  • v0.2.1(Oct 6, 2021)

    0.2.1 (2021-10-06)

    Features

    • :art: improve handling of authors as contributors (beb20f6)
    • album-update: :sparkles: use subtitle in Plex title where available (4ff1654) closes #10
    • search: :sparkles: add asin search/extraction for authors and albums (52062eb)

    Bug Fixes

    • author-search: :goal_net: handle unknown artist properly. fixes #11 (499c753)
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Oct 4, 2021)

    0.2.0 (2021-10-04)

    Features

    • :building_construction: add author support (a18cda6)
    • author-search: :sparkles: search/upgrade multi-author entries to single author entries (e5d70dd)
    • author-update: :sparkles: set author sort name (e6e616b)
    • update: :sparkles: utilize tag list instead of 2 genre system (7cd863f)

    Bug Fixes

    • :bug: fix case where no genres exist. fixes #7 (2a017e9)
    • :bug: only request thumb when it exists (498bbb3)
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Oct 4, 2021)

    0.1.1 (2021-09-29)

    Features

    • search: :children_crossing: fallback to keyword search for manual search (8a400ec)

    Bug Fixes

    • :bug: fix version variable name (ee618dc)
    • search: :ambulance: fix albums with no album name matching to 'none' album name (54fddc6)
    • search: :ambulance: return True by default on pre check (ddf3cfa)
    • search: :bug: fix library language scoring comparison (772860f)
    • update: :bug: properly filter series in album sort (9859012)
    Source code(tar.gz)
    Source code(zip)
Owner
David Dembeck
Full Stack Engineer with an unending ambition to perfect the software I use. Python, Typescript, C#, and Ruby
David Dembeck
Python bindings for the Plex API.

Python-PlexAPI Overview Unofficial Python bindings for the Plex API. Our goal is to match all capabilities of the official Plex Web Client. A few of t

Michael Shepanski 931 Jan 7, 2023
More granular intermediaries for legacy Minecraft versions

Orinthe/Intermediary mappings This repository contains the match information between different versions of Minecraft created by the Orinthe project, a

null 4 Jan 11, 2022
Easy to use phishing tool with 65 website templates. Author is not responsible for any misuse.

PyPhisher [+] Description : Ultimate phishing tool in python. Includes popular websites like facebook, twitter, instagram, github, reddit, gmail and m

KasRoudra 1.1k Dec 31, 2022
A web-based analysis toolkit for the System Usability Scale providing calculation, plotting, interpretation and contextualization utility

System Usability Scale Analysis Toolkit The System Usability Scale (SUS) Analysis Toolkit is a web-based python application that provides a compilatio

Jonas Blattgerste 3 Oct 27, 2022
null 1 May 12, 2022
These are the scripts used for the project of ‘Assembly of a pan-genome for global cattle reveals missing sequence and novel structural variation, providing new insights into their diversity and evolution history’

script-SV-genotyping These are the scripts used for the project of ‘Assembly of a pan-genome for global cattle reveals missing sequence and novel stru

null 2 Aug 26, 2022
Providing a working, flexible, easier and faster installer than the one officially provided by Arch Linux

Purpose The purpose is to bring more people to Arch Linux by providing a working, flexible, easier and faster installer than the one officially provid

André Luís 0 Nov 9, 2022
MeepoBenchmark - This project aims at providing the scripts, logs, and analytic results for Meepo Blockchain

MeepoBenchmark - This project aims at providing the scripts, logs, and analytic results for Meepo Blockchain

Peilin Zheng 3 Aug 16, 2022
Block fingerprinting for the beacon chain, for client identification & client diversity metrics

blockprint This is a repository for discussion and development of tools for Ethereum block fingerprinting. The primary aim is to measure beacon chain

Sigma Prime 49 Dec 8, 2022
Iris-client - Python client for DFIR-IRIS

Python client dfir_iris_client offers a Python interface to communicate with IRI

DFIR-IRIS 11 Dec 22, 2022
Irrigation Component V4 providing support for a custom card

Irrigation Component V4 This release sees the delivery of a custom card https://github.com/petergridge/irrigation_card to render the program options s

null 12 Oct 28, 2022
A python script providing an idea of how a MindSphere application, e.g., a dashboard, can be displayed around the clock without the need of manual re-authentication on enforced session expiration

A python script providing an idea of how a MindSphere application, e.g., a dashboard, can be displayed around the clock without the need of manual re-authentication on enforced session expiration

MindSphere 3 Jun 3, 2022
A simple but flexible plugin system for Python.

PluginBase PluginBase is a module for Python that enables the development of flexible plugin systems in Python. Step 1: from pluginbase import PluginB

Armin Ronacher 1k Dec 16, 2022
A minimalist production ready plugin system

pluggy - A minimalist production ready plugin system This is the core framework used by the pytest, tox, and devpi projects. Please read the docs to l

pytest-dev 876 Jan 5, 2023
A simple but flexible plugin system for Python.

PluginBase PluginBase is a module for Python that enables the development of flexible plugin systems in Python. Step 1: from pluginbase import PluginB

Armin Ronacher 935 Feb 20, 2021
Domoticz-hyundai-kia - Domoticz Hyundai-Kia plugin for Domoticz home automation system

Domoticz Hyundai-Kia plugin Author: Creasol https://www.creasol.it/domotics For

Creasol 7 Aug 3, 2022
🤖️ Plugin for Sentry which allows sending notification via DingTalk robot.

Sentry DingTalk Sentry 集成钉钉机器人通知 Requirments sentry >= 21.5.1 特性 发送异常通知到钉钉 支持钉钉机器人webhook设置关键字 配置环境变量 DINGTALK_WEBHOOK: Optional(string) DINGTALK_CUST

null 1 Nov 4, 2021
Nicotine+: A graphical client for the SoulSeek peer-to-peer system

Nicotine+ Nicotine+ is a graphical client for the Soulseek peer-to-peer file sharing network. Nicotine+ aims to be a pleasant, Free and Open Source (F

null 940 Jan 3, 2023
A free and powerful system for awareness and research of the American judicial system.

CourtListener Started in 2009, CourtListener.com is the main initiative of Free Law Project. The goal of CourtListener.com is to provide high quality

Free Law Project 332 Dec 25, 2022