Merge branch 'development' of https://github.com/FreeTubeApp/FreeTube into development
Merge
This commit is contained in:
commit
ae8722d37e
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
})
|
||||
|
|
|
@ -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
|
||||
})
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
@change="$emit('change', $event.target.value)"
|
||||
>
|
||||
<span>
|
||||
{{ label }} -
|
||||
{{ label }}:
|
||||
<span>
|
||||
{{ displayLabel }}
|
||||
</span>
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
:min-value="0.25"
|
||||
:max-value="3"
|
||||
:step="0.25"
|
||||
value-extension="x"
|
||||
value-extension="×"
|
||||
@change="updateDefaultPlayback"
|
||||
/>
|
||||
</ft-flex-box>
|
||||
|
|
|
@ -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 () {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -19,7 +19,7 @@ Delete: 'Διαγραφή'
|
|||
Select all: 'Επιλογή όλων'
|
||||
Reload: 'Ανανέωση'
|
||||
Force Reload: 'Εξαναγκασμένη ανανέωση'
|
||||
Toggle Developer Tools: 'Εμφάνηση Εργαλείων Προγραμματιστών'
|
||||
Toggle Developer Tools: 'Εμφάνιση Εργαλείων Προγραμματιστών'
|
||||
Actual size: 'Πραγματικό μέγεθος'
|
||||
Zoom in: 'Μεγέθυνση'
|
||||
Zoom out: 'Σμίκρυνση'
|
||||
|
|
|
@ -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.: この動画は、形式の情報が利用できないため再生できません。再生が許可されていない国で発生します。
|
||||
|
|
|
@ -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á $ %'
|
||||
|
|
Loading…
Reference in New Issue