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
Lectures for Udemy - Complete Python Bootcamp Course

Complete-Python-Bootcamp Welcome to the Repository for the Complete Python Bootcamp! This is the Repository for the Udemy course - "Complete Python Bo

Marci 2k Dec 28, 2022
pybind11 — Seamless operability between C++11 and Python

pybind11 — Seamless operability between C++11 and Python Setuptools example • Scikit-build example • CMake example pybind11 is a lightweight header-on

pybind 12.1k Jan 08, 2023
《practical python programming》的中文翻译

欢迎光临 大约 25 年前,当我第一次学习 Python 时,发现 Python 竟然可以被高效地应用到各种混乱的工作项目上,我立即被震惊了。15 年前,我自己也将这种乐趣教授给别人。教学的结果就是本课程——一门实用的学习 Python的课程。

编程人 125 Dec 17, 2022
Package to provide translation methods for pyramid, and means to reload translations without stopping the application

Package to provide translation methods for pyramid, and means to reload translations without stopping the application

Grzegorz Śliwiński 4 Nov 20, 2022
Inacap - Programa para pasar las notas de inacap a una hoja de cálculo rápidamente.

Inacap Programa en python para obtener varios datos académicos desde inacap y subirlos directamente a una hoja de cálculo. Cómo funciona Primero que n

Gabriel Barrientos 0 Jul 28, 2022
This is the Code Institute student template for Gitpod.

Welcome AnaG0307, This is the Code Institute student template for Gitpod. We have preinstalled all of the tools you need to get started. It's perfectl

0 Feb 02, 2022
Calculate the efficient frontier

关于 代码主要参考Fábio Neves的文章,你可以在他的文章中找到一些细节性的解释

Wyman Lin 104 Nov 11, 2022
Pseudometa's dotfiles

pseudometa's dotfiles Table of Contents Why this repository? How this Repository works Special Explanations Got an idea for an improvement? Contact Wh

pseudometa 23 Dec 27, 2022
Annotates sequences with Eggnog-mapper and hhblits against PDB70

Annotating "hypothetical" proteins with the PDB See config/ for configuration information. This workflow takes as input a set of protein sequences. It

1 Apr 05, 2022
My attempt at this years Advent of Code!

Advent-of-code-2021 My attempt at this years Advent of Code! day 1: ** day 2: ** day 3: ** day 4: ** day 5: ** day 6: ** day 7: ** day 8: * day 9: day

1 Jul 06, 2022
Skip spotify ads by automatically restarting application when ad comes

SpotiByeAds No one likes interruptions! Don't you hate it when you're listening to your favorite jazz track or your EDM playlist and an ad for Old Spi

Partho 287 Dec 29, 2022
Build a grocery store management application.

python_projects_grocery_webapp In this python project, we will build a grocery store management application. It will be 3 tier application, Front end:

codebasics 54 Dec 29, 2022
A python package that computes an optimal motion plan for approaching a red light

redlight_approach redlight_approach is a Python package that computes an optimal motion plan during traffic light approach. RLA_demo.mov Given the par

Jonathan Roy 4 Oct 27, 2022
Find your desired product in Digikala using this app.

Digikala Search Find your desired product in Digikala using this app. با این برنامه محصول مورد نظر خود را در دیجیکالا پیدا کنید. About me Full name: M

Matin Ardestani 17 Sep 15, 2022
Wunderland desktop wallpaper and Microsoft Teams background.

Wunderland Professional Impress your colleagues, friends and family with this edition of the "Wunderland" wallpaper. With the nostalgic feel of the or

3 Dec 14, 2022
The functions we created are included in a script. The necessary parts for pre-processing were taken. Analysis complete.

Feature-Engineering The functions we created are included in a script. The necessary parts for pre-processing were taken. Analysis complete. Business

Ayşe Nur Türkaslan 4 Oct 17, 2021
Data on COVID-19 (coronavirus) cases, deaths, hospitalizations, tests • All countries • Updated daily by Our World in Data

COVID-19 Dataset by Our World in Data Find our data on COVID-19 and its documentation in public/data. Documentation Data: complete COVID-19 dataset Da

Our World in Data 5.5k Jan 03, 2023
External Network Pentest Automation using Shodan API and other tools.

Chopin External Network Pentest Automation using Shodan API and other tools. Workflow Input a file containing CIDR ranges. Converts CIDR ranges to ind

Aditya Dixit 9 Aug 04, 2022
Program to send ROM files to Turbo Everdrive; reverse-engineered and designed to be platform-independent

PCE_TurboEverdrive_USB What is this "TurboEverdrive USB" thing ? For those who have a TurboEverdrive v2.x from krikzz.com, there was originally an opt

David Shadoff 10 Sep 18, 2022
A tool to help the Poly copy-reading process! :D

PolyBot A tool to help the Poly copy-reading process! :D Let's face it-computers are better are repeatitive tasks. And, in spite of what one may want

1 Jan 10, 2022