উবুন্টু সফটওয়্যার সেন্টারে ব্যক্তিগতকৃত ব্যানার প্রদর্শনগুলি দেখান


11

উবুন্টু সফটওয়্যার সেন্টারে আমি কীভাবে আমার নিজস্ব ব্যক্তিগতকৃত ব্যানার প্রদর্শন করতে পারি?

আমি কিছু URL টি সংজ্ঞা দেখা করেছি /usr/share/software-center/softwarecenter/enums.pyএবং /usr/share/software-center/softwarecenter/distro/Ubuntu.pyএখন পর্যন্ত।

আমি ভিউ থেকে কোর পর্যন্ত কোডটি ট্র্যাক করার চেষ্টা করেছি। তবে আমি হারিয়ে গেলাম। _append_banner_addsকল SoftwareCenterAgent। এটা কল SpawnHelper। তখন আমি হারিয়ে যাই। এখানে কিছু কল রয়েছে SimpleFileDownloaderতবে আমি সেগুলি ট্র্যাক করতে সক্ষম নই।

এছাড়াও, আমি ডিবাগ লগ এ এই এন্ট্রি লক্ষ্য করেছি।

2013-02-08 15:07:43,731 - softwarecenter.simplefiledownloader - DEBUG - download_file: http://software-center.ubuntu.com/site_media/exhibits/2012/12/SC_banner_Mixxx_2.png None True

এটি কীভাবে বাস্তবায়িত হয় সে সম্পর্কে ডকুমেন্টেশন রয়েছে? ডিফল্ট ব্যানারগুলি পরিবর্তন করতে এবং আমার নিজের ব্যানার পরিষ্কার উপায়ে রাখার কিছু সহজ রেসিপি খুব সহায়ক হবে।

আমি মনে করি আমি কেবল _append_banner_addsফাংশনটি নতুন করে লিখতে পারি, তবে পাইথনের বিষয়ে আমি খুব বেশি লাভজনক নই এবং আমি যদি সম্ভব হয় তবে উবুন্টু যে পদ্ধতিগুলি ব্যবহার করছে তা বুঝতে এবং ব্যবহার করতে চাই।

উত্তর:


6

/usr/share/software-center/softwarecenter/backend/scagent.pyএই ফাংশনের শুরুটি খুলুন এবং সম্পাদনা করুন, যাতে এটি বলে:

def query_exhibits(self):
    import urllib, json
    class Obj:
      def __init__(self, obj):
        self.obj = obj
      def __getattr__(self, name):
        if name[:2] == "__": return object.__getattr__(self, name)
        return self.obj[name]

    self.emit("exhibits", [Obj(x) for x in json.loads(urllib.urlopen("http://localhost:8800/cgi-bin/bannerlist.py").read())])
    return

বাকিটি যেমন হয় তেমন ছেড়ে দিতে পারেন, এটি কখনও পৌঁছাবে না।

আপনি যদি স্ক্রিপ্টিং সমর্থন চান <iframe>, সম্পাদনা করুন

/usr/share/software-center/softwarecenter/ui/gtk3/widgets/exhibits.py

এবং খুঁজে settings.set_property("enable-scripts", False)। পরিবর্তন Falseকরুন True

এখন এটি কার্যকর করুন /var/www/cgi-bin/bannerlist.pyএবং তৈরি করুন:

#!/usr/bin/env python
import json

print("Content-type: application/json\n")

print(json.dumps([
{
  "html": "<iframe src='file:/tmp/test.html'></iframe>",
  "title_translated": "Hey dawg",
  "click_url": "http://4chan.org",
  "package_names": ("gimp"),
  "banner_urls": ["file:/"],
  "published": True
},
{
  "html": "<iframe src='http://localhost:8800/cgi-bin/banner.py'></iframe>",
  "title_translated": "Hey dawg",
  "click_url": "http://4chan.org",
  "package_names": ("gimp"),
  "banner_urls": ["file:/"],
  "published": True
}
]))

এটি উত্পন্ন ব্যানার তালিকা প্রদর্শন করে।

এখন এটি কার্যকর করুন /var/www/cgi-bin/banner.pyএবং তৈরি করুন:

