انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: محمدامین در 17 تیر 1393، 01:09 بظ
-
سلام.
مطمئناٌ خیلی ها اینجا دست به کدشون عالیه و اسکریپت هایی نوشتن که بهدرد خیلیها میخوره.
هدف از ایجاد این تاپیک این بود که هرکسی که دلش خواست بیاد کد هایی رو که نوشته با مجوز GNU GPL اینجا منتشر کنه تا بقیه استفاده کنن.
از اسکریپت کم و زیاد کردن کلاک CPU گرفته تا یه بازی تحت GTK!
توجه: لطفا اگر میخوایید اسکریپت بذارید پست بفرستید و سؤال نپرسید تا تاپیک منسجم بمونه. ممنون.
اگر هم سؤالی به ذهنتون اومده، میتونید اون رو اینجا (http://forum.ubuntu.ir/index.php/topic,95427.0.html) مطرح کنید. (با تشکر از دوست خوبم 2020s1371 (http://forum.ubuntu.ir/index.php?action=profile;u=45387))
-
خوب اولین قدم رو خودم بر میدارم.
مجموع چند تا شِل اسکریپت رو لینک کردم. اینها برای دانلود شبانه هستند. یک فایل README فارسی داخلش گذاشتم که اگه طبق اون پیش برید میتونه:
۱- کامپیوتر رو سر ساعت روشن کنه
۲- لینکهایی رو که بهش میدید دانلود کنه
۳- سیستم رو خاموش کنه
که این آخریه در دوحالت ممکنه اتفاق بیوفته: یا دانلودها تموم بشن یا ساعت دانلود رایگان تموم بشه که در این صورت شب بعد دوباره سیستم روشن میشه و دانلودها رو ادامه میده.
واضحه که برای اونایی که اینترنت نامحدود دارند فقط یه تفریحه! ولی من با این هرشب حدود ۴-۶ گیگ دانلود میکنم.
لینک: https://drive.google.com/file/d/0B2_tmNlUxrT-aEs1eHRqV1lfemM/edit?usp=sharing (https://drive.google.com/file/d/0B2_tmNlUxrT-aEs1eHRqV1lfemM/edit?usp=sharing)
-
اینو همین چند روز پیش نوشتم. هر ۲۰ دقیقه یکبار پیام میده خستگیتو بگیر !
من معمولاً بعد از ۸-۹ ساعت مداوم ، در اواخر شب حالت تهوع و لرزش و سرد شدن بدن و ... بهِم دست میده !!
while sleep 20m;
do
xmessage 'rest now' -c;
done
-
اسم پکیج هایی رو که میخواید بهش میدید و اون لینکهای دانلود رو بهتون میده.
#!/bin/sh
apt-get --print-uris -y install $* | sed -e "s/' /\n/" -e "s/'//" | grep http
در ضمن sudo هم نمیخواد. بعد میشه پکیج ها رو با خیال راحت با dpkg نصب کرد. واسهی کار افلاین خیلی خوبه.
-
مثلا یه قسمت از اسم یه برنامه رو میدونید ولی نام کاملشو نمیدونید!
میتونید با با عبارات باقاعده توی کل برنامههای سیستم اونو سرچ کنید
#!/bin/bash
ls $(echo -e ${PATH//://"\n"})|grep -Ei $1
مثلا میدونم برنامه ای با fire شروع میشه ولی نمیدونم در ادامه چی داره!
مینوسیتم:
./search "^fire*"
فکر میکنم به برنامه داخل لینوکس یاشه که همچنی کاری میکنه ولی خب اینم لذت داره :D
-
چند وقت پیش میخواستم تعدادی فایل رو تبدیل کنم.ولی کی میخواست دستی بزنه این همه اسم رو؟:)(flv به mp4 با اندازه اختصاصی)
#!/bin/bash
ls>ls.txt
cat ls.txt | grep .flv>ls2.txt
rm ls.txt
echo "please enter the following value:"
wc -l ls2.txt
read a
while [ $a -gt 0 ] ; do
tmp=$(tail -n 1 ls2.txt)
arista-transcode -d new -p new $tmp -o $tmp."mp4"
sed -i '$d' ls2.txt
let a=a-1
done
rm ls2.txt
echo "Successfully done"
با یه کم دستکاری احتمالا بهتر میشه و میشه برای کار های دیگه هم ازش استفاده کرد.
-
این یک برنامهی ساده که اعدادی رو میابه که حاصل ضربشون برابر عددیه که بعنوان آرگومان اول بهش میدید.
چون یخورده طولانی بود ضمیمش کردم(برای اینکه بتونم آپلود کنم باید پسوندش رو عوض میکردم ;D)
./script 43952
خروجی:
2 times 21976
4 times 10988
8 times 5494
16 times 2747
41 times 1072
67 times 656
82 times 536
134 times 328
164 times 268
امیدوارم بشه بهینهسازیش کرد تا سریع شه.
-
GeoIP - پیدا کردن کشور آیپی مورد نظر - اطلاعات بیشتر (http://www.iranled.com/forum/thread-25271.html)
i=`echo $1|awk -F. '{print $1*(2**24)+$2*(2**16)+$3*(2**8)+$4*(2**0)}'`
cat GeoIPCountryWhois.csv |cut -d, -f3-6|sed 's/"//g' | awk -F, -v i=$i '($1<=i && $2 >= i ){print $4}'
باید فایل GeoIPCountryWhois هم کنار این برنامه قرار بدید
دانلود از اینجا (http://bayanbox.ir/id/1537021107779906372?info)
مثال:
./search 174.142.150.198
Canada
-
سوال: یه برنامها (اسکریپت)ی میخوام که محتوای تمام پروندهها را در این پوشه بگرده و هر عبارت به یکی از شکلهای 0abcdefg*** و +98abcdefg*** و 0098abcdefg*** هست پیدا کنه و به 0hijklmn*** تبدیل کنه. - لینک سوال (http://forum.ubuntu.ir/index.php/topic,95427.msg781612.html#msg781612)
جواب: - لینک جواب (http://forum.ubuntu.ir/index.php/topic,95427.msg781687.html#msg781687)
#!/bin/bash
#babyy
#iranled.com/forum
IFS="
"
DIR="/tmp/ss/f/"
files=($(grep -E "0abcdefg|\+98abcdefg|0098abcdefg" -l -r ${DIR}*))
for file in ${files[@]}
do
echo "IN '$file'"
sed -i \
-e 's/0abcdefg/0hijklmn/' \
-e 's/\+98abcdefg/0hijklmn/' \
-e 's/0098abcdefg/0hijklmn/' \
"$file"
done
-
یاد کد هایی رو که نوشته با مجوز GNU GPL اینجا منتشر کنه
این قسمتش باب میل خیلیا (من جمله خودم) نیست که زور کنید چه مجوزی داشته باشه! «مجوز آزاد» به تنهایی کافیه :)
-
این قسمتش باب میل خیلیا (من جمله خودم) نیست که زور کنید چه مجوزی داشته باشه! «مجوز آزاد» به تنهایی کافیه :)
مجوز آزاد معنی نداره، باید دقیقا بیان بشه چه مجوزی. برای مثال میشه گفت اونها رو به صورت Public Domain منتشر میکنیم که احتمالا برای چنین تاپیکی بهتر از GPL هستش.
-
این قسمتش باب میل خیلیا (من جمله خودم) نیست که زور کنید چه مجوزی داشته باشه! «مجوز آزاد» به تنهایی کافیه :)
مجوز آزاد معنی نداره، باید دقیقا بیان بشه چه مجوزی. برای مثال میشه گفت اونها رو به صورت Public Domain منتشر میکنیم که احتمالا برای چنین تاپیکی بهتر از GPL هستش.
دوست من، این همه مجوز آزاد داریم، دوستمون میتونست بگه «یکی از مجوزهای آزاد» به انتخاب خودتون :)
-
این قسمتش باب میل خیلیا (من جمله خودم) نیست که زور کنید چه مجوزی داشته باشه! «مجوز آزاد» به تنهایی کافیه :)
مجوز آزاد معنی نداره، باید دقیقا بیان بشه چه مجوزی. برای مثال میشه گفت اونها رو به صورت Public Domain منتشر میکنیم که احتمالا برای چنین تاپیکی بهتر از GPL هستش.
دوست من، این همه مجوز آزاد داریم، دوستمون میتونست بگه «یکی از مجوزهای آزاد» به انتخاب خودتون :)
خب شما برنامههاتون رو با مجوز دلخواهتون بزارید :D
چه بحثیه آخه این الکی شلوغ میشه تاپیک! :D
-----
کلا چهار خط اسکریپت داریم میذاریم دیگه! پروژه ناسا رو که نذاشتیم :D
-
این هم لینک github پروژه PersianDM که یه رابط گرافیکی ساده هست برای aria2 که با Bash نوشته شده
https://github.com/alireza-amirsamimi/persiandm
مجوز GPL
امیدوارم که به دوستان عزیز بتونه کمک کنه :)
-
ای آقا !!!
شما که به سوالات من جواب ندادین :|
:|
:|
این جا ۲ تا اسکریپت داریم :|
برای تعمیر زیرنویس فارسی!
هر دو هم با پایتون !!
اما .....
یکی از wxpython استفاده میکنه :|
یکی از PyQt4 :|
سوالاتم در مورد درگ فایل در اینجا پاسخ داده نشد برای همین نتونستم قابلیت درگ رو اضافه کنم :| :(
>:(
PyQt4 Version
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 19 14:23:23 2014
Project title : Persian Subtitle Fixer Powered By Python and PyQt4
Tested on : Gnu\\Linux Ubuntu 14.04 \ 13.04 \ 12.04 - Gnu\\Linux Debian 7.1
@author: Amir Bakhtiary
Contact Details :
Yahoo : Encoder301@Yahoo.com
Skype : Encoder3011
GMail : Infected.Operator@Gmail.com
"""
##########################################################################
###iconv -f WINDOWS-1256 -t UTF-8 subtitle.srt --output newsubtitle.srt### ###
##########################################################################
#Importing Modules
from PyQt4 import QtGui as gui#QtGui for Graphical User INterface
import sys
import shutil# file manageing
import os#run commands
#about msg
about_msg="""Gnu\\Linux Persian Subtitle Fixer
Powered By Python and PyQt4
Copyright (c) 2013-2014
Author :
Amir Bakhtiary as Core Developer
Contact Details :
Yahoo : Encoder301@Yahoo.com
Skype : Encoder3011
GMail : Infected.Operator@Gmail.com
"""
app=gui.QApplication(sys.argv)
core=gui.QIcon("/home/empty/Icons/fileico.ico")
opt_lst=[]
class Main(gui.QMainWindow):
def __init__(self):
super(Main,self).__init__()
self.setWindowTitle("Gnu\\Linux Subtitle Fixer")
self.setMaximumSize(350,290)
self.setMinimumSize(350,290)
self.resize(350,290)
self.statusBar()
self.center()
act1=gui.QAction(core,"Start",self)
act2=gui.QAction(core,"Exit",self)
act3=gui.QAction(core,"About",self)
act1.setStatusTip("Start Converting")
act1.setShortcut("Ctrl+S")
act1.triggered.connect(self.start)
act2.setStatusTip("Exit Application")
act2.setShortcut("Ctrl+Q")
act2.triggered.connect(sys.exit)
act3.setStatusTip("About me")
act3.triggered.connect(self.about)
menu=self.menuBar()
tools_menu=menu.addMenu("&Tools")
help_menu=menu.addMenu("&Help")
tools_menu.addAction(act1)
tools_menu.addAction(act2)
help_menu.addAction(act3)
box1=gui.QGroupBox(" Input File ",self)
box1.move(5,25)
box1.resize(340,100)
box2=gui.QGroupBox(" Output File ",self)
box2.move(5,175)
box2.resize(340,100)
rad1=gui.QRadioButton("Use The Same Folder For Output",self)
rad2=gui.QRadioButton("Use The Different Folder For Output",self)
rad1.move(5,130)
rad2.move(5,150)
rad1.resize(rad1.sizeHint())
rad2.resize(rad2.sizeHint())
rad1.clicked.connect(self.on_same)
rad2.clicked.connect(self.on_dif)
self.IN=gui.QLineEdit(self)
self.IN.move(10,65)
self.IN.resize(290,25)
self.IN.setReadOnly(True)
self.IN.setToolTip("Drag input srt file here \nor push browse button to \nchoose input file from filedialog")
self.IN.setDragEnabled(True)
self.IN.setAcceptDrops(True)
b_btn1=gui.QPushButton("...",self)
b_btn1.setGeometry(300,65,30,25)
b_btn1.setToolTip("Click to open file dialog")
b_btn1.clicked.connect(self.choose_dialog)
self.out=gui.QLineEdit(self)
self.out.move(10,210)
self.out.resize(290,25)
self.out.setReadOnly(True)
self.out.setToolTip( "Push browse button to \nchoose output file from filedialog")
self.b_btn2=gui.QPushButton("...",self)
self.b_btn2.setGeometry(300,210,30,25)
self.b_btn2.setToolTip("Click to open file dialog")
self.b_btn2.clicked.connect(self.save_dialog)
self.out.setDisabled(True)
self.b_btn2.setDisabled(True)
def choose_dialog(self,event):
Dialog_Frame=gui.QFileDialog.getOpenFileName(self,"Choose your input file","/home","SRT Subtitle Files (*.srt)")
self.IN.setText(Dialog_Frame)
def save_dialog(self,event):
Dialog_Frame=gui.QFileDialog.getSaveFileName(self,"Choose your input file","/home","SRT Subtitle Files (*.srt)")
self.out.setText(Dialog_Frame)
def start(self,event):
if len(opt_lst)==0:
gui.QMessageBox.warning(self,"Warning","Choose Option First\t")
else :
if opt_lst[0]=="same":
if self.IN.text=="":
gui.QMessageBox.warning(self,"Warning","No input file\t")
else:
os.system("iconv -f WINDOWS-1256 -t UTF-8 '"+str(self.IN.text())+"' --output '"+str(self.IN.text())[:-4]+"fixed.srt'")
gui.QMessageBox.question(self,"Completed","Completed\nEnjoy:))\t")
elif opt_lst[0]=="dif":
if self.IN.text=="":
gui.QMessageBox.warning(self,"Warning","No input file\t")
elif self.out.text()=="":
gui.QMessageBox.warning(self,"Warning","No output file\t")
else :
path=str(self.IN.text())[:-4]+"fixed.srt"
os.system("iconv -f WINDOWS-1256 -t UTF-8 '"+str(self.IN.text())+"' --output '"+path+"'")
shutil.move(path,self.out.text())
gui.QMessageBox.question(self,"Completed","Completed\nEnjoy:))\t")
def about(self,event):
gui.QMessageBox.about(self,"About",about_msg)
def center(self):
qr = self.frameGeometry()
cp = gui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def on_same(self,event):
del opt_lst[:]
opt_lst.append("same")
self.out.setDisabled(True)
self.b_btn2.setDisabled(True)
def on_dif(self,event):
del opt_lst[:]
opt_lst.append("dif")
self.out.setEnabled(True)
self.b_btn2.setEnabled(True)
MainWin=Main()
MainWin.show()
MainWin.setWindowIcon(core)
sys.exit(app.exec_())
wxPython Version
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created on Sat May 31 10:12:45 2014
Project title : Persian Subtitle Fixer Powered By Python and WxPython
Tested on : Gnu\\Linux Ubuntu 14.04 \ 13.04 \ 12.04 - Gnu\\Linux Debian 7.1
@author: Amir Bakhtiary
Contact Details :
Yahoo : Encoder301@Yahoo.com
Skype : Encoder3011
GMail : Infected.Operator@Gmail.com
"""
##########################################################################
###iconv -f WINDOWS-1256 -t UTF-8 subtitle.srt --output newsubtitle.srt###
###This program fix your subtitles for movies ###
#current version just support persian language ###
#this is free and open source ###
#----- ###
#i putted some comments in source ###
#Enjoy! ###
#contact me : encoder301 ###
##########################################################################
"""here i imported some modules wich i need
like wx
frame
and more"""
import wx
import os,sys,shutil
"""Make a app object for wx module"""
app=wx.App()
os.chdir("/home/empty/Icons")
icon=wx.Icon("fileico.ico",wx.BITMAP_TYPE_ICO)
os.chdir("/home/")
wildcard="SRT Subtitle Files|*.srt;"
class FileDrop(wx.FileDropTarget):
def __init__(self, window):
wx.FileDropTarget.__init__(self)
self.window = window
def OnDropFiles(self, x, y, filenames):
self.window.WriteText(filenames[0])
class Main(wx.Frame):
def __init__(self):
"""call wx.Frame __init__ special method"""
super(Main,self,).__init__(None,size=(320,260),style=wx.DEFAULT_FRAME_STYLE^wx.RESIZE_BORDER^wx.MAXIMIZE_BOX)
self.SetTitle("GNU\\Linux Subtitle Fixer")
self.list=[]
self.Center()
self.Show()
self.panel=wx.Panel(self)
self.SetIcon(icon)
menubar=wx.MenuBar()
menu1=wx.Menu()
menu2=wx.Menu()
me1=menu1.Append(wx.ID_SAVE,"Start","Start Converting")
me3=menu1.Append(wx.ID_EXIT,"Exit","Close The Program")
me2=menu2.Append(wx.ID_HELP,"About","A Little Passage About Programmer ")
self.CreateStatusBar()
menubar.Append(menu1,"&Tools")
menubar.Append(menu2,"&Help")
self.SetMenuBar(menubar)
self.Bind(wx.EVT_MENU,sys.exit,me3)
self.Bind(wx.EVT_MENU,self.About,me2)
self.Bind(wx.EVT_MENU,self.Start,me1)
self.Bind(wx.EVT_CLOSE , sys.exit)
self.txt1=wx.StaticBox(self.panel,pos=(5,5),label="Input File",size=(310,70))
self.txt2=wx.StaticBox(self.panel,pos=(5,130),label="Output File",size=(310,70))
self.IN=wx.TextCtrl(self.panel,size=(250,25),pos=(15,40),style=wx.TE_READONLY)
self.OUT=wx.TextCtrl(self.panel,size=(250,25),pos=(15,160),style=wx.TE_READONLY)
self.pbtn=wx.Button(self.panel,size=(30,25),pos=(270,40),label="...")
self.pbtn2=wx.Button(self.panel,size=(30,25),pos=(270,160),label="...")
self.btn1=wx.RadioButton(self.panel,pos=(15,80),label="Use The Same Folder For Output")
self.btn2=wx.RadioButton(self.panel,pos=(15,100),label="Use The Different Folder For Output")
self.btn1.SetValue(True)
self.OUT.Disable()
self.pbtn2.Disable()
self.btn1.Bind(wx.EVT_RADIOBUTTON,self.Same)
self.btn2.Bind(wx.EVT_RADIOBUTTON,self.dif)
self.pbtn.Bind(wx.EVT_BUTTON,self.opendialog1)
self.pbtn2.Bind(wx.EVT_BUTTON,self.opendialog2)
drag=FileDrop(self.IN)
self.IN.SetDropTarget(drag)
self.IN.SetFocus()
def About(self,event):
wx.MessageBox(about_msg="""Gnu\\Linux Persian Subtitle Fixer
Powered By Python and PyQt4
Copyright (c) 2013-2014
Author :
Amir Bakhtiary as Core Developer
Contact Details :
Yahoo : Encoder301@Yahoo.com
Skype : Encoder3011
GMail : Infected.Operator@Gmail.com
""","About",parent=self)
def Start(self,event):
if len(self.list)==0:
wx.MessageBox("Choose Option First\t\t","Warning",parent=self)
elif self.list[0]=="same":
if self.IN.GetValue()=="":
wx.MessageBox("No Input File\t\t","Alert",parent=self)
else:
os.system("iconv -f WINDOWS-1256 -t UTF-8 '"+str(self.IN.GetValue())+"' --output '"+str(self.IN.GetValue())[0:-4]+"-fixed.srt'")
elif self.list[0]=="dif":
if self.IN.GetValue()=="":
wx.MessageBox("No Input File\t\t","Alert",parent=self)
else:
if self.OUT.GetValue()=="":
wx.MessageBox("No Output File\t\t","Alert",parent=self)
else:
my_path=str(self.IN.GetValue())[0:-4]+"-fixed.srt"
os.system("iconv -f WINDOWS-1256 -t UTF-8 '"+str(self.IN.GetValue())+"' --output '"+my_path+"'")
shutil.move(my_path,str(self.OUT.GetValue()))
wx.MessageBox("Completed\nFixed subtitle saved in : \n\t"+my_path,"Completed",parent=self)
def dif(self,event):
self.OUT.Enable()
self.pbtn2.Enable()
self.txt2.SetLabel("Output File")
del self.list[:]
self.list.append("dif")
def Same(self,event):
self.OUT.Disable()
self.pbtn2.Disable()
self.txt2.SetLabel("Output File")
del self.list[:]
self.list.append("same")
def opendialog1(self,event):
dialog=wx.FileDialog(self,message="Select Your File",wildcard=wildcard,defaultDir=os.getcwd(),style=wx.FD_OPEN)
ans=dialog.ShowModal()
if ans==wx.ID_OK:
path=dialog.GetPath()
self.IN.SetValue(path)
def opendialog2(self,event):
dialog=wx.FileDialog(self,message="Select Your File",wildcard=wildcard,defaultDir=os.getcwd(),style=wx.FD_SAVE)
ans=dialog.ShowModal()
if ans==wx.ID_OK:
path=dialog.GetPath()
self.OUT.SetValue(path)
main=Main()
app.MainLoop()
-
دانلود مستقیم از Y*ube:
به جای host:port، آدرس پروکسی HTTP خودتون رو بذارید. فقط برای بدست آوردن لینک استفاده میشه. دانلود بصورت مستقیم از سرور گوگله \\:D/
#!/bin/sh
spacing='::::::::::::::::::::::::::::::::::::::::'
echo "$(youtube-dl --get-filename -o '%(title)s.%(ext)s' -g --proxy http://host:port $*)" > /tmp/video-dl
FileName="$(sed -n 2p /tmp/video-dl)"
Link="$(sed -n 1p /tmp/video-dl)"
echo "\n$spacing\n$FileName\n$spacing\nGiven Code: $*\n$spacing\n"
wget -c -O "$FileName" "$Link"
-
برنامهی پیدا کردن جملهی nام بسط ۲ جملهای:
#!/usr/bin/python
def GetSen(i, num):
n = i
k = num - 1
s = n - k
z = Combination(n, k)
if z == 1:
z = ''
out='{z}a^{s} * b^{k}'.format(z=z,n=n,s=s,k=k)
return out
def Factorial(number):
if number < 0:
raise ValueError('number must be higher than zero.')
elif number > 1:
return number * Factorial(number - 1)
else:
return 1
def Combination(n, k):
return Factorial(n) / (Factorial(k) * (Factorial(n - k)))
def GetFinnalSen(i):
finnal = ''
for num in range(1, i + 1):
finnal = finnal + GetSen(i, num) + ' + '
finnal = finnal + GetSen(i, i + 1)
return finnal
def OptSen(sen):
if sen.count('^0'):
s = sen.find('^0') - 1
d = sen[s:s+3]
sen = sen.replace(d, '')
if sen.count(' '):
sen = sen.replace(' ', ' ')
if sen.count('* +'):
s = sen.find('* +')
d = sen[s:s+3]
sen = sen.replace(d, ' + ')
if sen.count('+ *'):
s = sen.find('+ *')
d = sen[s:s+3]
sen = sen.replace(d, ' + ')
if sen.count('* *'):
s = sen.find('* *')
d = sen[s:s+3]
sen = sen.replace(d, ' * ')
if sen.count('^1'):
s = sen.find('^1')
d = sen[s:s+2]
sen = sen.replace(d, '')
return sen
def GetSentence(power):
power = int(power)
if power == 0:
return '1'
finnal = GetFinnalSen(power)
for x in range(0, finnal.count('') - 1):
finnal = OptSen(finnal)
return finnal
def InitSen(a, b, sen):
pass
if __name__ == '__main__':
import sys
try:
n = sys.argv[1]
except IndexError:
print 'Error: Give a Number!!!'
exit()
n = int(n)
print '(a + b)^' + str(n) + ' = ' + GetSentence(n)
طرز استفاده:./(File Name) (number)
(دادن توان بصورت آرگومان)
-
این موضوع به علّت مغایرت با قوانین انجمن قفل میشه. هر موضوع در انجمن باید شامل یک مطلب مجرّا باشه!