#!/usr/bin/env python3

# [Gedit Tool]
# Name[af]=Stuur na fpaste
# Name[an]=Ninviar ta fpaste
# Name[ar]=أرسل إلى fpaste
# Name[as]=fpaste লৈ পঠাওক
# Name[be]=Высыланне праз fpaste
# Name[bg]=Изпращане към „fpaste“
# Name[bn_IN]=fpaste-এ পাঠান
# Name[bs]=Pošalji u fpaste
# Name[ca]=Envia a fpaste
# Name[ca@valencia]=Envia a fpaste
# Name[cs]=Odeslat do fpaste
# Name[da]=Send til fpaste
# Name[de]=An »fpaste« senden
# Name[el]=Αποστολή στο fpaste
# Name[en_GB]=Send to fpaste
# Name[eo]=Sendi al fpaste
# Name[es]=Enviar a fpaste
# Name[eu]=Bidali fpaste-ra
# Name[fa]=ارسال به fpaste
# Name[fi]=Lähetä fpasteen
# Name[fr]=Envoyer à fpaste
# Name[fur]=Invie a fpaste
# Name[gd]=Cuir gu fpaste
# Name[gl]=Enviar a fpaste
# Name[gu]=fpaste માં મોકલો
# Name[he]=שליחה ל־fpaste
# Name[hi]=एफपेस्ट में भेजें
# Name[hr]=Pošalji na fpaste
# Name[hu]=Küldés az fpaste programnak
# Name[id]=Kirim ke fpaste
# Name[ie]=Inviar a fpaste
# Name[is]=Senda til fpaste
# Name[it]=Inva a fpaste
# Name[ja]=fpaste に送る
# Name[kk]=fpaste қызметіне жіберу
# Name[kn]=fpaste ಗೆ ಕಳುಹಿಸು
# Name[ko]=fpaste로 보내기
# Name[ln]=Tindela fpaste
# Name[lt]=Siųsti į fpaste
# Name[lv]=Sūtīt uz fpaste
# Name[ml]=fpaste-ലേക്ക് അയക്കുക
# Name[mr]=fpaste कडे पाठवा
# Name[ms]=Hantar ke fpaste
# Name[nb]=Send til fpaste
# Name[nl]=Naar fpaste sturen
# Name[oc]=Mandar a fpaste
# Name[or]=fpaste ପାଖକୁ ପଠାନ୍ତୁ
# Name[pa]=fpaste ਨੂੰ ਭੇਜੋ
# Name[pl]=Wyślij do serwisu fpaste
# Name[pt]=Enviar para fpaste
# Name[pt_BR]=Enviar para fpaste
# Name[ro]=Trimite către fpaste
# Name[ru]=Отправить в fpaste
# Name[sk]=Odoslanie do fpaste
# Name[sl]=Pošlji na ukaz fpaste
# Name[sr]=Пошаљите у „fpaste“
# Name[sr@latin]=Pošaljite u „fpaste“
# Name[sv]=Skicka till fpaste
# Name[ta]=fpaste க்கு அனுப்பு
# Name[te]=fpaste కు పంపు
# Name[th]=ส่งไปยัง fpaste
# Name[tr]=Fpaste’e gönder
# Name[uk]=Надіслати до fpaste
# Name[vi]=Gửi đến fpaste
# Name[zh_CN]=发送到 fpaste
# Name[zh_HK]=傳送到 fpaste
# Name[zh_TW]=傳送到 fpaste
# Name=Send to fpaste
# Comment[af]=Plak gemerkte teks of huidige dokument na fpaste
# Comment[an]=Apegar o texto seleccionau u lo documento actual ta fpaste
# Comment[ar]=الصق النّص المحدد أو المستند الحالي إلى fpaste
# Comment[as]=নিৰ্বাচিত লিখনিক অথবা বৰ্তমান দস্তাবেজক fpaste ত পেইস্ট কৰক
# Comment[be]=Дазваляе ўставіць вылучаны тэкст або бягучы дакумент у fpaste
# Comment[bg]=Копиране на текущо избрания текст или целия документ и изпращане към „fpaste“
# Comment[bn_IN]=নির্বাচিত পাঠ্য বা বর্তমান নথি fpaste এ লেপন করুন
# Comment[bs]=Zalijepi označeni tekst ili tekući dokument u fpaste
# Comment[ca]=Enganxa el text seleccionat o el document actual a fpaste
# Comment[ca@valencia]=Enganxa el text seleccionat o el document actual a fpaste
# Comment[cs]=Vložit vybraný text nebo aktuální dokument do fpaste
# Comment[da]=Indsæt markerede tekst eller aktuelt dokument i fpaste
# Comment[de]=Den markierten Text oder das aktuelle Dokument in »fpaste« einfügen
# Comment[el]=Επικόλληση του επιλεγμένου κειμένου ή του τρέχοντος κειμένου στο fpaste
# Comment[en_GB]=Paste selected text or current document to fpaste
# Comment[eo]=Alglui elektitan tekston aŭ nunan dokumenton al fpaste
# Comment[es]=Pegar el texto seleccionado o el documento actual en fpaste
# Comment[eu]=Hautatutako testua edo uneko dokumentua 'fpaste' gunera bidaltzen du
# Comment[fa]=متن انتخاب شده یا سند فعلی را به fpaste میچسباند
# Comment[fi]=Liitä valittu teksti tai nykyinen asiakirja fpasteen
# Comment[fr]=Colle le texte sélectionné ou le document actuel dans fpaste
# Comment[fur]=Tache a fpaste il test selezionât o il document atuâl
# Comment[gd]=Cuir an teacsa a thagh thu no an sgrìobhainn làithreach ann am fpaste
# Comment[gl]=Pega o texto seleccionado ou o documento actual en fpaste
# Comment[gu]=પસંદ થયેલ લખાણને ચોંટાડો અથવા fpaste માટે તાજેતરનાં દસ્તાવેજ
# Comment[he]=הדבקת הטקסט הנבחר או המסמך הנוכחי ל־fpaste
# Comment[hi]=एफपेस्ट में चुने पाठ या मौजूदा दस्तावेज़ चिपकाएँ
# Comment[hr]=Zalijepi odabrani tekst ili trenutni dokument na fpaste
# Comment[hu]=A kijelölt szöveg vagy a jelenlegi dokumentum beillesztése az fpaste programba
# Comment[id]=Tempelkan teks yang dipilih atau dokumen saat ini ke fpaste
# Comment[is]=Límaa valinn texta eða allt skjalið í fpaste
# Comment[it]=Incolla il testo selezionato o il documento attuale su fpaste
# Comment[ja]=選択したテキストまたは現在のドキュメントを fpaste に貼り付けます
# Comment[kk]=Таңдалған мәтінді немесе ағымдағы құжатты fpaste қызметіне жариялау
# Comment[kn]=ಆಯ್ಕೆ ಮಾಡಲಾದ ಪಠ್ಯ ಅಥವ ಪ್ರಸಕ್ತ ದಸ್ತಾವೇಜನ್ನು fpaste ಗೆ ಅಂಟಿಸು
# Comment[ko]=선택한 텍스트나 현재 문서를 fpaste로 붙여 넣습니다
# Comment[ln]=Bamba nkoma éponomi to dokima ya sikawa épayi na fpaste
# Comment[lt]=Įdėti pažymėtą tekstą arba dabartinį dokumentą į fpaste
# Comment[lv]=Ielīmēt izvēlēto tekstu vai visu dokumentu uz fpaste
# Comment[ml]=തെരഞ്ഞെടുത്ത പദാവലിയോ ഇപ്പോഴത്തെ ഡോക്കുമെന്റോ fpaste ല്‍ ഒട്ടിക്കുക
# Comment[mr]=fpaste करिता नीवडलेले मजकूर किंवा आत्ताचे दस्तऐवज
# Comment[ms]=Tampal teks terpilih atau dokumen semasa ke fpaste
# Comment[nb]=Lim inn valgt tekst eller gjeldende dokument på fpaste
# Comment[nl]=Geselecteerde tekst of huidige document naar fpaste plakken
# Comment[oc]=Pega lo tèxte seleccionat o lo document actual dins fpaste
# Comment[or]=ବଚ୍ଛିତ ପାଠ୍ଯକୁ ଲଗାନ୍ତୁ କିମ୍ବା ପ୍ରଚଳିତ ଦଲିଲକୁ fpaste ପାଖକୁ ପଠାନ୍ତୁ
# Comment[pa]=ਚੁਣਿਆ ਟੈਕਸਟ ਜਾਂ ਮੌਜੂਦਾ ਦਸਤਾਵੇਜ਼ fpaste ਉੱਤੇ ਚੇਪੋ
# Comment[pl]=Wkleja zaznaczony tekst lub bieżący dokument do serwisu fpaste
# Comment[pt]=Colar o texto selecionado ou o documento atual em fpaste
# Comment[pt_BR]=Cola o texto selecionado ou o documento atual para fpaste
# Comment[ro]=Lipește textul selectat sau documentul actual la fpaste
# Comment[ru]=Вставить выделенный текст или текущий документ в fpaste
# Comment[sk]=Vloží aktuálny dokument alebo vybratý text do fpaste
# Comment[sl]=Prilepi izbrano besedilo ali dokument na ukaz fpaste
# Comment[sr]=Пребаците изабрани текст или текући документ у „fpaste“
# Comment[sr@latin]=Prebacite izabrani tekst ili tekući dokument u „fpaste“
# Comment[sv]=Klistra in markerad text eller aktuellt dokument till fpaste
# Comment[ta]=தேர்ந்தெடுத்த உரை அல்லது நடப்பு ஆவணத்தை fpaste க்கு ஒட்டு
# Comment[te]=ఎంపికచేసిన పాఠం లేదా ప్రస్తుత పత్రం fpaste కు అతికించండి
# Comment[th]=แปะข้อความที่เลือกหรือเอกสารปัจจุบันไปยัง fpaste
# Comment[tr]=Seçili metni ya da geçerli belgeyi fpaste’e yapıştır
# Comment[uk]=Вставити вибраний текст або поточний документ у fpaste
# Comment[vi]=Dán đoạn văn bản đa chọn hay tài liệu hiện tại vào fpaste
# Comment[zh_CN]=将选中文字或当前文档粘贴到 fpaste
# Comment[zh_HK]=將選取的文字或目前的文件貼到 fpaste
# Comment[zh_TW]=將選取的文字或目前的文件貼到 fpaste
# Comment=Paste selected text or current document to fpaste
# Input=selection-document
# Output=output-panel
# Shortcut=<Shift><Super>p
# Applicability=always
# Save-files=nothing
# Languages=
# 
# 

import os, urllib, json, sys, urllib.request
from gi.repository import Gtk, Gdk

text = sys.stdin.read()

lang = os.getenv('GEDIT_CURRENT_DOCUMENT_LANGUAGE')
if lang is None:
    lang = "text"

url_params = urllib.parse.urlencode({'paste_data': text, 'paste_lang': lang, 'mode':'json', 'api_submit':'true'})
openfpaste = urllib.request.urlopen("http://fpaste.org", bytes(url_params, 'utf-8')).read().decode("utf-8")
if openfpaste is None:
    print("Failed to send fpaste request.")

final_data = json.loads(openfpaste)

paste_url = "http://fpaste.org/" + final_data['result']['id']

disp = Gdk.Display.get_default()
clipboard = Gtk.Clipboard.get_for_display(disp, Gdk.SELECTION_CLIPBOARD)
clipboard.set_text(paste_url, len(paste_url))
clipboard.store()

print(paste_url + " has been copied to the clipboard.")