#!/usr/bin/env python3
import time
print("Content-type: image/svg+xml\n")
print("""
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <rect width="300" height="100"
  style="fill:rgba(0,0,255,0.5);stroke-width:1;stroke:rgba(0,0,0,0.5)"/>
  <text x="0" y="25" fill="black">Time is """ + str(time.time()) + """</text>
</svg> 
""")

এটি উত্পন্ন ব্যানার প্রদর্শন করে।

আপনাকে সফ্টওয়্যার-কেন্দ্রের ক্যাশে সাফ করার দরকার হতে পারে। আপনি এটি ব্যবহার করে করতে পারেন rm -rf ~/.cache/software-center

অবশ্যই /tmp/test.htmlপ্রথম ব্যানারটি কাজ করার জন্য আপনাকে কিছু লাগাতে হবে to

cgi-binএটি কাজ করার জন্য আপনার 8800 এ চলমান একটি ওয়েবসভারও দরকার । আপনার যদি এটি না থাকে তবে এটি ব্যাশে চালান:

cd /var/www
python -c "import BaseHTTPServer as h, CGIHTTPServer as c;
i = c.CGIHTTPRequestHandler;
i.cgi_directories = ['/cgi-bin'];
h.HTTPServer(('', 8800),i).serve_forever()"

iframeস্থানটি পূরণ করার জন্য আপনার স্টাইল করা দরকার তবে আপনি এটি আবিষ্কার করেছেন।


ধন্যবাদ! আমি কি স্ট্যান্ডার্ড ব্যানার রোটারটি আবার ব্যবহার করতে পারি না? আমি একাধিক ক্লাস ঘোষণা করার চেষ্টা করেছি এবং এটি বেশ ভাল কাজ করেছে worked আমি যদি ইফ্রেমে কিছু স্টাইলিংয়ের সমস্যা নিয়ে আসছি তবে আমার তা সমাধান করতে সক্ষম হওয়া উচিত। এখন আমি ওয়েব সার্ভার থেকে ব্যানার প্রদর্শনগুলি সংগ্রহ করতে চাই, তাই আমার সম্ভবত জেএসএন ব্যবহার করা উচিত। দয়া করে লক্ষ্য করুন যে অনুগ্রহটি এতে অন্তর্ভুক্ত রয়েছে, আমার নিজের সার্ভার থেকে ব্যানার সংগ্রহ করছে। আপনি যদি এই তথ্য অন্তর্ভুক্ত করেন, আমি আপনাকে অনুগ্রহ প্রদান করতে সক্ষম হব :)
জর্জি সুরেজ ডি লিস

@ জর্জেসুরজেডিলিস: সম্পন্ন হয়েছে
জানুস

ঠিক আছে, এটি কাজ করছে না। অ্যাপ্লিকেশনটিতে আমি এর মতো একটি ত্রুটি দেখতে পাচ্ছি: Unable to load page - Problem occurred while loading the URL http:localhost:8800cgi-binbanner.py(স্থানীয় সংস্করণের জন্য একই /tmp)। পুরানো সংস্করণটি কাজ করেছে, তবে এখন মনে হচ্ছে কোথাও ইউআরএলগুলি কেটে যায়। প্রদর্শনগুলি ঠিকঠাকভাবে সংগ্রহ করা হয়েছে, এবং আমি কনসোলটিতে এইচটিএমএল বিষয়বস্তু মুদ্রণ করতে পারি এবং স্ল্যাশগুলি রয়েছে, তবে অ্যাপ্লিকেশনটিতে তারা অনুপস্থিত! কি হতে পারে?
জর্জে সুরেজ ডি লিস

আচ্ছা, আপনি কি নিশ্চিত যে ইউআরএল অ্যাক্সেসযোগ্য? curlকনসোল ব্যবহার করে এটি লোড করার চেষ্টা করুন । আমি মনে করি এটি কেবল ত্রুটি বার্তায় স্ল্যাশগুলি সরিয়ে দেয়।
জানুস ট্রয়লসন

আমি তাই মনে করি না. আমি একটি স্ক্রিনশট নিয়েছি । প্রথম দুটি পিটিশন ফায়ারফক্সের। সফ্টওয়্যার কেন্দ্র থেকে কেবল ব্যানারলিস্ট সংগ্রহ করা হয়েছে বলে মনে হয়।
হোর্হে সুরেজ ডি লিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.