Add French translation,improve German translation,add support for video captions,add support for video thumbnails
This commit is contained in:
parent
068546b84e
commit
61213b5628
|
@ -9,7 +9,7 @@ A webclient for Mastodon and Pleroma which looks like Twitter
|
|||
Follow our Mastodon account and never miss an important update: [@halcyon@social.csswg.org](https://social.csswg.org/@halcyon)
|
||||
|
||||
## Instances
|
||||
We moved our instances list to a wiki page: https://notabug.org/halcyon-suite/halcyon/wiki/Instances
|
||||
We moved our instances list to our webpage: https://www.halcyon.social/instances.php
|
||||
|
||||
## Translate
|
||||
[Help us translating Halcyon into many languages](https://translate.zanata.org/project/view/halcyon)
|
||||
|
@ -26,6 +26,7 @@ We moved our instances list to a wiki page: https://notabug.org/halcyon-suite/ha
|
|||
or read our new documentation pages to install it manually: https://www.halcyon.social/documentation.php?page=install
|
||||
|
||||
## Blog
|
||||
- Release of Version 2.2.5 - Add French translation,improve German translation,add support for video captions,add support for video thumbnails
|
||||
- Release of Version 2.2.4 - Easily switch between pictures in overlay,show pictures in full height in timeline,duplicated threads removed,many smaller bugfixes
|
||||
- Release of Version 2.2.3 - Fixed login with Pleroma,fixed compatibility with Pawoo (older Mastodon),added support for prefers-color-scheme,some more fixes
|
||||
- Our new information website [halcyon.social](https://www.halcyon.social) came online
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -7,3 +7,4 @@ pl_PL.UTF-8 UTF-8
|
|||
gl_ES.UTF-8 UTF-8
|
||||
it_IT.UTF-8 UTF-8
|
||||
cs_CZ.UTF-8 UTF-8
|
||||
fr_FR.UTF-8 UTF-8
|
||||
|
|
Binary file not shown.
|
@ -1,14 +1,15 @@
|
|||
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
|
||||
# Niklas Poslovski <ni.pos@yandex.com>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-09-30 09:53+0000\n"
|
||||
"POT-Creation-Date: 2019-01-19 16:33+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2018-10-14 09:41+0000\n"
|
||||
"Last-Translator: Niklas Poslovski <ni.pos@yandex.com>\n"
|
||||
"PO-Revision-Date: 2019-03-05 12:45+0000\n"
|
||||
"Last-Translator: Thiemo Tiziani <thiemo.tiziani@dev-wiki.de>\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de\n"
|
||||
"X-Generator: Zanata 4.6.2\n"
|
||||
|
@ -32,11 +33,14 @@ msgstr "Koreanisch"
|
|||
msgid "Language_pl_PL"
|
||||
msgstr "Polnisch"
|
||||
|
||||
msgid "Language_gl_ES"
|
||||
msgstr "Galizisch (Spanien)"
|
||||
|
||||
msgid "Language_pt_BR"
|
||||
msgstr "Portugiesisch (Brasilien)"
|
||||
|
||||
msgid "Language_gl_ES"
|
||||
msgstr "Galizisch (Spanien)"
|
||||
msgid "Language_it_IT"
|
||||
msgstr "Italienisch"
|
||||
|
||||
msgid "Sensitive content"
|
||||
msgstr "Sensitiver Inhalt"
|
||||
|
@ -258,7 +262,7 @@ msgid "Blank for default"
|
|||
msgstr "Leer lassen für Standardeinstellung"
|
||||
|
||||
msgid "FOLLOWING"
|
||||
msgstr "FOLGE"
|
||||
msgstr "FOLGE ICH"
|
||||
|
||||
msgid "Interesting accounts of devs"
|
||||
msgstr "Interessante Accounts von Entwickler_innen"
|
||||
|
@ -594,7 +598,7 @@ msgid "Remove"
|
|||
msgstr "Entfernen"
|
||||
|
||||
msgid "Add to list"
|
||||
msgstr "Liste hinzufügen"
|
||||
msgstr "Zur Liste hinzufügen"
|
||||
|
||||
msgid "Are you sure that you want to mute this user?"
|
||||
msgstr "Bist du sicher, dass du den Nutzer stummschalten möchtest?"
|
||||
|
@ -651,3 +655,201 @@ msgstr "Frage"
|
|||
msgid "Ok"
|
||||
msgstr "Ok"
|
||||
|
||||
msgid "Autocomplete enabled"
|
||||
msgstr "Autovervollständigung aktiviert"
|
||||
|
||||
msgid "Autocomplete disabled"
|
||||
msgstr "Autovervollständigung deaktiviert"
|
||||
|
||||
msgid "Changed custom profile field"
|
||||
msgstr "Profil-Metadaten aktualisiert"
|
||||
|
||||
msgid "Notifications when tab is closed enabled"
|
||||
msgstr "Desktopbenachrichtigungen bei geschlossenem Tab aktiviert"
|
||||
|
||||
msgid "Notifications when tab is closed disabled"
|
||||
msgstr "Desktopbenachrichtigungen bei geschlossenem Tab deaktiviert"
|
||||
|
||||
msgid "Toots of bots shown"
|
||||
msgstr "Toots von Bots gezeigt"
|
||||
|
||||
msgid "Toots of bots hidden"
|
||||
msgstr "Toots von Bots verborgen"
|
||||
|
||||
msgid "Filter created"
|
||||
msgstr "Filter erstellt"
|
||||
|
||||
msgid "Gif animations enabled"
|
||||
msgstr "Gif Animationen aktiviert"
|
||||
|
||||
msgid "Gif animations disabled"
|
||||
msgstr "Gif Animationen deaktiviert"
|
||||
|
||||
msgid "Video player enabled"
|
||||
msgstr "Videoplayer aktiviert"
|
||||
|
||||
msgid "Video player disabled"
|
||||
msgstr "Videoplayer deaktiviert"
|
||||
|
||||
msgid "Audio player enabled"
|
||||
msgstr "Audioplayer aktiviert"
|
||||
|
||||
msgid "Audio player disabled"
|
||||
msgstr "Audioplayer deaktiviert"
|
||||
|
||||
msgid "PeerTube embeds enabled"
|
||||
msgstr "PeerTube Einbettungen aktiviert"
|
||||
|
||||
msgid "PeerTube embeds disabled"
|
||||
msgstr "PeerTube Einbettungen deaktiviert"
|
||||
|
||||
msgid "YouPlay embeds enabled"
|
||||
msgstr "YouPlay Einbettungen aktiviert"
|
||||
|
||||
msgid "YouPlay embeds disabled"
|
||||
msgstr "YouPlay Einbettungen deaktiviert"
|
||||
|
||||
msgid "Invidio.us embeds enabled"
|
||||
msgstr "Invidio.us Einbettungen aktiviert"
|
||||
|
||||
msgid "Invidio.us embeds disabled"
|
||||
msgstr "Invidio.us Einbettungen deaktiviert"
|
||||
|
||||
msgid "Vimeo embeds enabled"
|
||||
msgstr "Vimeo Einbettungen aktiviert"
|
||||
|
||||
msgid "Vimeo embeds disabled"
|
||||
msgstr "Vimeo Einbettungen deaktiviert"
|
||||
|
||||
msgid "Thread"
|
||||
msgstr "Thema"
|
||||
|
||||
msgid "Never"
|
||||
msgstr "Niemals"
|
||||
|
||||
msgid "Don't change"
|
||||
msgstr "Nichts ändern"
|
||||
|
||||
msgid "Filter updated"
|
||||
msgstr "Filter aktualisiert"
|
||||
|
||||
msgid "Are you sure that you want to delete this filter?"
|
||||
msgstr "Bist du sicher, dass du diesen Filter löschen willst?"
|
||||
|
||||
msgid "Your filter has been deleted"
|
||||
msgstr "Dein Filter wurde gelöscht"
|
||||
|
||||
msgid "Toot to"
|
||||
msgstr "Toot an"
|
||||
|
||||
msgid "Administrated by"
|
||||
msgstr "Administriert von"
|
||||
|
||||
msgid "Users"
|
||||
msgstr "Mitglieder"
|
||||
|
||||
msgid "Connections"
|
||||
msgstr "Verbindungen"
|
||||
|
||||
msgid "Notifications when tab closed"
|
||||
msgstr "Desktopbenachrichtigungen bei geschlossenem Tab"
|
||||
|
||||
msgid "Filter settings"
|
||||
msgstr "Filter Einstellungen"
|
||||
|
||||
msgid "Show toots of bots"
|
||||
msgstr "Zeige Toots von Bots"
|
||||
|
||||
msgid "Add new filter"
|
||||
msgstr "Filter hinzufügen"
|
||||
|
||||
msgid "Create a filter"
|
||||
msgstr "Erstelle neuen Filter"
|
||||
|
||||
msgid "Word or phrase to filter"
|
||||
msgstr "Wort oder Satz zum Filter"
|
||||
|
||||
msgid "Filter in the following timelines"
|
||||
msgstr "Filtern von folgenden Zeitleisten"
|
||||
|
||||
msgid "Expires in"
|
||||
msgstr "Läuft aus in"
|
||||
|
||||
msgid "Autocomplete in compose field"
|
||||
msgstr "Autovervollständigung im Textfeld"
|
||||
|
||||
msgid "Media settings"
|
||||
msgstr "Medieneinstellungen"
|
||||
|
||||
msgid "Play animated GIFs"
|
||||
msgstr "Animierte GIF's abspielen"
|
||||
|
||||
msgid "Enable video player"
|
||||
msgstr "Aktiviere Videoplayer"
|
||||
|
||||
msgid "Enable audio player"
|
||||
msgstr "Aktiviere Audioplayer"
|
||||
|
||||
msgid "Embed PeerTube videos"
|
||||
msgstr "Einbetten von PeerTube Videos"
|
||||
|
||||
msgid "Embed YouTube using YouPlay"
|
||||
msgstr "Einbetten von Youtube Videos via YouPlay"
|
||||
|
||||
msgid "Embed YouTube using Invidio.us"
|
||||
msgstr "Einbetten von YouTube Videos via Invidio.us"
|
||||
|
||||
msgid "Embed Vimeo using YouPlay"
|
||||
msgstr "Einbetten von Vimeo Videos via YouPlay"
|
||||
|
||||
msgid "Custom profile fields"
|
||||
msgstr "Profil Metadaten"
|
||||
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
msgid "Value"
|
||||
msgstr "Wert"
|
||||
|
||||
msgid ""
|
||||
"To verify that the links in your custom fields really belong to you, you can "
|
||||
"add the link below to your website. The link text can be changed to whatever "
|
||||
"you want."
|
||||
msgstr ""
|
||||
"Um zu überprüfen, ob die Links in deinem Profil Metadaten wirklich dir "
|
||||
"gehören, kannst du den Link unten zu deiner Webseite hinzufügen. Den Link "
|
||||
"Text kannst du beliebig verändern."
|
||||
|
||||
msgid "Message"
|
||||
msgstr "Nachricht"
|
||||
|
||||
msgid "Filter"
|
||||
msgstr "Filter"
|
||||
|
||||
msgid "minutes"
|
||||
msgstr "Minuten"
|
||||
|
||||
msgid "hour"
|
||||
msgstr "Stunde"
|
||||
|
||||
msgid "hours"
|
||||
msgstr "Stunden"
|
||||
|
||||
msgid "day"
|
||||
msgstr "Tag"
|
||||
|
||||
msgid "week"
|
||||
msgstr "Woche"
|
||||
|
||||
msgid "Filter posts irreversible"
|
||||
msgstr "Beiträge unumkehrbar Filtern"
|
||||
|
||||
msgid "Whole word"
|
||||
msgstr "Ganze Wörter"
|
||||
|
||||
msgid "FILTERS"
|
||||
msgstr "FILTER"
|
||||
|
||||
msgid "MEDIA"
|
||||
msgstr "MEDIEN"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,853 @@
|
|||
# Niklas Poslovski <ni.pos@yandex.com>, 2019. #zanata
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-19 16:33+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-03-07 02:05+0000\n"
|
||||
"Last-Translator: Shika <shikayachan@laposte.net>\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr\n"
|
||||
"X-Generator: Zanata 4.6.2\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Langue"
|
||||
|
||||
msgid "Language_en_US"
|
||||
msgstr "English (US)"
|
||||
|
||||
msgid "Language_de_DE"
|
||||
msgstr "German"
|
||||
|
||||
msgid "Language_ja_JP"
|
||||
msgstr "Japanese"
|
||||
|
||||
msgid "Language_ko_KR"
|
||||
msgstr "Korean"
|
||||
|
||||
msgid "Language_pl_PL"
|
||||
msgstr "Polish"
|
||||
|
||||
msgid "Language_gl_ES"
|
||||
msgstr "Galician"
|
||||
|
||||
msgid "Language_pt_BR"
|
||||
msgstr "Portuguese (Brazil)"
|
||||
|
||||
msgid "Language_it_IT"
|
||||
msgstr "Italian"
|
||||
|
||||
msgid "Sensitive content"
|
||||
msgstr "Contenu sensible"
|
||||
|
||||
msgid "Click to view"
|
||||
msgstr "Cliquer pour voir"
|
||||
|
||||
msgid "SHOW MORE"
|
||||
msgstr "Déplier"
|
||||
|
||||
msgid "SHOW LESS"
|
||||
msgstr "Replier"
|
||||
|
||||
msgid "Public"
|
||||
msgstr "Public"
|
||||
|
||||
msgid "Unlisted"
|
||||
msgstr "Non Listé"
|
||||
|
||||
msgid "Followers-only"
|
||||
msgstr "Abonné·e·s uniquement"
|
||||
|
||||
msgid "Direct"
|
||||
msgstr "Direct"
|
||||
|
||||
msgid "Delete Toot"
|
||||
msgstr "Supprimer le Toot"
|
||||
|
||||
msgid "Unpin Toot"
|
||||
msgstr "Détacher le Toot"
|
||||
|
||||
msgid "Pin Toot"
|
||||
msgstr "Épingler le Toot"
|
||||
|
||||
msgid "Mute"
|
||||
msgstr "Masquer"
|
||||
|
||||
msgid "Block"
|
||||
msgstr "Bloquer"
|
||||
|
||||
msgid "Report this Toot"
|
||||
msgstr "Signaler ce Toot"
|
||||
|
||||
msgid "Copy link to Toot"
|
||||
msgstr "Copier le lien vers le Toot"
|
||||
|
||||
msgid "View original"
|
||||
msgstr "Voir l'original"
|
||||
|
||||
msgid "Boosted"
|
||||
msgstr "Boosté"
|
||||
|
||||
msgid "Pinned Toot"
|
||||
msgstr "Toot épinglé"
|
||||
|
||||
msgid "favourited Your Toot"
|
||||
msgstr "a ajouté votre toot à ses favoris"
|
||||
|
||||
msgid "boosted Your Toot"
|
||||
msgstr "a boosté votre toot"
|
||||
|
||||
msgid "followed you"
|
||||
msgstr "vous suit"
|
||||
|
||||
msgid "Follow"
|
||||
msgstr "Suivre"
|
||||
|
||||
msgid "Toot your reply"
|
||||
msgstr "Répondre"
|
||||
|
||||
msgid "Reply"
|
||||
msgstr "Répondre"
|
||||
|
||||
msgid "Content warning"
|
||||
msgstr "Avertissement"
|
||||
|
||||
msgid "Jan"
|
||||
msgstr "Jan"
|
||||
|
||||
msgid "Feb"
|
||||
msgstr "Fev"
|
||||
|
||||
msgid "Mar"
|
||||
msgstr "Mar"
|
||||
|
||||
msgid "Apr"
|
||||
msgstr "Avr"
|
||||
|
||||
msgid "May"
|
||||
msgstr "Mai"
|
||||
|
||||
msgid "Jun"
|
||||
msgstr "Jun"
|
||||
|
||||
msgid "Jul"
|
||||
msgstr "Jul"
|
||||
|
||||
msgid "Aug"
|
||||
msgstr "Aou"
|
||||
|
||||
msgid "Sep"
|
||||
msgstr "Sep"
|
||||
|
||||
msgid "Oct"
|
||||
msgstr "Oct"
|
||||
|
||||
msgid "Nov"
|
||||
msgstr "Nov"
|
||||
|
||||
msgid "Dec"
|
||||
msgstr "Dec"
|
||||
|
||||
msgid "Changed setting to"
|
||||
msgstr "A changé les paramètres pour"
|
||||
|
||||
msgid "Mark as NSFW by default enabled"
|
||||
msgstr "Marquer comme NSFW par défaut activé"
|
||||
|
||||
msgid "Mark as NSFW by default disabled"
|
||||
msgstr "Marquer comme NSFW par défaut desactivé"
|
||||
|
||||
msgid "Who to follow enabled"
|
||||
msgstr "Qui Suivre activé"
|
||||
|
||||
msgid "Who to follow disabled"
|
||||
msgstr "Qui Suivre desactivé"
|
||||
|
||||
msgid "Changed about me setting"
|
||||
msgstr "a changé le paramètre A Propos de moi"
|
||||
|
||||
msgid "Uploaded new avatar"
|
||||
msgstr "a mis à jour son avatar"
|
||||
|
||||
msgid "Uploaded new header"
|
||||
msgstr "a mis à jour son En-tête"
|
||||
|
||||
msgid "Account locked"
|
||||
msgstr "Compte verrouillé"
|
||||
|
||||
msgid "Account unlocked"
|
||||
msgstr "Compte déverrouillé"
|
||||
|
||||
msgid "Link previews enabled"
|
||||
msgstr "Aperçu des liens activé"
|
||||
|
||||
msgid "Link previews disabled"
|
||||
msgstr "Aperçu des liens desactivé"
|
||||
|
||||
msgid "You didn't allow notifications"
|
||||
msgstr "Vous n'autorisez pas les notifications"
|
||||
|
||||
msgid "Desktop notifications enabled"
|
||||
msgstr "Notification du bureau activé"
|
||||
|
||||
msgid "Desktop notifications disabled"
|
||||
msgstr "Notification du bureau desactivé"
|
||||
|
||||
msgid "Replies shown"
|
||||
msgstr "Réponses affichées"
|
||||
|
||||
msgid "Replies hidden"
|
||||
msgstr "Réponses cachées"
|
||||
|
||||
msgid "CW content shown"
|
||||
msgstr "Avertissements affichés"
|
||||
|
||||
msgid "CW content hidden"
|
||||
msgstr "Avertissements cachés"
|
||||
|
||||
msgid "NSFW content shown"
|
||||
msgstr "Contenu NSFW affichés"
|
||||
|
||||
msgid "NSFW content hidden"
|
||||
msgstr "Contenu NSFW caché"
|
||||
|
||||
msgid "Reply to"
|
||||
msgstr "Répondre"
|
||||
|
||||
msgid "Report"
|
||||
msgstr "Signaler"
|
||||
|
||||
msgid "Report a Toot of"
|
||||
msgstr "Signaler ce Toot"
|
||||
|
||||
msgid "What's happening?"
|
||||
msgstr "Quoi de neuf ?"
|
||||
|
||||
msgid "Toot"
|
||||
msgstr "Toot"
|
||||
|
||||
msgid "Compose new Toot"
|
||||
msgstr "Composer un nouveau Toot"
|
||||
|
||||
msgid "Please describe what the problem with the Toot is."
|
||||
msgstr "Veuillez décrire le problème avec le Toot"
|
||||
|
||||
msgid "TOOTS"
|
||||
msgstr "TOOTS"
|
||||
|
||||
msgid "PEOPLE"
|
||||
msgstr "PERSONNES"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Paramètres"
|
||||
|
||||
msgid "GENERAL"
|
||||
msgstr "GÉNÉRAL "
|
||||
|
||||
msgid "PROFILE"
|
||||
msgstr "PROFIL"
|
||||
|
||||
msgid "APPEARANCE"
|
||||
msgstr "APPARENCE"
|
||||
|
||||
msgid "Change instance"
|
||||
msgstr "Changer d'instance"
|
||||
|
||||
msgid "Blank for default"
|
||||
msgstr "Blanc par défaut"
|
||||
|
||||
msgid "FOLLOWING"
|
||||
msgstr "SUIVIT"
|
||||
|
||||
msgid "Interesting accounts of devs"
|
||||
msgstr "Comptes de devs intéressants"
|
||||
|
||||
msgid "Halcyon for"
|
||||
msgstr "Halcyon pour"
|
||||
|
||||
msgid "About"
|
||||
msgstr "À propos"
|
||||
|
||||
msgid "Terms"
|
||||
msgstr "Conditions générales d'utilisation"
|
||||
|
||||
msgid "Apps"
|
||||
msgstr "Applications"
|
||||
|
||||
msgid "Source code"
|
||||
msgstr "Code source"
|
||||
|
||||
msgid "Other instances"
|
||||
msgstr "Autres instances"
|
||||
|
||||
msgid "Privacy policy"
|
||||
msgstr "Politique de confidentialité"
|
||||
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
msgid "Who to follow"
|
||||
msgstr "Qui Suivre"
|
||||
|
||||
msgid "Enable who to follow"
|
||||
msgstr "Activer Qui Suivre"
|
||||
|
||||
msgid ""
|
||||
"Halcyon needs to connect to an external server to get a list of users which "
|
||||
"have similar interests as you. If you want to use this feature, please opt-"
|
||||
"in."
|
||||
msgstr ""
|
||||
"Halcyon a besoin de se connecter à un serveur extérieur pour avoir une liste "
|
||||
"d'utilisateur·ice·s qui ont des intérêts commun avec vous. Si vous voulez "
|
||||
"utiliser cette fonction, engagez vous."
|
||||
|
||||
msgid "MORE"
|
||||
msgstr "PLUS"
|
||||
|
||||
msgid "FOLLOWERS"
|
||||
msgstr "ABONNÉ·E·S"
|
||||
|
||||
msgid "Following"
|
||||
msgstr "Suivit"
|
||||
|
||||
msgid "You'll no longer receive notifications from this user"
|
||||
msgstr "Vous ne recevrez plus de notifications de cet·te utilisateur·ice."
|
||||
|
||||
msgid "Unmuted this user"
|
||||
msgstr "Démasquer cet·te utilisateur·ice"
|
||||
|
||||
msgid "This user has been blocked"
|
||||
msgstr "Cet·te utilisateur·ice a été bloqué"
|
||||
|
||||
msgid "Unblocked this user"
|
||||
msgstr "Débloquer cet·te utilisateur·ice"
|
||||
|
||||
msgid "Your Toot has been deleted"
|
||||
msgstr "Votre Toot a été supprimé"
|
||||
|
||||
msgid "Your Toot has been pinned"
|
||||
msgstr "Votre Toot a été épinglé"
|
||||
|
||||
msgid "Your Toot has been unpinned"
|
||||
msgstr "Votre Toot a été détaché"
|
||||
|
||||
msgid "Edit profile"
|
||||
msgstr "Editer le profil"
|
||||
|
||||
msgid "FAVOURITES"
|
||||
msgstr "FAVORIS"
|
||||
|
||||
msgid "Show"
|
||||
msgstr "Afficher"
|
||||
|
||||
msgid "Blocking"
|
||||
msgstr "Blocage"
|
||||
|
||||
msgid "Muting"
|
||||
msgstr "Masquage"
|
||||
|
||||
msgid "Requested"
|
||||
msgstr "Demandé"
|
||||
|
||||
msgid "Photos and toots"
|
||||
msgstr "Photos et toots"
|
||||
|
||||
msgid "favourited your toot"
|
||||
msgstr "a ajouté votre toot à ses favoris"
|
||||
|
||||
msgid "boosted your toot"
|
||||
msgstr "a boosté votre toot"
|
||||
|
||||
msgid "mentioned you"
|
||||
msgstr "vous a mentionné"
|
||||
|
||||
msgid "Your Toot was posted!"
|
||||
msgstr "Votre Toot a été posté"
|
||||
|
||||
msgid "News"
|
||||
msgstr "Nouvelles"
|
||||
|
||||
msgid "Source"
|
||||
msgstr "Source"
|
||||
|
||||
msgid "Privacy"
|
||||
msgstr "Confidentialité"
|
||||
|
||||
msgid "Imprint"
|
||||
msgstr "Impression"
|
||||
|
||||
msgid "Contact"
|
||||
msgstr "Contact"
|
||||
|
||||
msgid "Login"
|
||||
msgstr "Se connecter"
|
||||
|
||||
msgid "Login to Halcyon"
|
||||
msgstr "Se connecter à Halcyon "
|
||||
|
||||
msgid "create an account"
|
||||
msgstr "créer un compte"
|
||||
|
||||
msgid "or"
|
||||
msgstr "ou"
|
||||
|
||||
msgid "I agree with the"
|
||||
msgstr "Je suis d'accord avec le"
|
||||
|
||||
msgid "What is Halcyon"
|
||||
msgstr "Qu'est-ce que Halcyon "
|
||||
|
||||
msgid ""
|
||||
"which aims to recreate the simple and beautiful user interface of Twitter "
|
||||
"while keeping all advantages of decentral networks in focus."
|
||||
msgstr ""
|
||||
"qui a pour but de recréer l'interface utilisateur simple et magnifique de "
|
||||
"Twitter, tout en gardant les avantages des réseaux décentralisés."
|
||||
|
||||
msgid "Halcyon is a webclient for"
|
||||
msgstr "Halcyon est un client web pour"
|
||||
|
||||
msgid "Contact / Feedback"
|
||||
msgstr "Contact / Réactions"
|
||||
|
||||
msgid "Use my contact form"
|
||||
msgstr "Utiliser mon Formulaire de contact"
|
||||
|
||||
msgid "Help us"
|
||||
msgstr "Nous aider"
|
||||
|
||||
msgid "Halcyon Terms of Use"
|
||||
msgstr "Conditions d'utilisation de Halcyon "
|
||||
|
||||
msgid ""
|
||||
"This terms of use agreement is for the users of web service Halcyon for "
|
||||
"Mastodon and Pleroma (Halcyon for short) hosted at"
|
||||
msgstr ""
|
||||
"Ces Conditions générales d'utilisation sont pour les utilisateur·ice·s de "
|
||||
"Halcyon pour Mastodon et Pleroma (Halcyon pour faire court) hébergé à"
|
||||
|
||||
msgid "Your Reply was posted!"
|
||||
msgstr "Votre Réponse a été posté"
|
||||
|
||||
msgid "Toot reported successfully!"
|
||||
msgstr "Votre Toot a été signalé avec succès !"
|
||||
|
||||
msgid "Link successfully copied!"
|
||||
msgstr "Le lien a été copiée avec succès !"
|
||||
|
||||
msgid "Home"
|
||||
msgstr "Accueil"
|
||||
|
||||
msgid "Local"
|
||||
msgstr "Local"
|
||||
|
||||
msgid "Federated"
|
||||
msgstr "Fédéré"
|
||||
|
||||
msgid "Notifications"
|
||||
msgstr "Notifications"
|
||||
|
||||
msgid "Search Mastodon"
|
||||
msgstr "Chercher dans Mastodon"
|
||||
|
||||
msgid "View profile"
|
||||
msgstr "Consulter le profil"
|
||||
|
||||
msgid "Log out"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
msgid "All"
|
||||
msgstr "Tout"
|
||||
|
||||
msgid "new notitification"
|
||||
msgstr "nouvelle notification"
|
||||
|
||||
msgid "Show all NSFW content"
|
||||
msgstr "Afficher tout le contenu NSFW"
|
||||
|
||||
msgid "Show all CW content"
|
||||
msgstr "Afficher tous les Avertissements"
|
||||
|
||||
msgid "Show replies"
|
||||
msgstr "Afficher les réponses"
|
||||
|
||||
msgid "Desktop notifications"
|
||||
msgstr "Notification du bureau"
|
||||
|
||||
msgid "Enable link previews"
|
||||
msgstr "Activer l'aperçu des liens"
|
||||
|
||||
msgid "Auto update"
|
||||
msgstr "Mise à jour automatique"
|
||||
|
||||
msgid "Manual update"
|
||||
msgstr "Mise à jour manuelle"
|
||||
|
||||
msgid "Appearance settings"
|
||||
msgstr "Paramètres d'apparences"
|
||||
|
||||
msgid "New posts streaming"
|
||||
msgstr "New posts streaming"
|
||||
|
||||
msgid "replies"
|
||||
msgstr "Réponses"
|
||||
|
||||
msgid "General settings"
|
||||
msgstr "Paramètres généraux"
|
||||
|
||||
msgid "Default post privacy"
|
||||
msgstr "Confidentialité des posts par défaut"
|
||||
|
||||
msgid "Mark as NSFW by default"
|
||||
msgstr "Marquer comme NSFW par défaut"
|
||||
|
||||
msgid "Media"
|
||||
msgstr "Média"
|
||||
|
||||
msgid "FOLLOWS YOU"
|
||||
msgstr "Vous suit"
|
||||
|
||||
msgid "Local instance"
|
||||
msgstr "Instance Locale"
|
||||
|
||||
msgid "Hashtag search filter"
|
||||
msgstr "Filtre de recherche pour Hashtag"
|
||||
|
||||
msgid "All instances"
|
||||
msgstr "Toutes les instances"
|
||||
|
||||
msgid "Local only"
|
||||
msgstr "Local Seulement"
|
||||
|
||||
msgid "Lock account"
|
||||
msgstr "Verouiller le compte"
|
||||
|
||||
msgid "Header"
|
||||
msgstr "En-tête"
|
||||
|
||||
msgid "Avatar"
|
||||
msgstr "Avatar"
|
||||
|
||||
msgid "About me"
|
||||
msgstr "À propos"
|
||||
|
||||
msgid "Display name"
|
||||
msgstr "Nom Affiché"
|
||||
|
||||
msgid "Profile settings"
|
||||
msgstr "Paramètres du profil "
|
||||
|
||||
msgid "Toots"
|
||||
msgstr "Toots"
|
||||
|
||||
msgid "Favourites"
|
||||
msgstr "Favoris"
|
||||
|
||||
msgid "New favourite"
|
||||
msgstr "Nouveau Favori"
|
||||
|
||||
msgid "New boost"
|
||||
msgstr "Nouveau boost"
|
||||
|
||||
msgid "New follower"
|
||||
msgstr "Nouvel abonné·e·s"
|
||||
|
||||
msgid "New mention"
|
||||
msgstr "Nouvelle mention"
|
||||
|
||||
msgid "Dark theme enabled"
|
||||
msgstr "Thème sombre activé"
|
||||
|
||||
msgid "Dark theme disabled"
|
||||
msgstr "Thème sombre desactivé"
|
||||
|
||||
msgid "Only on top"
|
||||
msgstr "Seulement au dessus"
|
||||
|
||||
msgid "Enable dark theme"
|
||||
msgstr "Activer le thème sombre"
|
||||
|
||||
msgid "Please enter the new name for this list."
|
||||
msgstr "Entrez le nouveau nom de cette liste"
|
||||
|
||||
msgid "The name of your list can't be empty!"
|
||||
msgstr "Le nom de cette liste ne peut pas être vide !"
|
||||
|
||||
msgid "Your list has been renamed"
|
||||
msgstr "Votre liste a été renommée"
|
||||
|
||||
msgid "Are you sure that you want to delete this list?"
|
||||
msgstr "Êtes-vous sur·e que vous voulez supprimer cette liste ?"
|
||||
|
||||
msgid "Your list has been deleted"
|
||||
msgstr "Votre liste a été supprimée"
|
||||
|
||||
msgid "Please enter the name of your new list."
|
||||
msgstr "Entrez le nom de votre nouvelle liste"
|
||||
|
||||
msgid "Add"
|
||||
msgstr "Ajouter"
|
||||
|
||||
msgid "Remove"
|
||||
msgstr "Supprimer"
|
||||
|
||||
msgid "Add to list"
|
||||
msgstr "Ajouter à la liste"
|
||||
|
||||
msgid "Are you sure that you want to mute this user?"
|
||||
msgstr "Êtes-vous certain de vouloir masquer cet·te utilisateur·ice ?"
|
||||
|
||||
msgid "Are you sure that you want to block this user?"
|
||||
msgstr "Êtes-vous certain de vouloir bloquer cet·te utilisateur·ice ?"
|
||||
|
||||
msgid "Are you sure that you want to delete this toot?"
|
||||
msgstr "Êtes-vous certain de vouloir supprimer ce toot ?"
|
||||
|
||||
msgid "Added this account to the list"
|
||||
msgstr "Ce compte a été ajouté à votre liste"
|
||||
|
||||
msgid ""
|
||||
"You need to follow this user to add him/her to the list. Do you want to do "
|
||||
"that now?"
|
||||
msgstr ""
|
||||
"Vous devez suivre cet·te utilisateur·ice pour l'ajouter à la liste. Voulez "
|
||||
"vous le faire maintenant ?"
|
||||
|
||||
msgid "You successfully followed this user."
|
||||
msgstr "Vous suivez cet·te utilisateur·ice"
|
||||
|
||||
msgid "Removed this account from the list"
|
||||
msgstr "Ce compte a été supprimé de votre liste"
|
||||
|
||||
msgid "Joined at"
|
||||
msgstr "Rejoins"
|
||||
|
||||
msgid "Direct messages"
|
||||
msgstr "Messages Directs"
|
||||
|
||||
msgid "Lists"
|
||||
msgstr "Listes"
|
||||
|
||||
msgid "Open public profile"
|
||||
msgstr "Ouvrir le Profil Utilisateur"
|
||||
|
||||
msgid "My Lists"
|
||||
msgstr "Mes listes"
|
||||
|
||||
msgid "Confirmation"
|
||||
msgstr "Confirmation"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Oui"
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
msgid "Prompt"
|
||||
msgstr "Demander"
|
||||
|
||||
msgid "Ok"
|
||||
msgstr "Ok"
|
||||
|
||||
msgid "Autocomplete enabled"
|
||||
msgstr "Complétion automatique activé"
|
||||
|
||||
msgid "Autocomplete disabled"
|
||||
msgstr "Complétion automatique désactivé"
|
||||
|
||||
msgid "Changed custom profile field"
|
||||
msgstr "Changer le champ personnalisé"
|
||||
|
||||
msgid "Notifications when tab is closed enabled"
|
||||
msgstr "Notification quand l'onglet est fermé activé"
|
||||
|
||||
msgid "Notifications when tab is closed disabled"
|
||||
msgstr "Notification quand l'onglet est fermé désactivé"
|
||||
|
||||
msgid "Toots of bots shown"
|
||||
msgstr "Toots des bots affichés"
|
||||
|
||||
msgid "Toots of bots hidden"
|
||||
msgstr "Toots des bots cachés"
|
||||
|
||||
msgid "Filter created"
|
||||
msgstr "Filtre créé"
|
||||
|
||||
msgid "Gif animations enabled"
|
||||
msgstr "Animations GIF activées"
|
||||
|
||||
msgid "Gif animations disabled"
|
||||
msgstr "Animations GIF desactivées"
|
||||
|
||||
msgid "Video player enabled"
|
||||
msgstr "Lanceur de vidéos activé"
|
||||
|
||||
msgid "Video player disabled"
|
||||
msgstr "Lanceur de vidéos desactivé"
|
||||
|
||||
msgid "Audio player enabled"
|
||||
msgstr "Lanceur de sons activé"
|
||||
|
||||
msgid "Audio player disabled"
|
||||
msgstr "Lanceur de sons desactivé"
|
||||
|
||||
msgid "PeerTube embeds enabled"
|
||||
msgstr "Ancrage Peertube activé"
|
||||
|
||||
msgid "PeerTube embeds disabled"
|
||||
msgstr "Ancrage Peertube desactivé"
|
||||
|
||||
msgid "YouPlay embeds enabled"
|
||||
msgstr "Ancrage YouPlay activé"
|
||||
|
||||
msgid "YouPlay embeds disabled"
|
||||
msgstr "Ancrage YouPlay desactivé"
|
||||
|
||||
msgid "Invidio.us embeds enabled"
|
||||
msgstr "Ancrage Invidio.us activé"
|
||||
|
||||
msgid "Invidio.us embeds disabled"
|
||||
msgstr "Ancrage Invidio.us desactivé"
|
||||
|
||||
msgid "Vimeo embeds enabled"
|
||||
msgstr "Ancrage Vimeo activé"
|
||||
|
||||
msgid "Vimeo embeds disabled"
|
||||
msgstr "Ancrage Vimeo desactivé"
|
||||
|
||||
msgid "Thread"
|
||||
msgstr "Discussion"
|
||||
|
||||
msgid "Never"
|
||||
msgstr "Jamais"
|
||||
|
||||
msgid "Don't change"
|
||||
msgstr "Ne pas modifier"
|
||||
|
||||
msgid "Filter updated"
|
||||
msgstr "Filtre mis à jour"
|
||||
|
||||
msgid "Are you sure that you want to delete this filter?"
|
||||
msgstr "Êtes-vous certain de vouloir supprimer ce filtre ?"
|
||||
|
||||
msgid "Your filter has been deleted"
|
||||
msgstr "Votre filtre a été supprimée"
|
||||
|
||||
msgid "Toot to"
|
||||
msgstr "Tooter à"
|
||||
|
||||
msgid "Administrated by"
|
||||
msgstr "Administré par"
|
||||
|
||||
msgid "Users"
|
||||
msgstr "Utilisateur·ice"
|
||||
|
||||
msgid "Connections"
|
||||
msgstr "Connections"
|
||||
|
||||
msgid "Notifications when tab closed"
|
||||
msgstr "Notifications quand l'onglet est fermé"
|
||||
|
||||
msgid "Filter settings"
|
||||
msgstr "Paramètres de Filtres"
|
||||
|
||||
msgid "Show toots of bots"
|
||||
msgstr "Afficher les Toots des bots"
|
||||
|
||||
msgid "Add new filter"
|
||||
msgstr "Créer un nouveau filtre"
|
||||
|
||||
msgid "Create a filter"
|
||||
msgstr "Créer un filtre"
|
||||
|
||||
msgid "Word or phrase to filter"
|
||||
msgstr "Mot ou phrase à filtrer"
|
||||
|
||||
msgid "Filter in the following timelines"
|
||||
msgstr "Filtrer dans les fils suivis"
|
||||
|
||||
msgid "Expires in"
|
||||
msgstr "Expire dans"
|
||||
|
||||
msgid "Autocomplete in compose field"
|
||||
msgstr "Complétion automatique dans le champ"
|
||||
|
||||
msgid "Media settings"
|
||||
msgstr "Paramètre des Médias"
|
||||
|
||||
msgid "Play animated GIFs"
|
||||
msgstr "Jouer les Animations GIFs"
|
||||
|
||||
msgid "Enable video player"
|
||||
msgstr "Activer le Lanceur de Vidéo"
|
||||
|
||||
msgid "Enable audio player"
|
||||
msgstr "Activer le Lanceur de Son"
|
||||
|
||||
msgid "Embed PeerTube videos"
|
||||
msgstr "Ancrer les vidéos PeerTube"
|
||||
|
||||
msgid "Embed YouTube using YouPlay"
|
||||
msgstr "Ancrer YouTube utilisant YouPlay"
|
||||
|
||||
msgid "Embed YouTube using Invidio.us"
|
||||
msgstr "Ancrer YouTube utilisant Invidio.us"
|
||||
|
||||
msgid "Embed Vimeo using YouPlay"
|
||||
msgstr "Ancrer Vimeo utilisant YouPlay"
|
||||
|
||||
msgid "Custom profile fields"
|
||||
msgstr "Personnaliser les champs du profil"
|
||||
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
msgid "Value"
|
||||
msgstr "Valeur"
|
||||
|
||||
msgid ""
|
||||
"To verify that the links in your custom fields really belong to you, you can "
|
||||
"add the link below to your website. The link text can be changed to whatever "
|
||||
"you want."
|
||||
msgstr ""
|
||||
"Pour vérifier que le lien dans vos champs personnalisé vous appartient "
|
||||
"vraiment, vous pouvez ajouter ce lien à votre website. Le lien peut être "
|
||||
"changé quand vous voulez."
|
||||
|
||||
msgid "Message"
|
||||
msgstr "Message"
|
||||
|
||||
msgid "Filter"
|
||||
msgstr "Filtre"
|
||||
|
||||
msgid "minutes"
|
||||
msgstr "minutes"
|
||||
|
||||
msgid "hour"
|
||||
msgstr "heure"
|
||||
|
||||
msgid "hours"
|
||||
msgstr "heures"
|
||||
|
||||
msgid "day"
|
||||
msgstr "jour"
|
||||
|
||||
msgid "week"
|
||||
msgstr "semaine"
|
||||
|
||||
msgid "Filter posts irreversible"
|
||||
msgstr "Filtre des posts irréversibles"
|
||||
|
||||
msgid "Whole word"
|
||||
msgstr "Mot entier"
|
||||
|
||||
msgid "FILTERS"
|
||||
msgstr "FILTRES"
|
||||
|
||||
msgid "MEDIA"
|
||||
msgstr "MÉDIA"
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
function curlGet($url) {
|
||||
if(in_array('curl', get_loaded_extensions())){
|
||||
$appSettings = parse_ini_file('../config/config.ini',true);
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
//curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
|
||||
if($appSettings["Proxy"]["type"]) {
|
||||
curl_setopt($ch, CURLOPT_PROXY, $appSettings["Proxy"]["type"]."://".$appSettings["Proxy"]["domain"].":".$appSettings["Proxy"]["port"]);
|
||||
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $appSettings["Proxy"]["username"].":".$appSettings["Proxy"]["password"]);
|
||||
}
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $result;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
header("Content-type: image/jpeg");
|
||||
echo curlGet($_GET["url"]);
|
||||
?>
|
|
@ -19,7 +19,12 @@ $vdata = vimeo(htmlspecialchars($_GET["id"]));
|
|||
if($vdata) {
|
||||
$vlink = $vdata["dl"];
|
||||
?>
|
||||
<video class="video-js vjs-default-skin" controls id="player" poster="<?=$vdata["info"]["Thumbnail"]?>" title="<?=$vdata["info"]["Title"]?>" style="width:100%;height:100%">
|
||||
<video class="video-js vjs-default-skin" controls id="player" poster="image.php?url=<?=urlencode($vdata["info"]["Thumbnail"])?>" title="<?=$vdata["info"]["Title"]?>" style="width:100%;height:100%">
|
||||
<?php
|
||||
for($i=0;$i<count($vdata["info"]["Captions"]);$i++) {
|
||||
echo "<track kind='captions' label='".$vdata["info"]["Captions"][$i]["title"]."' src='vimeocaption.php?url=".urlencode($vdata["info"]["Captions"][$i]["url"])."'>";
|
||||
}
|
||||
?>
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
<script>
|
||||
|
@ -29,10 +34,10 @@ for($i=0;$i<count($vlink);$i++) {
|
|||
echo "{src:'".$vlink[$i]["url"]."',label:'".$vlink[$i]["type"]."',audio:true},";
|
||||
}
|
||||
?>
|
||||
]});
|
||||
],thumbnails:JSON.parse('<?=json_encode($vdata["info"]["Thumbs"])?>')});
|
||||
</script>
|
||||
<?php } else { ?>
|
||||
Sorry, there was an error while trying to load your video.
|
||||
<?php } ?>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
function curlGet($url) {
|
||||
if(in_array('curl', get_loaded_extensions())){
|
||||
$appSettings = parse_ini_file('../config/config.ini',true);
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
//curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
|
||||
if($appSettings["Proxy"]["type"]) {
|
||||
curl_setopt($ch, CURLOPT_PROXY, $appSettings["Proxy"]["type"]."://".$appSettings["Proxy"]["domain"].":".$appSettings["Proxy"]["port"]);
|
||||
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $appSettings["Proxy"]["username"].":".$appSettings["Proxy"]["password"]);
|
||||
}
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $result;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
echo str_replace("<i>","",str_replace("</i>","",curlGet("http://vimeo.com".$_GET["url"])));
|
||||
?>
|
|
@ -1,4 +1,6 @@
|
|||
<?php
|
||||
ini_set("display_errors","1");
|
||||
error_reporting(E_ALL);
|
||||
function curl_load($url) {
|
||||
if(in_array('curl', get_loaded_extensions())){
|
||||
$appSettings = parse_ini_file('../config/config.ini',true);
|
||||
|
@ -25,10 +27,29 @@ $start = substr($data, strlen('config_url":"'));
|
|||
$stop = stripos($start, ',');
|
||||
$str = substr($start, 0, $stop);
|
||||
$data = json_decode(curl_load(rtrim(str_replace("\\", "", $str), '"')));
|
||||
$captions = array();
|
||||
if(isset($data->request->text_tracks)) {
|
||||
for($i=0;$i<count($data->request->text_tracks);$i++) {
|
||||
$caption = array();
|
||||
$caption["title"] = $data->request->text_tracks[$i]->label;
|
||||
$caption["lang"] = $data->request->text_tracks[$i]->lang;
|
||||
$caption["url"] = $data->request->text_tracks[$i]->url;
|
||||
array_push($captions,$caption);
|
||||
}
|
||||
}
|
||||
$info = array();
|
||||
$info["info"] = array();
|
||||
$info["info"]["Title"] = $data->video->title;
|
||||
$info["info"]["Thumbnail"] = $data->video->thumbs->base;
|
||||
$info["info"]["Captions"] = $captions;
|
||||
$info["info"]["Thumbs"] = array();
|
||||
$info["info"]["Thumbs"]["src"] = "image.php?url=".urlencode($data->request->thumb_preview->url);
|
||||
$info["info"]["Thumbs"]["width"] = $data->request->thumb_preview->width;
|
||||
$info["info"]["Thumbs"]["height"] = $data->request->thumb_preview->height;
|
||||
$info["info"]["Thumbs"]["fwidth"] = $data->request->thumb_preview->frame_width;
|
||||
$info["info"]["Thumbs"]["fheight"] = $data->request->thumb_preview->frame_height;
|
||||
$info["info"]["Thumbs"]["fcount"] = $data->request->thumb_preview->frames;
|
||||
$info["info"]["Thumbs"]["row"] = $data->request->thumb_preview->columns;
|
||||
$info["dl"] = array();
|
||||
for($i=0;$i<count($data->request->files->progressive);$i++) {
|
||||
$xinfo = array();
|
||||
|
@ -42,4 +63,4 @@ else {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -20,7 +20,12 @@ $vdata = $ytclass->getDownloadLinks(htmlspecialchars($_GET["id"]));
|
|||
if($vdata) {
|
||||
$vlink = $vdata["dl"];
|
||||
?>
|
||||
<video class="video-js vjs-default-skin" controls id="player" poster="<?=$vdata["info"]["Thumbnail"]?>" title="<?=$vdata["info"]["Title"]?>" style="width:100%;height:100%">
|
||||
<video class="video-js vjs-default-skin" controls id="player" poster="image.php?url=<?=urlencode($vdata["info"]["Thumbnail"])?>" title="<?=$vdata["info"]["Title"]?>" style="width:100%;height:100%">
|
||||
<?php
|
||||
for($i=0;$i<count($vdata["info"]["Captions"]);$i++) {
|
||||
echo "<track kind='captions' label='".$vdata["info"]["Captions"][$i]["title"]."' src='ytcaption.php?lang=".$vdata["info"]["Captions"][$i]["lang"]."&url=".urlencode($vdata["info"]["Captions"][$i]["url"])."'>";
|
||||
}
|
||||
?>
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
<script>
|
||||
|
@ -41,10 +46,10 @@ for($i=0;$i<count($vlink);$i++) {
|
|||
if(strstr($vlink[$i]["type"],"(Audio Only)")) echo "'".$vlink[$i]["url"]."',";
|
||||
}
|
||||
?>
|
||||
]});
|
||||
],thumbnails:JSON.parse('<?=json_encode($vdata["info"]["Thumbs"])?>')});
|
||||
</script>
|
||||
<?php } else { ?>
|
||||
Sorry, there was an error while trying to load your video.
|
||||
<?php } ?>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
function curlGet($url) {
|
||||
if(in_array('curl', get_loaded_extensions())){
|
||||
$appSettings = parse_ini_file('../config/config.ini',true);
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
//curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
|
||||
if($appSettings["Proxy"]["type"]) {
|
||||
curl_setopt($ch, CURLOPT_PROXY, $appSettings["Proxy"]["type"]."://".$appSettings["Proxy"]["domain"].":".$appSettings["Proxy"]["port"]);
|
||||
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $appSettings["Proxy"]["username"].":".$appSettings["Proxy"]["password"]);
|
||||
}
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $result;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
function timevtt($gtime) {
|
||||
if(strlen(date("H",intval($gtime))-1) == 1) $hour = "0".intval(date("H",intval($gtime))-1);
|
||||
else $hour = intval(date("H",intval($gtime))-1);
|
||||
if(strlen(explode(".",$gtime)[1]) == 3) return $hour.":".date("i:s",intval($gtime)).".".explode(".",$gtime)[1];
|
||||
if(strlen(explode(".",$gtime)[1]) == 2) return $hour.":".date("i:s",intval($gtime)).".".explode(".",$gtime)[1]."0";
|
||||
if(strlen(explode(".",$gtime)[1]) == 1) return $hour.":".date("i:s",intval($gtime)).".".explode(".",$gtime)[1]."00";
|
||||
if(strlen(explode(".",$gtime)[1]) == 0) return $hour.":".date("i:s",intval($gtime)).".".explode(".",$gtime)[1]."000";
|
||||
}
|
||||
$caption = new SimpleXMLElement(curlGet($_GET["url"]));
|
||||
echo "WEBVTT\n";
|
||||
echo "Kind: captions\n";
|
||||
echo "Language: ".$_GET["lang"]."\n\n";
|
||||
for($i=0;$i<count($caption->text);$i++) {
|
||||
if($i == count($caption->text)-1) {
|
||||
if(strlen(explode(".",$caption->text[$i]["start"])[1]+explode(".",$caption->text[$i]["dur"])[1]) == 3) $endtime = array(explode(".",$caption->text[$i]["start"])[0]+explode(".",$caption->text[$i]["dur"])[0],explode(".",$caption->text[$i]["start"])[1]+explode(".",$caption->text[$i]["dur"])[1]);
|
||||
else $endtime = array(explode(".",$caption->text[$i]["start"])[0]+explode(".",$caption->text[$i]["dur"])[0]+1,explode(".",$caption->text[$i]["start"])[1]+explode(".",$caption->text[$i]["dur"])[1]);
|
||||
echo timevtt($caption->text[$i]["start"])." --> ".timevtt(implode(".",$endtime))."\n";
|
||||
}
|
||||
else echo timevtt($caption->text[$i]["start"])." --> ".timevtt($caption->text[$i+1]["start"])."\n";
|
||||
echo preg_replace('/<font color="#[a-fA-F0-9]{6}">/',"",str_replace("</font>","",$caption->text[$i]))."\n\n";
|
||||
}
|
||||
?>
|
|
@ -4,11 +4,22 @@ private $cache_dir;
|
|||
private $cookie_dir;
|
||||
private $itag_info = array(
|
||||
// Full Video
|
||||
5 => "FLV[400x240]",
|
||||
6 => "FLV[450x270]",
|
||||
17 => "3GP[176x144]",
|
||||
18 => "MP4[640x360]",
|
||||
22 => "HD MP4[1280x720]",
|
||||
34 => "FLV[640x360]",
|
||||
35 => "FLV[854x480]",
|
||||
36 => "3GP[320x180]",
|
||||
37 => "MP4[1920x1080]",
|
||||
38 => "MP4[4096x3072]",
|
||||
43 => "WEBM[640x360]",
|
||||
17 => "3GP[176x144]",
|
||||
44 => "WEBM[854x480]",
|
||||
45 => "WEBM[1280x720]",
|
||||
46 => "WEBM[1920x1080]",
|
||||
59 => "MP4[854x480]",
|
||||
78 => "MP4[854x480]",
|
||||
// DASH videos
|
||||
137 => "(Video Only) MP4[1920x1080]",
|
||||
248 => "(Video Only) WEBM[1920x1080]",
|
||||
|
@ -28,14 +39,25 @@ private $itag_info = array(
|
|||
249 => "(Audio Only) WEBM[50Kbps]",
|
||||
250 => "(Audio Only) WEBM[70Kbps]",
|
||||
251 => "(Audio Only) WEBM[160Kbps]"
|
||||
);
|
||||
);
|
||||
private $itag_ext = array(
|
||||
// Full Video
|
||||
5 => ".flv",
|
||||
6 => ".flv",
|
||||
17 => ".3gp",
|
||||
18 => ".mp4",
|
||||
22 => ".mp4",
|
||||
34 => ".flv",
|
||||
35 => ".flv",
|
||||
36 => ".3gp",
|
||||
37 => ".mp4",
|
||||
38 => ".mp4",
|
||||
43 => ".webm",
|
||||
17 => ".3gp",
|
||||
44 => ".webm",
|
||||
45 => ".webm",
|
||||
46 => ".webm",
|
||||
59 => ".mp4",
|
||||
78 => ".mp4",
|
||||
// DASH videos
|
||||
137 => ".mp4",
|
||||
248 => ".webm",
|
||||
|
@ -90,12 +112,34 @@ break;
|
|||
}
|
||||
}
|
||||
if(isset($videoData['status']) && $videoData['status'] !== 'fail') {
|
||||
$playerData = json_decode($videoData["player_response"]);
|
||||
$captions = array();
|
||||
for($i=0;$i<count($playerData->captions->playerCaptionsTracklistRenderer->captionTracks);$i++) {
|
||||
$caption = array();
|
||||
$caption["title"] = $playerData->captions->playerCaptionsTracklistRenderer->captionTracks[$i]->name->simpleText;
|
||||
$caption["lang"] = $playerData->captions->playerCaptionsTracklistRenderer->captionTracks[$i]->languageCode;
|
||||
$caption["url"] = $playerData->captions->playerCaptionsTracklistRenderer->captionTracks[$i]->baseUrl;
|
||||
array_push($captions,$caption);
|
||||
}
|
||||
$thumbinfo = $playerData->storyboards->playerStoryboardSpecRenderer->spec;
|
||||
$thumbparts = explode("|",$thumbinfo);
|
||||
$thumbnum = count($thumbparts)-1;
|
||||
$thumbdata = explode("#",$thumbparts[$thumbnum]);
|
||||
$vInfo['Title'] = $videoData['title'];
|
||||
$vInfo['ChannelName'] = $videoData['author'];
|
||||
$vInfo['ChannelId'] = $videoData['ucid'];
|
||||
$vInfo['Thumbnail'] = str_replace('default', 'maxresdefault', $videoData['thumbnail_url']);
|
||||
$vInfo['Duration'] = $videoData['length_seconds'];
|
||||
//$vInfo['Rating'] = $videoData['avg_rating'];
|
||||
$vInfo['Rating'] = $playerData->videoDetails->averageRating;
|
||||
$vInfo['Captions'] = $captions;
|
||||
$vInfo['Thumbs'] = array();
|
||||
$vInfo['Thumbs']["src"] = "ytthumbs.php?data=".urlencode($thumbinfo);
|
||||
$vInfo['Thumbs']["width"] = $thumbdata[0]*$thumbdata[3];
|
||||
$vInfo['Thumbs']["height"] = $thumbdata[1]*ceil($thumbdata[2]/$thumbdata[3]);
|
||||
$vInfo['Thumbs']["fwidth"] = $thumbdata[0];
|
||||
$vInfo['Thumbs']["fheight"] = $thumbdata[1];
|
||||
$vInfo['Thumbs']["fcount"] = $thumbdata[2];
|
||||
$vInfo['Thumbs']["row"] = $thumbdata[3];
|
||||
}
|
||||
if (isset($videoData['url_encoded_fmt_stream_map']) && isset($videoData['adaptive_fmts'])) {
|
||||
$draft1 = explode(',',$videoData['url_encoded_fmt_stream_map']);
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
function curlGet($url) {
|
||||
if(in_array('curl', get_loaded_extensions())){
|
||||
$appSettings = parse_ini_file('../config/config.ini',true);
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
//curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
|
||||
if($appSettings["Proxy"]["type"]) {
|
||||
curl_setopt($ch, CURLOPT_PROXY, $appSettings["Proxy"]["type"]."://".$appSettings["Proxy"]["domain"].":".$appSettings["Proxy"]["port"]);
|
||||
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $appSettings["Proxy"]["username"].":".$appSettings["Proxy"]["password"]);
|
||||
}
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $result;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
header("Content-type: image/jpeg");
|
||||
$thumbparts = explode("|",$_GET["data"]);
|
||||
$i = count($thumbparts)-1;
|
||||
$thumbdata = explode("#",$thumbparts[$i]);
|
||||
$base_url = $thumbparts[0];
|
||||
$thumbs = imagecreatetruecolor($thumbdata[0]*$thumbdata[3],$thumbdata[1]*ceil($thumbdata[2]/$thumbdata[3]));
|
||||
for($j=0;$j<ceil($thumbdata[2]/($thumbdata[3]*$thumbdata[4]));$j++) {
|
||||
$link = str_replace('$L',$i-1,$base_url)."&";
|
||||
$link = str_replace('$N',$thumbdata[6],$link);
|
||||
$link = str_replace('$M',$j,$link)."sigh=".$thumbdata[7];
|
||||
$thumb = imagecreatefromstring(curlGet($link));
|
||||
imagecopy($thumbs,$thumb,0,$j*$thumbdata[1]*$thumbdata[4],0,0,$thumbdata[0]*$thumbdata[3],$thumbdata[1]*$thumbdata[4]);
|
||||
}
|
||||
imagejpeg($thumbs);
|
||||
?>
|
|
@ -1 +1 @@
|
|||
2.2.4
|
||||
2.2.5
|
||||
|
|
Loading…
Reference in New Issue