Merge branch 'development' of https://github.com/FreeTubeApp/FreeTube into development

Merge
This commit is contained in:
Luca 2020-10-15 11:51:15 +02:00
commit ae8722d37e
17 changed files with 92 additions and 38 deletions

View File

@ -24,6 +24,9 @@ export default Vue.extend({
}
},
computed: {
invidiousInstance: function () {
return this.$store.getters.getInvidiousInstance
},
listType: function () {
return this.$store.getters.getListType
},
@ -53,7 +56,7 @@ export default Vue.extend({
},
parseInvidiousData: function () {
this.thumbnail = this.data.authorThumbnails[2].url
this.thumbnail = this.data.authorThumbnails[2].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
this.channelName = this.data.author
this.id = this.data.authorId
if (this.hideChannelSubscriptions) {

View File

@ -24,6 +24,10 @@ export default Vue.extend({
}
},
computed: {
invidiousInstance: function () {
return this.$store.getters.getInvidiousInstance
},
listType: function () {
return this.$store.getters.getListType
},
@ -48,7 +52,7 @@ export default Vue.extend({
methods: {
parseInvidiousData: function () {
this.title = this.data.title
this.thumbnail = this.data.playlistThumbnail
this.thumbnail = this.data.playlistThumbnail.replace('https://i.ytimg.com', this.invidiousInstance).replace('hqdefault', 'mqdefault')
this.channelName = this.data.author
this.channelLink = this.data.authorUrl
this.playlistLink = this.data.playlistId

View File

@ -254,7 +254,7 @@ export default Vue.extend({
this.channelId = this.data.authorId
this.duration = this.calculateVideoDuration(this.data.lengthSeconds)
this.description = this.data.description
this.isLive = this.data.liveNow
this.isLive = this.data.liveNow || this.data.lengthSeconds === 'undefined'
this.isUpcoming = this.data.isUpcoming || this.data.premiere
this.viewCount = this.data.viewCount

View File

@ -29,6 +29,12 @@ export default Vue.extend({
}
},
computed: {
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
invidiousInstance: function () {
return this.$store.getters.getInvidiousInstance
},
profileList: function () {
return this.$store.getters.getProfileList
},
@ -42,7 +48,7 @@ export default Vue.extend({
},
watch: {
profile: function () {
this.channels = [].concat(this.primaryProfile.subscriptions).sort((a, b) => {
this.channels = JSON.parse(JSON.stringify(this.primaryProfile.subscriptions)).sort((a, b) => {
const nameA = a.name.toLowerCase()
const nameB = b.name.toLowerCase()
if (nameA < nameB) {
@ -59,6 +65,9 @@ export default Vue.extend({
return index === -1
}).map((channel) => {
if (this.backendPreference === 'invidious') {
channel.thumbnail = channel.thumbnail.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
}
channel.selected = false
return channel
})
@ -66,7 +75,7 @@ export default Vue.extend({
},
mounted: function () {
if (typeof this.profile.subscriptions !== 'undefined') {
this.channels = [].concat(this.profileList[0].subscriptions).sort((a, b) => {
this.channels = JSON.parse(JSON.stringify(this.profileList[0].subscriptions)).sort((a, b) => {
const nameA = a.name.toLowerCase()
const nameB = b.name.toLowerCase()
if (nameA < nameB) {
@ -83,6 +92,9 @@ export default Vue.extend({
return index === -1
}).map((channel) => {
if (this.backendPreference === 'invidious') {
channel.thumbnail = channel.thumbnail.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
}
channel.selected = false
return channel
})

View File

@ -39,6 +39,12 @@ export default Vue.extend({
}
},
computed: {
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
invidiousInstance: function () {
return this.$store.getters.getInvidiousInstance
},
profileList: function () {
return this.$store.getters.getProfileList
},
@ -62,7 +68,7 @@ export default Vue.extend({
},
watch: {
profile: function () {
this.subscriptions = [].concat(this.profile.subscriptions).sort((a, b) => {
this.subscriptions = JSON.parse(JSON.stringify(this.profile.subscriptions)).sort((a, b) => {
const nameA = a.name.toLowerCase()
const nameB = b.name.toLowerCase()
if (nameA < nameB) {
@ -73,6 +79,9 @@ export default Vue.extend({
}
return 0
}).map((channel) => {
if (this.backendPreference === 'invidious') {
channel.thumbnail = channel.thumbnail.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
}
channel.selected = false
return channel
})
@ -80,7 +89,7 @@ export default Vue.extend({
},
mounted: function () {
if (typeof this.profile.subscriptions !== 'undefined') {
this.subscriptions = [].concat(this.profile.subscriptions).sort((a, b) => {
this.subscriptions = JSON.parse(JSON.stringify(this.profile.subscriptions)).sort((a, b) => {
const nameA = a.name.toLowerCase()
const nameB = b.name.toLowerCase()
if (nameA < nameB) {
@ -91,6 +100,9 @@ export default Vue.extend({
}
return 0
}).map((channel) => {
if (this.backendPreference === 'invidious') {
channel.thumbnail = channel.thumbnail.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
}
channel.selected = false
return channel
})

View File

@ -15,21 +15,21 @@
:title="$t('Search Filters.Time.Time')"
:labels="timeLabels"
:values="timeValues"
class="searchRadio radioMargin"
class="searchRadio"
@change="updateTime"
/>
<ft-radio-button
:title="$t('Search Filters.Type.Type')"
:labels="typeLabels"
:values="typeValues"
class="searchRadio radioMargin"
class="searchRadio"
@change="updateType"
/>
<ft-radio-button
:title="$t('Search Filters.Duration.Duration')"
:labels="durationLabels"
:values="durationValues"
class="radioMargin"
class="searchRadio"
@change="updateDuration"
/>
</ft-flex-box>

View File

@ -12,7 +12,7 @@
@change="$emit('change', $event.target.value)"
>
<span>
{{ label }} -
{{ label }}:
<span>
{{ displayLabel }}
</span>

View File

@ -74,7 +74,7 @@
:min-value="0.25"
:max-value="3"
:step="0.25"
value-extension="x"
value-extension="×"
@change="updateDefaultPlayback"
/>
</ft-flex-box>

View File

@ -13,6 +13,12 @@ export default Vue.extend({
isOpen: function () {
return this.$store.getters.getIsSideNavOpen
},
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
invidiousInstance: function () {
return this.$store.getters.getInvidiousInstance
},
profileList: function () {
return this.$store.getters.getProfileList
},
@ -31,6 +37,12 @@ export default Vue.extend({
return 1
}
return 0
}).map((channel) => {
if (this.backendPreference === 'invidious') {
channel.thumbnail = channel.thumbnail.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
}
return channel
})
},
hidePopularVideos: function () {

View File

@ -227,7 +227,7 @@ export default Vue.extend({
const commentData = response.comments.map((comment) => {
comment.showReplies = false
comment.authorThumb = comment.authorThumbnails[1].url
comment.authorThumb = comment.authorThumbnails[1].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
if (this.hideCommentLikes) {
comment.likes = null
} else {
@ -295,7 +295,7 @@ export default Vue.extend({
const commentData = response.comments.map((comment) => {
comment.showReplies = false
comment.authorThumb = comment.authorThumbnails[1].url
comment.authorThumb = comment.authorThumbnails[1].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
if (this.hideCommentLikes) {
comment.likes = null
} else {

View File

@ -127,6 +127,7 @@ $thumbnail-overlay-opacity: 0.85
color: var(--primary-text-color)
text-decoration: none
word-wrap: break-word
word-break: break-word
@include is-sidebar-item
font-size: 15px

View File

@ -74,6 +74,10 @@ export default Vue.extend({
return this.$store.getters.getBackendFallback
},
invidiousInstance: function () {
return this.$store.getters.getInvidiousInstance
},
sessionSearchHistory: function () {
return this.$store.getters.getSessionSearchHistory
},
@ -348,13 +352,17 @@ export default Vue.extend({
} else {
this.subCount = response.subCount
}
this.thumbnailUrl = response.authorThumbnails[3].url
this.thumbnailUrl = response.authorThumbnails[3].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
this.channelDescription = autolinker.link(response.description)
this.relatedChannels = response.relatedChannels
this.relatedChannels = response.relatedChannels.map((channel) => {
channel.authorThumbnails[channel.authorThumbnails.length - 1].url = channel.authorThumbnails[channel.authorThumbnails.length - 1].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
return channel
})
this.latestVideos = response.latestVideos
if (typeof (response.authorBanners) !== 'undefined') {
this.bannerUrl = response.authorBanners[0].url
this.bannerUrl = response.authorBanners[0].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`)
}
this.isLoading = false

View File

@ -30,9 +30,11 @@ export default Vue.extend({
backendPreference: function () {
return this.$store.getters.getBackendPreference
},
backendFallback: function () {
return this.$store.getters.getBackendFallback
},
invidiousInstance: function () {
return this.$store.getters.getInvidiousInstance
}
},
watch: {
@ -145,7 +147,7 @@ export default Vue.extend({
viewCount: result.viewCount,
videoCount: result.videoCount,
channelName: result.author,
channelThumbnail: result.authorThumbnails[2].url,
channelThumbnail: result.authorThumbnails[2].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`),
channelId: result.authorId,
infoSource: 'invidious'
}

View File

@ -448,7 +448,7 @@ export default Vue.extend({
}
this.channelId = result.authorId
this.channelName = result.author
this.channelThumbnail = result.authorThumbnails[1] ? result.authorThumbnails[1].url : ''
this.channelThumbnail = result.authorThumbnails[1] ? result.authorThumbnails[1].url.replace('https://yt3.ggpht.com', `${this.invidiousInstance}/ggpht/`) : ''
this.videoPublished = result.published * 1000
this.videoDescriptionHtml = result.descriptionHtml
this.recommendedVideos = result.recommendedVideos

View File

@ -19,7 +19,7 @@ Delete: 'Διαγραφή'
Select all: 'Επιλογή όλων'
Reload: 'Ανανέωση'
Force Reload: 'Εξαναγκασμένη ανανέωση'
Toggle Developer Tools: 'Εμφάνηση Εργαλείων Προγραμματιστών'
Toggle Developer Tools: 'Εμφάνιση Εργαλείων Προγραμματιστών'
Actual size: 'Πραγματικό μέγεθος'
Zoom in: 'Μεγέθυνση'
Zoom out: 'Σμίκρυνση'

View File

@ -60,7 +60,7 @@ Search Filters:
# On Search Page
Search Results: '検索結果'
Fetching results. Please wait: '結果を取得中。お待ちください'
Fetch more results: 'さらに結果を取得'
Fetch more results: '結果の追加取得'
# Sidebar
Subscriptions:
# On Subscriptions Page
@ -110,7 +110,7 @@ Settings:
(初期値は https://invidious.snopyta.org)'
Region for Trending: '地域内の急上昇'
#! List countries
Check for Latest Blog Posts: ブログ投稿新着を確認
Check for Latest Blog Posts: 新着ブログの確認
Check for Updates: 最新版の確認
Theme Settings:
Theme Settings: 'テーマの設定'
@ -249,10 +249,10 @@ Settings:
Select Import Type: インポート形式の選択
Data Settings: データ設定
One or more subscriptions were unable to be imported: いくつかのチャンネル登録はインポートできませんでした
Check for Legacy Subscriptions: 登録形式の確認
Check for Legacy Subscriptions: 古い登録形式の確認
Distraction Free Settings:
Hide Live Chat: ライブチャットを非表示
Hide Popular Videos: 人気の動画を非表示
Hide Popular Videos: 最も人気を非表示
Hide Trending Videos: 急上昇の動画を非表示
Hide Recommended Videos: おすすめ動画を非表示
Hide Comment Likes: コメントの評価を非表示
@ -275,7 +275,7 @@ About:
を実現させてくれている人々とプロジェクトに感謝!'
'Want to chat? Join our Element / Matrix Server . Please check the rules before joining.': 'チャットが必要なら私たちの
Element / Matrix に参加ください。参加前にルールの確認をお願いします。'
Element / Matrix に参加ください。参加前にルールの確認をお願いします。'
'Looking for help? Check out our Wiki page.': 'ヘルプが必要なら私たちの Wiki をご覧ください。'
@ -336,7 +336,7 @@ Video:
Live Chat: 'ライブチャット'
Enable Live Chat: 'ライブチャットの有効化'
Live Chat is currently not supported in this build.: '現在、このビルドはライブチャットに未対応です。'
'Chat is disabled or the Live Stream has ended.': 'チャットを無効化しているか、ライブ配信は終了しています。'
'Chat is disabled or the Live Stream has ended.': 'チャットが無効化されているか、ライブ配信は終了しています。'
Live chat is enabled. Chat messages will appear here once sent.: 'ライブチャットは有効です。チャットが送信されるとここに表示されます。'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': '現在、ライブチャットは
Invidious API では未対応です。直接 YouTube への接続が必要です。'
@ -351,8 +351,8 @@ Video:
Aug: '8月'
Sep: '9月'
Oct: '10月'
Nov: '11月'
Dec: '12月'
Nov: '11 月'
Dec: '12 月'
Second: '秒'
Seconds: '秒'
Hour: '時間'
@ -402,7 +402,7 @@ Videos:
Playlist:
#& About
View Full Playlist: '完全な再生リストの表示'
Videos: '本の動画'
Videos: '動画'
View: '回視聴'
Views: '回視聴'
Last Updated On: '最終更新日'
@ -416,7 +416,7 @@ Playlist:
# On Video Watch Page
#* Published
#& Views
Toggle Theatre Mode: 'シアターモード切替'
Toggle Theatre Mode: 'シアターモード切替'
Change Format:
Change Video Formats: '動画形式の変更'
Use Dash Formats: 'DASH 形式の使用'
@ -478,9 +478,9 @@ No: 'いいえ'
Locale Name: '日本語'
Profile:
$ is now the active profile: $ のプロファイルに切り替えました
Your default profile has been changed to your primary profile: デフォルトのプロファイルを、基本のプロファイルに変更しました
Your default profile has been changed to your primary profile: 起動時のプロファイルを、上位のプロファイルに変更しました
Removed $ from your profiles: プロファイルから $ を削除しました
Your default profile has been set to $: 起動時のプロファイルは $ に設定されました
Your default profile has been set to $: 起動時のプロファイルを $ に設定しました
Profile has been updated: プロファイルを更新しました
Profile has been created: プロファイルを作成しました
Your profile name cannot be empty: プロファイル名は空にできません
@ -510,9 +510,9 @@ Profile:
Add Selected To Profile: 選択項目をプロファイルに追加
? This is your primary profile. Are you sure you want to delete the selected channels? The
same channels will be deleted in any profile they are found in.
: これは基本のプロファイルです。選択したチャンネルを削除しますか?同じチャンネルがほかのプロファイルにも登録されていれば削除されます。
: これは上位のプロファイルです。選択したチャンネルを削除しますか?同じチャンネルがほかのプロファイルにも登録されていれば削除されます。
The playlist has been reversed: 再生リストを逆順にしました
A new blog is now available, $. Click to view more: '新着のブログ記事があります。$ クリックでさらに読む'
A new blog is now available, $. Click to view more: '新着のブログ記事があります。$ クリックでブログを開く'
Download From Site: サイトからダウンロード
Version $ is now available! Click for more details: 最新版のバージョン $ が利用可能です!クリックで詳細
This video is unavailable because of missing formats. This can happen due to country unavailability.: この動画は形式の情報が不足しているため再生できません。国の情報が利用できないことで発生しています。
Version $ is now available! Click for more details: 最新バージョン $ が利用可能です!クリックで詳細表示
This video is unavailable because of missing formats. This can happen due to country unavailability.: この動画は、形式の情報が利用できないため再生できません。再生が許可されていない国で発生します。

View File

@ -426,7 +426,7 @@ Video:
Year: 'Ano'
Years: 'Anos'
Ago: 'Há'
Upcoming: 'Estreia em breve'
Upcoming: 'Estreias em'
Published on: 'Publicado em'
# $ is replaced with the number and % with the unit (days, hours, minutes...)
Publicationtemplate: 'Há $ %'