* Open your browser and go to `http://localhost:6767/`
* Open your browser and go to `http://localhost:6767/`
## Docker:
## Docker:
* You can use [this image](https://hub.docker.com/r/morpheus65535/bazarr) to quickly build your own isolated app container. Thanks to [Linux Server](https://github.com/linuxserver) for the base image. It's based on the Linux instructions above. For more info about Docker check out the [official website](https://www.docker.com).
* You can use [this image](https://hub.docker.com/r/morpheus65535/bazarr) to quickly build your own isolated app container. It's based on the Linux instructions above. For more info about Docker check out the [official website](https://www.docker.com).
* Configure Sonarr ip, port, base url, SSL and API key.
* Configure Sonarr ip, port, base url, SSL and API key.
### 4 - In "Subliminal" tab:
### 4 - In "Subliminal" tab:
* Configure enabled providers and enabled languages. Enabled languages are those that you are going to be able to assign to a series later.
* Configure enabled providers and enabled languages. Enabled languages are those that you are going to be able to assign to a series later.
### 5 - Save those settings and restart Bazarr.
### 5 - Save those settings and restart (important!!!) Bazarr.
### 6 - Wait 2 minutes
### 7 - On the "Series" page, you should now see all your series listed with a wrench icon on yellow background. Those are the series that need to be configured. Click on those one you want to get subtitles for and select desired languages. You don't have to do this for every series but it will looks cleaner without all this yellow ;-). If you don't want any substitles for a series, just click on the wrench icon and then on "Save" without selecting anything.
### 8 - On each series page, you should see episode files available on disk, existing subtitles and missing subtitles (in case you requested some and they aren't already existing).
* If you don't see your episodes right now, wait some more time. It take time to do the initial synchronization between Sonarr and Bazarr.
### 6 - On the "Series" page, click on "Update Series"
### 9 - On "Wanted" page, you should see all the episodes who have missing subtitles.
* You should now see all your series listed with a wrench icon on yellow background. Those are the series that need to be configured. Click on each one and select desired languages. You have to do this even if you don't want subtitles for a series. Just click on the wrench icon and then on "Save".
* When you've finished going trough all those series to configure desired languages, you have to "Update All Episodes" from the "Series" page. Don't be impatient, it will take about 1 minute by 1000 episodes Bazarr need to scan for existing internal and external subtitles. If Bazarr is accessing those episodes trough a network share, it's going to take much more longer than that. Keep in mind that Bazarr have to open each and every episode files to analyze the content.
* Once the scan is finished, you should be able to access episodes list for each series and see those missing subtitles on the wanted page.
### 10 - Have fun and keep in mind that providers may temporary refuse connection due to connection limit exceeded or problem on the provider web service.
### 10 - Have fun and keep in mind that providers may temporary refuse connection due to connection limit exceeded or problem on the provider web service.
series_details=c.execute("SELECT title, overview, poster, fanart, hearing_impaired FROM table_shows WHERE sonarrSeriesId LIKE ?",(str(no),)).fetchone()
series_details=c.execute("SELECT title, overview, poster, fanart, hearing_impaired, tvdbid FROM table_shows WHERE sonarrSeriesId LIKE ?",(str(no),)).fetchone()
tvdbid=series_details[5]
episodes=c.execute("SELECT title, path_substitution(path), season, episode, subtitles, sonarrSeriesId, missing_subtitles, sonarrEpisodeId FROM table_episodes WHERE sonarrSeriesId LIKE ? ORDER BY episode ASC",(str(no),)).fetchall()
episodes=c.execute("SELECT title, path_substitution(path), season, episode, subtitles, sonarrSeriesId, missing_subtitles, sonarrEpisodeId FROM table_episodes WHERE sonarrSeriesId LIKE ? ORDER BY episode ASC",(str(no),)).fetchall()
result=c.execute('''UPDATE table_shows SET title = ?, path = ?, tvdbId = ?, sonarrSeriesId = ?, overview = ?, poster = ?, fanart = ? WHERE tvdbid = ?''',(show["title"],show["path"],show["tvdbId"],show["id"],overview,poster,fanart,show["tvdbId"]))
current_shows_sonarr.append(show['tvdbId'])
ifresult.rowcount==0:
c.execute('''INSERT INTO table_shows(title, path, tvdbId, languages,`hearing_impaired`, sonarrSeriesId, overview, poster, fanart) VALUES (?,?,?,(SELECT languages FROM table_shows WHERE tvdbId = ?),(SELECT `hearing_impaired` FROM table_shows WHERE tvdbId = ?), ?, ?, ?, ?)''',(show["title"],show["path"],show["tvdbId"],show["tvdbId"],show["tvdbId"],show["id"],overview,poster,fanart))
# Update or insert shows list in database table
result=c.execute('''UPDATE table_shows SET title = ?, path = ?, tvdbId = ?, sonarrSeriesId = ?, overview = ?, poster = ?, fanart = ? WHERE tvdbid = ?''',(show["title"],show["path"],show["tvdbId"],show["id"],overview,poster,fanart,show["tvdbId"]))
# Delete shows not in Sonarr anymore
ifresult.rowcount==0:
deleted_items=[]
c.execute('''INSERT INTO table_shows(title, path, tvdbId, languages,`hearing_impaired`, sonarrSeriesId, overview, poster, fanart) VALUES (?,?,?,(SELECT languages FROM table_shows WHERE tvdbId = ?),(SELECT `hearing_impaired` FROM table_shows WHERE tvdbId = ?), ?, ?, ?, ?)''',(show["title"],show["path"],show["tvdbId"],show["tvdbId"],show["tvdbId"],show["id"],overview,poster,fanart))
foritemincurrent_shows_db_list:
ifitemnotincurrent_shows_sonarr:
# Delete shows not in Sonarr anymore
deleted_items.append(tuple([item]))
deleted_items=[]
c.executemany('DELETE FROM table_shows WHERE tvdbId = ?',deleted_items)
foritemincurrent_shows_db_list:
ifitemnotincurrent_shows_sonarr:
# Commit changes to database table
deleted_items.append(tuple([item]))
db.commit()
c.executemany('DELETE FROM table_shows WHERE tvdbId = ?',deleted_items)
scheduler.add_job(check_and_apply_update,'interval',hours=6,max_instances=1,coalesce=True,id='update_bazarr',name='Update bazarr from source on Github')
ifautomatic=='True':
scheduler.add_job(check_and_apply_update,'interval',hours=6,max_instances=1,coalesce=True,id='update_bazarr',name='Update bazarr from source on Github')
scheduler.add_job(update_series,'interval',minutes=1,max_instances=1,coalesce=True,id='update_series',name='Update series list from Sonarr')
scheduler.add_job(update_series,'interval',minutes=1,max_instances=1,coalesce=True,id='update_series',name='Update series list from Sonarr')
scheduler.add_job(add_new_episodes,'interval',minutes=1,max_instances=1,coalesce=True,id='add_new_episodes',name='Add new episodes from Sonarr')
scheduler.add_job(add_new_episodes,'interval',minutes=1,max_instances=1,coalesce=True,id='add_new_episodes',name='Add new episodes from Sonarr')
scheduler.add_job(update_all_episodes,'cron',hour=4,max_instances=1,coalesce=True,id='update_all_episodes',name='Update all episodes from Sonarr')
scheduler.add_job(list_missing_subtitles,'interval',minutes=5,max_instances=1,coalesce=True,id='list_missing_subtitles',name='Process missing subtitles for all series')
scheduler.add_job(wanted_search_missing_subtitles,'interval',minutes=15,max_instances=1,coalesce=True,id='wanted_search_missing_subtitles',name='Search for wanted subtitles')
scheduler.add_job(wanted_search_missing_subtitles,'interval',minutes=15,max_instances=1,coalesce=True,id='wanted_search_missing_subtitles',name='Search for wanted subtitles')